Резервное копирование рабочего каталога в git перед выключением

./my-script2 $1

Параметры без кавычек подлежат разбиению на слова при расширении :

The shell scans the results of parameter expansion, command substitution, and arithmetic expansion that did not occur within double quotes for word splitting.

Это указанное поведение POSIX , хотя некоторые оболочки (, особенно zsh ), отключают его по умолчанию. Если вы изменили значение IFSпо умолчанию, это ваша вина.

0
03.09.2019, 20:33
2 ответа

Спасибо всем за вашу помощь, но мне удалось решить эту проблему. Что я сделал, так это отредактировал файлshutdown.desktopв /usr/share/applications и заменил исполняемый файл на мой сценарий. Вот как выглядит мой модифицированный файл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. Я попробую это позже.

0
28.01.2020, 02:29

Вы можете запустить сценарий при завершении работы, следуя инструкциям здесь .

По сути, вы можете поместить скрипт в /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(источник)и запустите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
28.01.2020, 02:29

Теги

Похожие вопросы