Desligamento automático em horários especificados?

18

Estou ciente de que posso usar (sudo?) shutdown -h hh:mmEm uma janela de terminal para desligar um sistema; no entanto, o usuário conectado é um usuário de quiosque, bloqueado de tal maneira que o terminal (ou qualquer outra janela que não seja o Firefox) , por esse motivo) não pode ser aberto.

Minha pergunta é:
Existe uma maneira de fazer isso sem ter uma janela de terminal aberta? Eu li sobre o cron, mas não consigo resolver isso.
Como posso alterar o horário de desligamento, dependendo de que dia é hoje?

MrAxlee
fonte
Deseja desligar às 02:00?
αғsнιη
Não, desculpe, foi exatamente isso que foi usado no exemplo que li. Geralmente às 11:30, mas eu queria saber se existe uma maneira de especificar horários diferentes para dias diferentes?
MrAxlee
1
Você pode consultar o URL para o desligamento automático. askubuntu.com/questions/19774/...
vembutech
1
@vembutech Essa pergunta é para desligar após um certo período de tempo - não desligar em um determinado momento - no entanto, embora seja fácil adotar isso de acordo com minhas necessidades, ainda não consigo executar outras janelas além do Firefox. Obrigado pela sua resposta! Parece muito mais simples do que usar cron, e eu provavelmente irá usá-lo para outros usos :)
MrAxlee
@MrAxlee ... Então, você quer que o sistema desligue n horas depois de ligar?
Kaz Wolfe

Respostas:

30

Cron funcionará muito bem para isso.

Adicione a linha abaixo (com ajustes) ao final de /etc/crontab:

30 23 * * * root shutdown -h now

Às 23:30 (23:30), o quiosque será desligado. Não importa qual usuário esteja conectado, o comando shutdown será executado como root.

(Se você não quiser usar o crontab global, faça login como root e use crontab -e. Use a mesma sintaxe acima sem o root).


Formato Cron:

MM HH DD OO WW command

MM: Minuto, 0-59
HH: hora de 24 horas
DD: dia do mês
OO: mês
WW: dia da semana (domingo é 0, segunda-feira é 1)
command: auto-explicativo

Kaz Wolfe
fonte
@JacobVlijm Quando isso foi adicionado? Não vejo isso nos documentos oficiais do Cron .
Kaz Wolfe
1
Vou procurar ...
Jacob Vlijm
1
from crontab (5): O formato do sistema crontab, / etc / crontab inclui uma coluna who que não existe nos crontabs do usuário. No crontab do sistema, o cron executa o comando como o usuário especificado nesta coluna. Em um usuário crontab, todos os comandos são executados como o usuário que criou o crontab.
Jacob Vlijm
@Whaaaaaat Ótima resposta, funciona perfeitamente, obrigado !. Qual é a diferença entre -he -s?
MrAxlee
1
@MrAxlee -snão parece ser "sintaxe adequada". -hmeios para travar ou desligar o sistema (a escolha do sistema - desligamento preferencial)
Kaz Wolfe
6

Um cronjob parece ser o melhor caminho, porque você pode especificar horários diferentes para dias diferentes. Em sistemas baseados no Gnome, você pode instalar o GNOME Shedule Tasks usando

sudo apt-get install gnome-schedule

e, em seguida, configure o cronjob usando a GUI.

caso contrário, você teria que usar sudo crontab -ee adicionar as seguintes linhas

30 11 * * 1-5 /sbin/shutdown -h now
30 10 * * 0,6 /sbin/shutdown -h now

isso desligaria o PC às 11:30 de segunda a sexta-feira e às 10:30 no sábado e domingo. A estrutura é muito simples:

minute (0-59), hour (0-23, 0 = midnight), day (1-31), month (1-12), weekday (0-6, 0 = Sunday), command 

Para mais informações sobre isso, você também pode conferir o CronHowto

Christian Rauchenwald
fonte
2
Eu tive que usar especificamente, em /sbin/shutdownvez de shutdownporque o meu PAT cron cron era diferente do que no terminal em que tentei meu script.
Jaakko
3

Nós pode desligar automaticamente em tempo especificado, simplesmente executando o comando sudo poweroffno crontab.

Se você deseja desligar o sistema às 18h30 todos os dias. Digite o terminal:

sudo crontab -e

editar

30 18 * * * poweroff
margarida
fonte
@mrm Existem métodos alternativos, pode haver muitas soluções diferentes para um problema específico e as respostas para isso. Não é uma resposta útil ou não? Solicito que você não vote para responder ou questionar se não tiver certeza. Leia a pergunta corretamente e veja se a resposta se aplica a essa pergunta específica ou não. Se você ainda tiver algum dilema, pode perguntar no Ask Ubuntu Meta ou aqui e, em seguida, tomar uma decisão.
daisy
Em uma linha do crontab, você tem dois problemas: poweroffignora os scripts de desligamento, que podem ser importantes para, por exemplo, desligar o banco de dados com segurança ou o que quer que seja, e você tem um sudocrontab raiz desnecessário. Você também não abordou como fazer referência a diferentes dias da semana como a pergunta. Portanto, não, este não é um método alternativo. Como é, são dois erros e uma omissão. As duas outras respostas feitas um ano antes da sua estão corretas e realmente funcionam.
Mrm
@ Mrm Bem, eu estou usando esse script nos últimos três anos e não vi nenhum problema. E sim esta alternativa e também corrigir método útil. Que é Desligamento automático em horários especificados. Existe um comando para desligar e, por tempo especificado automaticamente, podemos usar o crontab conforme nossa exigência. Seria melhor se você fizesse uma pergunta diferente em relação ao seu problema.
daisy