systemd-inhibit für bestimmte Prozesse permanent?
systemd-inhibit für bestimmte Prozesse permanent?
systemd-inhibit verhindert Ruhezustand, Stand-By und Herunterfahren solange der nachgestellte Prozess noch läuft. Wie kann man aber das System generell dazu bringen, bestimmte Prozesse nicht mittels Suspend etc. abzubrechen? Konkret: bei mir ist voreingestellt, dass der PC nach einer gewissen Zeit der Untätigkeit schlafen geht. Manchmal vergesse ich jedoch bei länger laufenden Prozessen, Hibernate zu deaktivieren, wodurch dann diese Prozesse abgebrochen werden. Kann man also mittels einer Art systemd-inhibit-Eintrag in irgendeiner Konfigurationsdatei sicherstellen, dass rsync, clamscan, et al., ihre Arbeit zu Ende machen können? Wenn ich mich nicht täusche, hat etwa der VCL-Player Priorität, da das System selbst bei längeren Videos nicht einschläft.
Re: systemd-inhibit für bestimmte Prozesse permanent?
Mehr als 100 Zugriffe und keine einzige Antwort -- soll ich die Frage anders formulieren weil unverständlich?
Re: systemd-inhibit für bestimmte Prozesse permanent?
Nein nein, die Frage ist klar
Nein, einen (Konfigurations-) Weg, wie du ihn beschreibst und suchst, gibt es leider nicht. Medienspieler wie VLC oder z.B. Bibliotheken wie GTK haben meist ihre eigene, interne Implementierung, um das Einschlafen des Rechners zu verhindern. Das ist dann ein kleines Durcheinander, je nach (Desktop-) Umgebung gibt es eine Handvoll verschiedener Methoden für das Verhindern. Im VLC-Code: vier und noch eine Methode, versionsabhängig für GNOME, KDE, Xfce oder auch allgemeiner.
Für Konsolenprogramme könntest du dir in deiner Shell einen Alias anlegen, um das Einschlafen immer zu verhindern, wenn die grad laufen, z.B.:
Habe ich jetzt nicht ausprobiert, aber das dürfte funktionieren (ohne dass sich Polkit o.ä. beschweren).
Nein, einen (Konfigurations-) Weg, wie du ihn beschreibst und suchst, gibt es leider nicht. Medienspieler wie VLC oder z.B. Bibliotheken wie GTK haben meist ihre eigene, interne Implementierung, um das Einschlafen des Rechners zu verhindern. Das ist dann ein kleines Durcheinander, je nach (Desktop-) Umgebung gibt es eine Handvoll verschiedener Methoden für das Verhindern. Im VLC-Code: vier und noch eine Methode, versionsabhängig für GNOME, KDE, Xfce oder auch allgemeiner.
Für Konsolenprogramme könntest du dir in deiner Shell einen Alias anlegen, um das Einschlafen immer zu verhindern, wenn die grad laufen, z.B.:
Code: Alles auswählen
alias rsync='systemd-inhibit rsync'
Manchmal bekannt als Just (another) Terminal Hacker.
Re: systemd-inhibit für bestimmte Prozesse permanent?
AhaJTH hat geschrieben:22.03.2024 07:45:30Medienspieler wie VLC oder z.B. Bibliotheken wie GTK haben meist ihre eigene, interne Implementierung, um das Einschlafen des Rechners zu verhindern.
Verstehe ich das richtig, dass der verlinkte Code Teil vom VCL-Player ist?
Das ist zwar nicht ganz so elegant wie erhofft, aber so simpel, dass auch ich hätte draufkommen können! Okay, werde das mal so machen!Für Konsolenprogramme könntest du dir in deiner Shell einen Alias anlegen, um das Einschlafen immer zu verhindern, wenn die grad laufen
Re: systemd-inhibit für bestimmte Prozesse permanent?
Ja, genau, das ist direkt im VLC eingebaut. Wie auch andere Programme, die diese Schlafen-verhindern-Funktionalität haben, greift VLC da auf verschiedene Schnittstellen von Desktops und co. zu, um das zu erreichen.kalamazoo hat geschrieben:22.03.2024 08:49:12Verstehe ich das richtig, dass der verlinkte Code Teil vom VCL-Player ist?
systemd-inhibit ist letztendlich nur ein recht kleines Werkzeug, das ausschließlich auf die eine systemd-Schnittstelle zum Verhindern zugreift.
Manchmal bekannt als Just (another) Terminal Hacker.
Re: systemd-inhibit für bestimmte Prozesse permanent?
JTH hat geschrieben:22.03.2024 14:05:47systemd-inhibit ist letztendlich nur ein recht kleines Werkzeug, das ausschließlich auf die eine systemd-Schnittstelle zum Verhindern zugreift.
Versuche gerade systemd-inhibit mit einem nachfolgenden Alias laufen zu lassen und bekomme folgende Fehlermeldung:
Code: Alles auswählen
$ systemd-inhibit mein_alias
Failed to execute : No such file or directory
mein_alias failed with exit status 1.
Ergänzung:
systemd-inhibit IM alias funktioniert (also alias alias_neu='systemd-inhibit mein_alias')
Re: systemd-inhibit für bestimmte Prozesse permanent?
Aliase werden im Normalfall nur auf das Kommando, also das erste Wort in der Kommandozeile angewendet:kalamazoo hat geschrieben:24.03.2024 02:14:04Versuche gerade systemd-inhibit mit einem nachfolgenden Alias laufen zu lassen und bekomme folgende Fehlermeldung:Was übersehe ich da?Code: Alles auswählen
$ systemd-inhibit mein_alias Failed to execute : No such file or directory mein_alias failed with exit status 1.
Das heißt, hier wird nur geguckt, ob systemd-inhibit ein Alias ist. Die Argumente danach werden ohne weitergegeben. mein_alias würde damit als Programm in /bin oder /usr/bin erwartet – was es natürlich nicht gibt.man bash hat geschrieben: ALIASES
Aliases allow a string to be substituted for a word when it is used as the first word of a simple command.
Man kann einen Alias allerdings auch so definieren, dass das auf den Alias folgende Wort ein Alias sein kann (aber auch nur das folgende Wort, nicht alle folgenden Worte!). Dazu muss man in der Aliasdefinition ein Leerzeichen am Ende einfügen. Hier hieße das, dass du einen gleichnamigen Alias für systemd-inhibit festlegen müsstest:
Code: Alles auswählen
alias systemd-inhibit='systemd-inhibit '
alias mein_alias='echo "Ich bin mein_alias.'
Code: Alles auswählen
$ systemd-inhibit mein_alias
Super flexibel ist das aber nicht.
Code: Alles auswählen
systemd-inhibit --who=mein_alias mein_alias
Manchmal bekannt als Just (another) Terminal Hacker.
Re: systemd-inhibit für bestimmte Prozesse permanent?
Ah, das hatte ich nicht gefunden! Das heisst, ein Alias ist keine Variable, die an jeder Position den ihr zugewiesenen Wert hat {wahrscheinlich ist das sehr untechnisch ausgedrückt, aber ich hoffe, Du weisst, was ich meine}.JTH hat geschrieben:24.03.2024 16:13:10Aliase werden im Normalfall nur auf das Kommando, also das erste Wort in der Kommandozeile angewendet:man bash hat geschrieben: ALIASES
Aliases allow a string to be substituted for a word when it is used as the first word of a simple command.
Hmm, das scheint mir irgendwie halb bewusst gewesen zu sein, da ich vor einiger Zeit für sudo ein alias sudo='sudo ' festgelegt hatte, mit dem sudo mein_alias auch funktionierte (obwohl ich sudo kaum verwende) -- aber so ganz rationalisiert hatte ich das dann offenbar doch nicht …Man kann einen Alias allerdings auch so definieren, dass das auf den Alias folgende Wort ein Alias sein kann (aber auch nur das folgende Wort, nicht alle folgenden Worte!). Dazu muss man in der Aliasdefinition ein Leerzeichen am Ende einfügen.
Re: systemd-inhibit für bestimmte Prozesse permanent?
Ja, genau, die verhalten sich nicht so wie Variablen, deren Wert an beliebiger Position in der Kommandozeile eingesetzt wird. Das würde womöglich zu einem ziemlichen Chaos führen, wenn man viele Aliase definiert hatkalamazoo hat geschrieben:24.03.2024 16:56:45Ah, das hatte ich nicht gefunden! Das heisst, ein Alias ist keine Variable, die an jeder Position den ihr zugewiesenen Wert hat {wahrscheinlich ist das sehr untechnisch ausgedrückt, aber ich hoffe, Du weisst, was ich meine}.
Manchmal bekannt als Just (another) Terminal Hacker.