Я хотел бы запустить свой сценарий после или во время каждого обновления Ubuntu. Например:
Если я делаю команду sudo склонной - получают обновление, я хочу запустить свой сценарий после успешного обновления. То же, если я делаю обновление через программное обеспечение Updater. Действительно ли это возможно?
Наблюдайте за изменениями в /var/log/apt/history.log
:
sudo inoticoming /var/log/apt/ upgrade_success {} \;
Сценарий upgrade_success
:
#!/bin/bash
if [ $1 == "history.log" ]
then
echo "Changes in \"/var/log/apt/history.log\""
if [ ! -f "/tmp/upgrade_success_last_run" ] || [ $(stat -c %Y "/tmp/upgrade_success_last_run") -lt $(date "+%s") ]
then
# look for changes since the last run
# of this script ("upgrade_success")
# in "/var/log/apt/history.log"
# and make what you want.
fi
touch /tmp/upgrade_success_last_run
fi
Вы пишете следующее:
...
Я хотел бы запустить свой сценарий после или во время каждого обновления Ubuntu.
...
Создайте этот файл:
/etc/apt/apt.conf.d/16my-script
и добавьте эту строку:
APT::Update::Post-Invoke-Success {"<path_to_your_script> 2>/dev/null || true";};
К сожалению, нет никакого способа сделать то же для Обновления, например:
APT::Upgrade::Post-Invoke-Success {"<path_to_your_script> 2>/dev/null || true";};
ИЛИ
В файле /etc/apt/apt.conf.d/15update-stamp
можно найти эту строку:
APT::Update::Post-Invoke-Success {"touch /var/lib/apt/periodic/update-success-stamp 2>/dev/null || true";};
Поэтому можно наблюдать за изменениями файла /var/lib/apt/periodic/update-success-stamp
. После любой команды обновления, даже через программное обеспечение Updater, дата модификации этого файла является датой последнего успешного обновления.
Наблюдайте папку /var/lib/apt/periodic/
с inoticoming
:
sudo inoticoming /var/lib/apt/periodic/ upgrade {} \;
Сценарий upgrade
:
#!/bin/bash
if [ $1 == "update-success-stamp" ]
then
sudo apt-get upgrade
fi
И также здесь: К сожалению, нет никакого способа сделать то же для Обновления, например:
APT::Upgrade::Post-Invoke-Success {"touch /var/lib/apt/periodic/upgrade-success-stamp 2>/dev/null || true";};
и наблюдайте за изменениями файла /var/lib/apt/periodic/upgrade-success-stamp
.
Можно сделать это путем добавления мнения upgrade
псевдоним к ~/.bashrc
, и путем выполнения псевдонима для выполнения обновления:
chmod +x <path_to_script>
* <path_to_script> = соединяют каналом к скрипту, который Вы хотите запустить
upgrade
псевдоним к ~/.bashrc
: <<< "alias upgrade='sudo apt-get upgrade && <path_to_script>'" tee -a ~/.bashrc
* <path_to_script> = соединяют каналом к скрипту, который Вы хотите запустить
~/.bashrc
: . ~/.bashrc
Таким образом, каждый раз Вы работаете upgrade
оба sudo apt-get upgrade
и Ваш сценарий будет выполняться, сценарий только на успех sudo apt-get upgrade
.