Shell-Script
關閉前將工作目錄備份到 git
我正在使用 Ubuntu 16.04。我有一個名為 Work 的目錄,每次關閉電腦時我都想將其備份到 github。我已經編寫了備份腳本,它工作正常,但在關閉之前我無法執行它。請幫忙。這是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"
謝謝大家的幫助,但我已經設法解決了這個問題。我所做的是編輯/usr/share/applications 中的shutdown.desktop並將 exec 更改為我的腳本。這就是我修改後的shutdown.desktop文件的樣子。
[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
在backup_work.sh腳本的末尾,我添加了該行
gnome-session-quit --power-off
以提供電源菜單的選項。感謝QIS指出使用 ssh 而不是 https 連接到 github。我稍後會嘗試。
您可以按照此處的說明在關機時執行腳本。
基本上,您可以將腳本放在 中
/etc/rc6.d/
,並使其可執行。這種方法的一個缺點是上述目錄中的任何腳本都將以 root 使用者身份執行,這可能會更改文件權限並在以後引起問題。另一種方法是將腳本保留在主目錄中,然後將以下腳本添加到/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
(source)並執行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