Parar atualizações não assistidas de reiniciar o computador
No momento, Atualizações não assistidas são configuradas para reiniciar o computador às 2:00, se a atualização exigir uma reinicialização. Este passo irá parar este comportamento.
Passo: edite o arquivo /etc/apt/apt.conf.d/50unattended-upgrades
Dentro do arquivo, procure pela linha:
unattended-Upgrade::Automatic-Reboot "true";
e faça com que pareça:
Unattended-Upgrade::Automatic-Reboot "false";
Crie um script bash para verificar se a reinicialização é necessária e faça isso se necessário
O script abaixo verifica se o arquivo reboot-required
existe e, em caso afirmativo, reinicia o computador imediatamente. Vamos chamar esse arquivo reboot_if_needed.sh
.
#!/bin/bash
if [ -f /var/run/reboot-required ]; then
echo $(date) Sytem restart required by: $(cat /var/run/reboot-required.pkgs)
/sbin/reboot now
fi
Salve este arquivo como /opt/bin/reboot_if_needed.sh
Tornar este arquivo executável:
sudo chmod + x /opt/bin/reboot_if_needed.sh
Explicação
Quando o script for executado e o arquivo var/run/reboot-required
existir, ele exibirá algum texto que será capturado em um arquivo de log /var/log/reboot_history.log
. Em seguida, o sistema será reiniciado.
Agenda reboot_if_needed.sh
todas as noites às 2:00
Queremos executar o script com privilégios de administrador. Então usamos sudo
. Abra um terminal pressionando Ctrl + Alt + T e digite:
sudo crontab -e
Este comando irá abrir o arquivo crontab para o usuário root, se existir algum, ou criar um novo arquivo em branco. Adicione a seguinte linha no final do arquivo:
* 02 * * * '/opt/bin/reboot_if_needed.sh' >> /var/log/reboot_history.log
Se você usar nano
como editor de arquivos de texto, saia do editor pressionando Ctrl + X . O editor solicitará que você salve as alterações. Pressione Y e, em seguida, pressione Enter para selecionar o nome do arquivo padrão.
Explicação
A linha adicionada ao crontab
fará com que o script reboot_if_needed.sh
seja executado todas as noites às 2:00. O >>
redireciona a saída para o arquivo /var/log/reboot_history.log
. Este arquivo será criado na primeira vez em que crontab
executar o script.
Veja link para saber como usar o crontab
Por que isso funciona?
A atualização autônoma aparentemente programa a reinicialização com um atraso. Por exemplo:
sudo shutdown -r 02:00
O comando acima programa a reinicialização às 2:00. Quando esse comando está em vigor, você recebe a mensagem "outro desligamento já pendente".
Usamos o crontab para cuidar do início do processo de reinicialização às 2h, em vez de agendá-lo a partir do comando shutdown
. Assim, não há desligamento pendente uma vez que a Atualização não assistida foi executada. Qualquer usuário pode reiniciar o computador.
Quando qualquer usuário reinicializa o computador, o arquivo /var/run/reboot-required
se ele é excluído é excluído pelo sistema, já que a reinicialização não é mais necessária. O computador não será reiniciado às 2 da manhã pelo script.
Espero que isso ajude