[systemd-devel] how to run a script which takes about 30 seconds before shutdown

zerons sironhide0null at gmail.com
Wed Nov 9 13:11:24 UTC 2016


Hi everyone.

Everyday, I need to do something like `git pull` after system
bootup and `git push` before shutdown. I am using Ubuntu 16.04.
I have tried to put some script into /etc/rc0.d/, /etc/rc6.d/,
each time the script runs, the network has been stopped, so I 
turn to systemd.


=== Here is a test .service file.
[Unit]
Description=test systemd
Conflicts=reboot.target
After=network-online.target
Wants=network-online.target

[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=-/home/zerons/.bin/test.sh
ExecStop=/home/zerons/.bin/test1.sh

[Install]
WantedBy=multi-user.target


=== and test.sh script, please ignore the destination
#!/bin/bash

echo "bootup" >> /home/zerons/.bin/test
timeout 9 ping -c 1 www.baidu.com >/dev/null 2>&1
while [ $? -ne 0 ]
do
	sleep 1
	timeout 9 ping -c 1 www.baidu.com >/dev/null 2>&1
done

ping -c 4 www.baidu.com >> /home/zerons/.bin/test 2>&1


=== test1.sh
#!/bin/bash

echo "before shutdown"`date +%T` >> /home/zerons/.bin/test
ping -c 8 www.baidu.com >>/home/zerons/.bin/test 2>&1



=== the result, on my laptop
before shutdown20:04:35
PING www.a.shifen.com (61.135.169.125) 56(84) bytes of data.
64 bytes from 61.135.169.125: icmp_seq=1 ttl=56 time=9.57 ms
ping: sendmsg: Network is unreachable
...
ping: sendmsg: Network is unreachable

--- www.a.shifen.com ping statistics ---
8 packets transmitted, 1 received, 87% packet loss, time 7048ms
rtt min/avg/max/mdev = 9.579/9.579/9.579/0.000 ms



=== some other infomation
I reboot several times, but the `test1.sh` always got 87% packet
loss,,,

When I take these steps in a Ubuntu16.04 virtual machine, it works
fine, the `test1.sh` gets 0% packet loss before shutdown. I also
test on a laptop with SSD, `test1.sh` gets 87% packet loss.

How could I make this work? Is there a way, when `test1.sh` runs,
all the other services could not be stopped until `test1.sh` returns?



More information about the systemd-devel mailing list