Am Sonntag, den 29.03.2015, 22:47 +0200 schrieb Heiko Schlittermann:
Daniel Leidert daniel.leidert.spam@gmx.net (So 29 Mär 2015 13:17:03 CEST): …
Nach langem komme ich nun dazu, das mal zu probieren. Dabei bin ich darauf gekommen, dass der Ausdruck immer wahr ist und das Skript daher immer den Exit-Code 1 produziert und Suspend quasi immer ausgeschaltet ist. Das Kommando:
ps -ef | grep -q "[rs]ync --server"
Du willst wahrscheinlich
ps -ef | grep -q '[f]oo'
machen, damit das Grep sich nicht selbst findet (Nur ein Zeichen in eckigen Klammern!)
Hm, ja. Mir war nicht klar, dass die eckigen Klammern dafür da sein sollen. Auch pgrep wurde mir mittlerweile schon vorgeschlagen [1]. Mit den pm-utils klappt das Skript dann auch super.
ABER: Allerdings nutze ich Debian Sid und (a) systemd nutzt die pm-utils nicht, (b) das selbe (angepasste) Skript unter /lib/systemd/system-sleep/ funktioniert nicht, weil der Exit-Code nicht abgefangen wird (Logik funktioniert) und (c) eine .service-Datei wie hier [2] funktioniert auch nicht. Damit stehe ich weiterhin am Anfang.
Momentan bleibt damit nur noch systemd-inhibit, dass dann IMO so aufgerufen werden müsste:
rdiff-backup [..] --remote-schema 'ssh -C %s \ /usr/bin/sudo /bin/systemd-inhibit [..] \ /usr/bin/sudo /usr/bin/rdiff-backup --server [..]' [..]
und das gefällt mir ganz und gar nicht, schon wegen der beiden sudo Kommandos und weil ich dann den command-String in .ssh/authorized_keys nicht mehr nutzen kann. Lieber wäre mir, wenn ich systemd ganz simpel mitteilen könnte, suspend/hibernate/sleep zu unterlassen, wenn dieser spezielle Nutzer eingeloggt ist oder wenn rdiff-backup läuft.
Ich habe gestern mehrere Stunden mit Suche und Debugging zugebracht und es ärgert mich, dass mir das so schwer gemacht wird. Mein Wunsch ist doch kein Einzelfall [3]?!
[1] http://www.wgdd.de/2015/03/prevent-suspendhibernate-if-system-is.html [2] https://bbs.archlinux.org/viewtopic.php?id=176876 [3] https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=771641
VG Daniel