A melhor maneira de fazer isso dependerá de por que você deseja que o Ubuntu reinicie a cada meia hora.
Então, eu recomendo editar sua pergunta para explicar por que você deseja fazer isso.
Reiniciando a cada 30 minutos e avisando os usuários antes de cada reinicialização:
Supondo que as pessoas possam estar usando a máquina, seja local ou remotamente, é melhor evitar o reinício do Ubuntu sem qualquer aviso. Portanto, em vez de programar o comando reboot
, recomendo programar o shutdown
para avisar o usuário.
Para agendar um desligamento a cada meia hora com um aviso 5 minutos antes, adicione isso a /etc/crontab
:
#minute hour mday month wday user command
*/30 * * * * root shutdown -r +5
Na verdade, você não precisa adicionar a primeira linha, que é um comentário. Eu incluí-lo para maior clareza - algo como isso já está lá.
- Isso agendará o sistema para ser reinicializado (
-r
) cinco minutos após (+5
) o comando ser executado. Ele é executado a cada meia hora (*/30
). Vejaman cron
eman 5 crontab
. - Altere
+5
para outra coisa para alterar o tempo de uso dos usuários após receber avisos de reinicializações. -
0,30
sob minuto também funcionará, se você preferir. (Da mesma forma, se fosse a cada 20 minutos, você poderia escrever*/20
ou0,20,40
.) - Verifique se
/sbin
está na variávelPATH
especificada perto do topo de/etc/crontab
. Caso contrário,shutdown
(sobcommand
) terá que ser invocado como/sbin/shutdown
.
O comando será sempre executado na marca de meia hora, se a máquina estiver em funcionamento no momento . Isso fará com que os desligamentos sejam anunciados a cada meia hora e sejam executados aos 5 minutos e 35 minutos depois da hora.
- Um benefício aqui é que um administrador pode cancelar o encerramento anunciado com
sudo shutdown -c
. - Se o computador estiver inativo durante os horários específicos em que o comando agendado deve ser executado, ele não será executado. Se isso não for adequado às suas necessidades, você terá que agendar suas reinicializações de maneira diferente. (Isso não é específico para o uso de
shutdown
, mas se aplicaria igualmente se você estivesse agendandoreboot
.) Nesse caso, edite sua pergunta para explicar suas necessidades específicas. (Eu recomendariaanacron
para isso, mas seus intervalos de tempo são muito curto.)
Facilitando aos administradores a prevenção de reinicializações automáticas:
Você pode querer configurar isso para que seja fácil para um administrador suspender todas as reinicializações agendadas automaticamente:
#minute hour mday month wday user command
*/30 * * * * root [ -e /etc/noautoreboot ] || shutdown -r +5
Esse cronograma é reinicializado da mesma maneira - a cada meia hora, com cinco minutos de aviso - exceto que ele não agendará uma reinicialização se um arquivo chamado noautoreboot
existir em /etc
.
-
Este arquivo de controle pode ser criado por um administrador com:
sudo touch /etc/noautoreboot
-
Pode ser eliminado com:
sudo rm /etc/noautoreboot
-
Note que é se o arquivo existe ou não, , não o que ele contém, o que importa.
-
Se a reinicialização estiver agendada e os usuários forem avisados, então o arquivo será criado, a reinicialização (imediatamente futura) ainda ocorrerá.
-
Como isso funciona? Ele usa um operador curto-circuito - avaliado ou (
||
) como abreviatura para:Se
/etc/noautoreboot
não existir, executeshutdown -r +5
.Esta resposta explica como o curto-circuito e e ou operadores podem executar
if
-then
logic. Para uma explicação breve, intuitiva e altamente informal, você pode ler o comando desta forma:/etc/noautoreboot
existe! Ou executeshutdown -r +5
.Veja
man [
para ver como o teste é realizado.