終了する前に、作業ディレクトリを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

答え2

みんなの助けに感謝します。しかし、この問題を正常に解決しました。私がしたことは編集だった。終了。デスクトップ/usr/share/applicationsでexecを私のスクリプトに変更しました。私が修正したものです終了。デスクトップファイルは次のようになります。

[Desktop Entry]
Name=Shutdown
Comment=Backup and power off the computer
GenericName=Shut Down
Exec=gnome-terminal -e /home/kaustab/.scripts/backup_work.sh
Terminal=false
Type=Application
Categories=Utility
Icon=/usr/share/unity/icons/shutdown_highlight.png
NotShowIn=GNOME-Flashback;
X-AppStream-Ignore=true
X-Ubuntu-Gettext-Domain=session-shortcuts

終わるときバックアップジョブ.shgnome-session-quit --power-offスクリプト電源メニューのオプションを提供するために行を追加しました。ありがとう品質情報システムgithubに接続するには、httpsの代わりにsshを使用することをお勧めします。後でこれをやろうとしています。

関連情報