系统服务执行的脚本不删除服务文件

Script executed by a systemd service not deleting the service file

我正在尝试创建一个 systemd 服务,该服务在重新启动时执行 shell 脚本,该脚本将删除一些文件,删除服务,然后删除自身。但是当我启用该服务时,它 运行 是脚本,文件被删除,但删除服务失败。我的脚本是:

rm /var/local/myvars/file
systemctl stop myservice.service
systemctl disable myservice.service
rm /etc/systemd/system/myservice.service
systemctl daemon-reload
systemctl reset-failed
rm /var/tmp/myscript

myservice.service 是:

[Unit]
Description = Run script on Reboot
Before = 
[Service]
Type=oneshot
ExecStart=/var/tmp/myscript
RemainAfterExit=no
[Install]
WantedBy=multi-user.target

我做错了什么?我想要做的是在重启后删除某些文件,因此我想要一种方法 运行 一些脚本在重启后只执行一次。这是正确的方法还是有其他更好的方法?

我建议您不要将其作为服务。相反,您可以创建一个 cron 作业以在每次重新启动时执行脚本。

你可以做到

sudo crontab -e #to open it as root

然后在下面添加一行:

@reboot /bin/bash /path_to_your_script.

然后保存并关闭文件并输入

systemctl restart cron

以下服务和脚本对我有用。 服务:

[Unit]
Description = Run script on Reboot
Before = 
[Service]
Type=simple
ExecStart=/var/tmp/myscript
[Install]
WantedBy=multi-user.target

脚本:

rm -rf files
systemctl disable myservice.service
rm -f /etc/systemd/system/myservice.service
rm -f /var/tmp/myscript