I usually use rdiff-backup to backup several of my systems. One is a workstation which goes to sleep after some time of idling around. Now having a user logged in running rdiff-backup (or rsync, rsnapshot etc for that matter) won't prevent the system from being put to sleep. Naturally this happens before the backup is complete. So some time ago I was looking for a resolution and recieved a suggestion to use a script in /etc/pm/sleep.d/. I had to modify the script a bit, because the query result always was true. So this is my solution in /etc/pm/sleep.d/01_prevent_sleep_on_backup now:
#!/bin/sh . "${PM_FUNCTIONS}" command_exists rdiff-backup || exit $NA case "$1" in hibernate|suspend) if ps cax | grep -q rdiff-backup then exit 1 fi ;; esac exit 0
Currently testing ...
Update
The above works with pm-utils; but it fails with systemd. Seems I have to move and modify the script for my system.
Update 2
It doesn't work. In short: exit 1
doesn't prevent systemd from going to suspend. I can see, that the script itself leads to the results I want, so the logic is correct. But I cannot find a way to tell systemd, to stop suspend. Shouldn't it be doing this automtically in a case, where a remote user is logged in and runs a command?
Update 3
There is also a related bug report.