如何让我的脚本在任何关机序列(例如卸载我的外部驱动器)之前运行

如何让我的脚本在任何关机序列(例如卸载我的外部驱动器)之前运行

我有一个备份脚本,~/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”应在重启、关机或停止时调用,并在卸载指定驱动器之前执行。

相关内容