systemd-inhibit für bestimmte Prozesse permanent?

Warum Debian und/oder eine seiner Spielarten? Was muss ich vorher wissen? Wo geht es nach der Installation weiter?
Antworten
kalamazoo
Beiträge: 288
Registriert: 28.08.2017 11:31:49

systemd-inhibit für bestimmte Prozesse permanent?

Beitrag von kalamazoo » 18.03.2024 23:24:43

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.

kalamazoo
Beiträge: 288
Registriert: 28.08.2017 11:31:49

Re: systemd-inhibit für bestimmte Prozesse permanent?

Beitrag von kalamazoo » 22.03.2024 06:56:35

Mehr als 100 Zugriffe und keine einzige Antwort -- soll ich die Frage anders formulieren weil unverständlich? :(

JTH
Moderator
Beiträge: 3023
Registriert: 13.08.2008 17:01:41
Wohnort: Berlin

Re: systemd-inhibit für bestimmte Prozesse permanent?

Beitrag von JTH » 22.03.2024 07:45:30

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.:

Code: Alles auswählen

alias rsync='systemd-inhibit rsync'
Habe ich jetzt nicht ausprobiert, aber das dürfte funktionieren (ohne dass sich Polkit o.ä. beschweren).
Manchmal bekannt als Just (another) Terminal Hacker.

kalamazoo
Beiträge: 288
Registriert: 28.08.2017 11:31:49

Re: systemd-inhibit für bestimmte Prozesse permanent?

Beitrag von kalamazoo » 22.03.2024 08:49:12

JTH hat geschrieben: ↑ zum Beitrag ↑
22.03.2024 07:45:30
Medienspieler wie VLC oder z.B. Bibliotheken wie GTK haben meist ihre eigene, interne Implementierung, um das Einschlafen des Rechners zu verhindern.
Aha :THX:
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.
Verstehe ich das richtig, dass der verlinkte Code Teil vom VCL-Player ist?
Für Konsolenprogramme könntest du dir in deiner Shell einen Alias anlegen, um das Einschlafen immer zu verhindern, wenn die grad laufen
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!

JTH
Moderator
Beiträge: 3023
Registriert: 13.08.2008 17:01:41
Wohnort: Berlin

Re: systemd-inhibit für bestimmte Prozesse permanent?

Beitrag von JTH » 22.03.2024 14:05:47

kalamazoo hat geschrieben: ↑ zum Beitrag ↑
22.03.2024 08:49:12
Verstehe ich das richtig, dass der verlinkte Code Teil vom VCL-Player ist?
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.

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.

kalamazoo
Beiträge: 288
Registriert: 28.08.2017 11:31:49

Re: systemd-inhibit für bestimmte Prozesse permanent?

Beitrag von kalamazoo » 24.03.2024 02:14:04

JTH hat geschrieben: ↑ zum Beitrag ↑
22.03.2024 14:05:47
systemd-inhibit ist letztendlich nur ein recht kleines Werkzeug, das ausschließlich auf die eine systemd-Schnittstelle zum Verhindern zugreift.
:THX:

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.
Was übersehe ich da?

Ergänzung:
systemd-inhibit IM alias funktioniert (also alias alias_neu='systemd-inhibit mein_alias')

JTH
Moderator
Beiträge: 3023
Registriert: 13.08.2008 17:01:41
Wohnort: Berlin

Re: systemd-inhibit für bestimmte Prozesse permanent?

Beitrag von JTH » 24.03.2024 16:13:10

kalamazoo hat geschrieben: ↑ zum Beitrag ↑
24.03.2024 02:14:04
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.
Was übersehe ich da?
Aliase 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.
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 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.'
Damit funktioniert dann

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
zum Beispiel geht schon wieder nicht wie erhofft, da nur geguckt wird, ob --who=mein_alias ein Alias ist – das zweite Wort eben.
Manchmal bekannt als Just (another) Terminal Hacker.

kalamazoo
Beiträge: 288
Registriert: 28.08.2017 11:31:49

Re: systemd-inhibit für bestimmte Prozesse permanent?

Beitrag von kalamazoo » 24.03.2024 16:56:45

JTH hat geschrieben: ↑ zum Beitrag ↑
24.03.2024 16:13:10
Aliase 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.
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}.
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.
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 …

JTH
Moderator
Beiträge: 3023
Registriert: 13.08.2008 17:01:41
Wohnort: Berlin

Re: systemd-inhibit für bestimmte Prozesse permanent?

Beitrag von JTH » 24.03.2024 19:22:14

kalamazoo hat geschrieben: ↑ zum Beitrag ↑
24.03.2024 16:56:45
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}.
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 hat ;)
Manchmal bekannt als Just (another) Terminal Hacker.

Antworten