終了する前に、作業ディレクトリをgitにバックアップしてください。

終了する前に、作業ディレクトリをgitにバックアップしてください。

Ubuntu 16.04を使用しています。コンピュータの電源を切るたびにgithubにバックアップしたいWorkというディレクトリがあります。バックアップスクリプトを作成しましたが、正常に動作しますが、終了する前に実行することはできません。助けてください。 backup_work.sh の内容です。

cd /home/kaustab/Work
git add .
git commit -m "Daily Backup"
mkdir /home/kaustab/test 
git push origin master
echo "Backed up"
read -n 1 -s -r -p "Press any key to continue"

ベストアンサー1

指示に従って終了時にスクリプトを実行できます。ここ

デフォルトではスクリプトを入れて/etc/rc6.d/実行可能にします。このアプローチの1つの欠点は、上記のディレクトリ内のすべてのスクリプトがルートとして実行され、後でファイル権限が変更され、問題が発生する可能性があることです。別の方法は、スクリプトをホームディレクトリに保存し、次のスクリプトをホームディレクトリに追加することです。/etc/rc6.d

#!/bin/sh

sudo -u kaustab /home/kaustab/backup_work.sh
exit 0

read最後に、閉じる前にキーを押すだけで閉じることができないため、呼び出しを削除(またはタイムアウトを追加)する必要があります。

体系的なアプローチ

上記のrc6.dスクリプトメソッドは、終了時にスクリプトを実行する従来のsysv-initメソッドです。最新バージョンのDebian / Ubuntuでは、systemdユニットファイルを使用して終了時にスクリプトを実行する方が安全です。

次のスクリプト/etc/systemd/system/backup-work.service源泉)と実行sudo systemctl daemon-reload

[Unit]
Description=Backup work directory
DefaultDependencies=no
Before=shutdown.target reboot.target halt.target
# This works because it is installed in the target and will be
#   executed before the target state is entered
# Also consider kexec.target

[Service]
Type=oneshot
User=kaustab
Group=kaustab
ExecStart=/home/kaustab/backup_work.sh  # your path and filename

[Install]
WantedBy=halt.target reboot.target shutdown.target

おすすめ記事