Bug#744753: anacron: Anacron not triggered when system resumes under systemd

Michael Biebl biebl at debian.org
Tue Jun 3 04:43:39 BST 2014


On Mon, Apr 14, 2014 at 11:42:52AM +0000, Sam Morris wrote:
> Package: anacron
> Version: 2.3-19
> Severity: normal
> Tags: patch
> 
> Anacron currently ships a pm-utils hook script that starts the service
> when the system is resumed. pm-utils hooks are not executed when the
> system resumes, having been suspended by systemd.
> 
> Systemd provides a directory, /usr/lib/systemd/system-sleep that seems
> to be the closest equivalent to the pm-utils hook directory. A script
> such as the following can be dropped in there (untested!):
> 
> 	#!/bin/bash
> 	case "$1" in
> 	post)
> 		systemctl --fail --no-block start anacron.service
> 		;;
> 	suspend|hibernate|hybrid-sleep)
> 		systemctl --fail --no-block stop anacron.service
> 		;;
> 	esac
> 
> Note that the systemd-sleep(8) man page says that this directory is a
> hack for local use only. A better way would be to add this to
> anacron.service:
> 
> 	[Unit]
> 	Conflicts=sleep.target
> 	Before=sleep.target
> 
> Which will stop anacron when the system is suspended/hibernated; and to
> create a new unit, anacron-resume.service:
> 
> 	[Unit]
> 	After=systemd-suspend.service systemd-hibernate.service systemd-hybrid-sleep.service
> 	[Service]
> 	ExecStart=/bin/systemctl --no-block --fail start anacron.service
> 	[Install]
> 	WantedBy=sleep.target
> 
> Which will start anacron when the system comes back.

I'm not convinced that the second solution is better.
Actually, I think the first proposal is probably the slightly less ugly
one.

I would simplify the first solution a bit though, and simply run a
try-restart on post, i.e. something like this

#!/bin/bash
[ "$1" = "post" ] && systemctl try-restart anacron.service


Lennart, do you have better solution for such services which need to be
restarted on suspend/resume?

Cheers,
Michael



More information about the Pkg-systemd-maintainers mailing list