- Upgrades não assistidos pendentes de reinicialização evitam o desligamento do usuário

1

Executando o Ubuntu 14.04 em uma sala de computadores pública, eu habilitei upgrades autônomos e configurei para reiniciar às 02.00 da noite. PCs são dual boot, então um usuário iria reiniciar o computador para inicializar o outro sistema operacional, mas se você tivesse instalado algumas atualizações, e configurá-lo para reiniciar, então os usuários não seriam capazes de fazê-lo sozinhos: se clicarem no ícone de roda dentada e, em seguida, escolha Desligar e Reiniciar, o sistema simplesmente não faz nada.

Se eu fizer login como root e tentar emitir um comando de reinicialização, a resposta é "outro desligamento já está pendente", portanto, preciso encerrar -c para cancelá-lo e, depois disso, posso reinicializá-lo. Obviamente, isso não é o que eu quero, porque os usuários devem poder reiniciar sempre que quiserem sem minha intervenção (ou raiz).

Alguém poderia me ajudar, por favor, ao atingir meu objetivo (= ter uu configurado para instalar automaticamente e reiniciar às 2:00 da noite, deixando os usuários livres para reinicializar / desligar quando quiserem, sem conceder permissões de root)?

Muito obrigado,

Andrea

    
por Angus73 23.02.2018 / 11:55

1 resposta

1

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

    
por user68186 23.02.2018 / 18:04