我有一个备份脚本,~/scripts/backup.sh
并且我的 upstart 配置也在 中~/.config/upstart/shutdown.conf
。
description "my shutdown script"
start on desktop-end
task
console log
script
exec ~/scripts/backup.sh start
end script
我的脚本备份到外部硬盘驱动器on desktop-end
,但在调用我的脚本之前外部硬盘驱动器已被卸载。
我怎样才能在关机序列之前使用脚本,然后仅在脚本完成后才恢复?
我尝试了解决方案这发布,但钩子on starting rc
不起作用。
谢谢。
答案1
归功于此已发布的答案
首先,我完全不知道 upstart 为何能工作,因为 Ubuntu 15.10 应该使用 systemd。所以我使用 systemd 来解决我的问题。
我创建了一个名为 backup.service 的 systemd“单元”
[Unit]
Description=Backup script
DefaultDependencies=no
RequiresMountsFor=/mnt/D21EF5DA1EF5B795 /home /media/external
Before=shutdown.target reboot.target halt.target
[Service]
ExecStart=/bin/bash /home/deanresin/scripts/backup.sh start
Type=oneshot
[Install]
WantedBy=multi-user.target
RequiresMountsFor
确保这些硬盘在脚本运行之前和运行期间保持安装状态。 Before=shutdown.target reboot.target halt.target
是调用备份脚本的钩子。
将 backup.service 文件放入 /etc/systemd/system 并sudo chmod u+x /etc/systemd/system/backup.service
使其可执行。
现在通过以下方式启用 backup.servicesystemctl enable backup.service
瞧!备份脚本“backup.sh”应在重启、关机或停止时调用,并在卸载指定驱动器之前执行。