Перед повторным запуском выполнить автоматическую проверку перед обновлением.

Автоматически обновляет и перезагружает мой компьютер без каких-либо проблем. Тем не менее, у меня есть сценарий 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" - временной интервал в днях.

Это отключает автоматическое обновление всей системы.

Другие вопросы по тегам