为什么自动运行服务无法在断电时执行?

时间:2016-03-31 12:30:17

标签: bash systemd

cat /lib/systemd/system/test_shutdown.service       
[Unit]        
Description=hello world        
Before=poweroff.target shutdown.target reboot.target   
[Service]        
Type=oneshot        
ExecStart=/bin/bash   /home/test_shutdown.sh         
[Install]        
WantedBy=poweroff.target  shutdown.target reboot.target      

cat  /home/test_shutdown.sh   
echo "haha" > /home/test_sys/shutdown.txt        

ls  -al  /home/test_shutdown.sh        
-rwxrwxrwx 1 root root 42 Mar 31 19:08 /home/test_shutdown.sh        

ls  -al  /home/test_sys        
drwxrwxrwx  2 root root 4096 Mar 31 19:12         
drwxr-xr-x 14 root root 4096 Mar 31 19:08 

systemctl  enable  test_shutdown.service    
重启后没有/home/test_sys/shutdown.txt,为什么我的服务无法执行?

我已经重写了/lib/systemd/system/test_shutdown.service,如下所示。

[Unit]    
Description=hello world   
DefaultDependencies=no   
Before=reboot.target poweroff.target shutdown.target    
[Service]    
ExecStart=echo "haha" >  /home/test_sys/test.txt   
Type=oneshot   
[Install]     
WantedBy=reboot.target  poweroff.target shutdown.target    

systemctl status test_shutdown.service
test_shutdown.service - hello world
Loaded: error (Reason: Invalid argument)
Active: inactive (dead)

3 个答案:

答案 0 :(得分:1)

在您的第二个服务文件中,它应该是

ExecStart=/bin/echo "haha" > /home/test_sys/test.txt

systemd需要绝对路径。

您尚未提供第一个代码systemctl status。它可能是写权限问题,也可能是您的shell解释器不是/bin/bash。可以在shell脚本中更好地使用shebang #!/bin/sh

答案 1 :(得分:0)

10:30:00 AKDT

答案 2 :(得分:0)

journalctl | grep test_shutdown.service
4月01日15:05:54 hwy systemd [1]:配置文件/lib/systemd/system/test_shutdown.service被标记为可执行文件。请删除可执行权限位。无论如何都要继续。

chmod 644 /lib/systemd/system/test_shutdown.service