如果我重新启动或关闭我的 Ubuntu 18.04.4,我想删除一个锁文件。
我使用以下代码创建了“usr/local/sbin/delete_lock.sh”
#!/bin/bash
lock="/home/sebastien/rsync.lock"
if [ -f "$lock" ];
rm $lock;
fi
然后是另一个“/etc/systemd/system/run_on_shutdown.service”:
[Unit]
Description=Delete lock file at shutdown - /etc/systemd/system/run_on_shutdown.service
DefaultDependencies=no
Before=shutdown.target halt.target
# If your script requires any mounted directories, add them below:
RequiresMountsFor=/home
[Service]
Type=oneshot
ExecStart=/usr/local/sbin/delete_lock.sh
[Install]
WantedBy=halt.target shutdown.target
然后我启动
sudo systemctl enable run_on_shutdown.service
并重新启动
知道为什么 rsync.lock 文件没有被删除吗?非常感谢
答案1
这根据对于if
bash 中的构造来说:
if [expression];
then
code if 'expression' is true.
fi
所以你确实缺了一个then
。
#!/bin/bash
lock="/home/sebastien/rsync.lock"
if [ -f "$lock" ];
then
rm $lock;
fi
我可以建议一下吗:
你把这事搞得太复杂了。
将锁定文件放入/tmp/
。该目录在每次重新启动时都会被清除,是放置锁定文件的理想目录,无需您执行任何额外操作。例如,请参阅/tmp 目录是如何清理的?
此方法还支持 的内容扩展/etc/tmpfiles.d
。请参阅/tmp 目录是如何清理的?