Eu decidi criar um script que verifica se o python está sendo executado e cria e exclui um arquivo de substituição de configuração de acordo. É claro que o teste para o programa python em execução pode ser mais específico, por exemplo, usando -f /proc/$(cat something.pid)/status
.
Os arquivos do bash são:
#! /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
No meu caso, eu configurei a reinicialização automática para as 4 da manhã (também em 50 upgrades não assistidos), então eu adicionei um crontab para executar o script acima às 3:59 am. Estou feliz em perder um minuto de trabalho; meu script python começará alguns minutos depois.
A entrada do crontab é:
59 3 * * * /root/scripts/pythonCheck.sh