Faça o upgrade não assistido executar a verificação antes de reiniciar

1

Atualizações autônomas atualizam e reinicializam minha máquina sem problemas. No entanto, tenho um script python que é executado com pouca frequência, mas, quando executado, pode levar dias para ser concluído. Gostaria de suspender as reinicializações automáticas enquanto esse script é executado.

Qual é a maneira mais fácil de conseguir isso?

    
por Karalga 21.04.2015 / 15:54

2 respostas

1

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
    
por Karalga 22.04.2015 / 22:45
1

Você pode usar a configuração neste arquivo (thx @ muru ):

/etc/apt/apt.conf.d/50unattended-upgrades

e esta linha:

Unattended-Upgrade::Automatic-Reboot "false";

Em um shell eu faria isso:

sudo sed -i 's/^Unattended-Upgrade::Automatic-Reboot "true";$/Unattended-Upgrade::Automatic-Reboot "false";/g' /etc/apt/apt.conf.d/50unattended-upgrades

Crie um script para isso e inicie seu programa dentro do script. Se estiver terminado, reverta as alterações.

Ou você pode usar este arquivo:

/etc/apt/apt.conf.d/10periodic

e esta linha:

APT::Periodic::Unattended-Upgrade "0";
  • "0" significa desativado
  • "> 0" é o intervalo de tempo em dias.

Isso desativa a atualização automática em todo o sistema.

    
por A.B. 21.04.2015 / 17:13