Перед повторным запуском выполнить автоматическую проверку перед обновлением.
Автоматически обновляет и перезагружает мой компьютер без каких-либо проблем. Тем не менее, у меня есть сценарий Python, который запускается нечасто, но когда он запускается, это может занять несколько дней. Я хотел бы приостановить автоматические перезагрузки во время работы этого скрипта.
Какой самый простой способ добиться этого?
2 ответа
Я решил создать скрипт, который проверяет, запущен ли Python, и соответственно создает и удаляет файл переопределения конфигурации. Конечно, тест для работающей программы на Python может быть более специфичным, например, с использованием -f /proc/$(cat something.pid)/status
,
Файлы bash:
#! /bin/bash
case "$(pgrep -xc python)" in
0) echo "No python running, ok to reboot" >> /root/scripts/pythonCheck.log
if [ -e "/etc/apt/apt.conf.d/60dontreboot" ]; then
rm "/etc/apt/apt.conf.d/60dontreboot"
fi
;;
*) echo "Python is running, shouldn't reboot" >> /root/scripts/pythonCheck.log
if [ ! -e "/etc/apt/apt.conf.d/60dontreboot" ]; then
echo 'Unattended-Upgrade::Automatic-Reboot "false"' > /etc/apt/apt.conf.d/60dontreboot
fi
;;
esac
В моем случае я установил автоматическую перезагрузку в 4 часа утра (также в 50unattended-upgrades), поэтому я добавил crontab для выполнения вышеуказанного сценария в 3:59 утра. Я счастлив потерять одну минуту работы; мой скрипт на python начнется через пару минут.
Запись в crontab:
59 3 * * * /root/scripts/pythonCheck.sh
Вы можете использовать конфигурацию в этом файле (thx @ muru):
/etc/apt/apt.conf.d/50unattended-upgrades
и эта строка:
Unattended-Upgrade::Automatic-Reboot "false";
В оболочке я бы сделал это:
sudo sed -i 's/^Unattended-Upgrade::Automatic-Reboot "true";$/Unattended-Upgrade::Automatic-Reboot "false";/g' /etc/apt/apt.conf.d/50unattended-upgrades
Создайте сценарий для этого и запустите программу внутри сценария. Если это закончено, отмените изменения.
Или вы можете использовать этот файл:
/etc/apt/apt.conf.d/10periodic
и эта строка:
APT::Periodic::Unattended-Upgrade "0";
- "0" означает отключенный
- ">0" - временной интервал в днях.
Это отключает автоматическое обновление всей системы.