web-dev-qa-db-ja.com

外部ドライブのアンマウントなどのシャットダウンシーケンスの前にスクリプトを実行するにはどうすればよいですか

~/scripts/backup.shにバックアップスクリプトがあり、~/.config/upstart/shutdown.confにupstart confがあります。

description "my shutdown script"
start on desktop-end

task
console log
script
  exec ~/scripts/backup.sh start
end script

スクリプトは外部ハードドライブon desktop-endにバックアップされますが、スクリプトが呼び出される前に外部ハードドライブがマウント解除されます。

シャットダウンシーケンスの前にスクリプトを実行し、スクリプトが完了したときにのみ再開する方法

this postから解決策を試しましたが、フックon starting rcが機能しません。

ありがとう。

3
deanresin

これに対するクレジット 回答の投稿

まず、Ubuntu 15.10はsystemdを代わりに使用する必要があるため、なぜupstartが機能するのかまったくわかりません。そこで、問題を解決するために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に配置して、実行可能にします。

systemctl enable backup.serviceでbackup.serviceを有効にします

そして出来上がり!バックアップスクリプト「backup.sh」は、再起動、シャットダウン、または停止時に呼び出され、指定されたドライブがアンマウントされる前に実行される必要があります。

3
deanresin