[systemd-devel] Calling shutdown while executing a service

Lennart Poettering lennart at poettering.net
Tue Jun 9 16:09:13 PDT 2015


On Tue, 02.06.15 16:19, Christoph Pleger (Christoph.Pleger at cs.tu-dortmund.de) wrote:

> Hello,
> 
> I created a new target, defined by this target file:
> 
> [Unit]
> Description=LOCAL
> Requires=multi-user.target
> After=multi-user.target
> Conflicts=rescue.target
> AllowIsolate=yes
> 
> The new target only depends on one new service. The service is defined by:
> 
> [Unit]
> Description=LOCAL
> Requires=multi-user.target
> Before=getty at tty1.service local.target
> After=multi-user.target
> 
> [Service]
> Type=oneshot
> ExecStart=/usr/local/sbin/local
> StandardOutput=tty
> TTYPath=/dev/tty1
> 
> 
> /usr/local/sbin/local is a bash script which calls several functions. When
> one of these functions fails, i.e. returns another value than zero, the
> script calls this function:
> 
> die() {
>   STRING=$1
>   echo >&2 "Error occured in function ${STRING}"
>   echo "Press any key to reboot (sorry for your inconvenience)"
>   read -n 1
>   shutdown -r now
> }
> 
> Now I have the case that one of the functions fails. But after pressing a
> key, the computer does not reboot immediately, but schedules the reboot
> for approximately two minutes in the future and then continues to execute
> functions, till the two minutes are over.

Most likely systemd is waiting for your service (or some other
service) to finish before it proceeds with shutting down. 

Consider issuing "systemd-analyze set-log-level debug" before you try
this. This turns on debug output which might tell you what precisely
systemd is waiting for.

Lennart

-- 
Lennart Poettering, Red Hat


More information about the systemd-devel mailing list