Eu sei que você pode agendar um desligamento para um horário específico via shutdown -h 21:45
e que você não deve usar crontabs para essas coisas por causa de sua natureza repetitiva. Como posso agendar um desligamento para uma data específica, como 31 de agosto às 20h?
O
at
comando é para agendar uma execução futura.por exemplo
(o "<EOT>" foi produzido pressionando control-D)
Você pode colocar seu
shutdown
comando aqui.Embora
at
seja a maneira óbvia de fazer isso, acho que sobreviverá a desligamentos, portanto, se a máquina for reinicializada antes do desligamento agendado, ela poderá ser desligada novamente no horário agendado. Portanto, usando bash e GNU date, podemos usar um desligamento atrasado./sbin/shutdown +$(( ( $( date -d "30 may 2019 13:15" +%s ) - $( date +%s ) ) / 60 + 1 ))
NB: Isso é preciso apenas para um minuto. Ele funciona convertendo o horário agendado e agora em segundos desde a época do UNIX, calculando a diferença, convertendo em minutos e usando isso como o atraso para o desligamento. Não funcionará corretamente se o horário agendado estiver no passado.
Versões recentes do Ubuntu usam systemd e quando o agendador convencional
atd
e associadoat
para comandos únicos não está instalado ou não está executando um comando único pode ser agendado com osystemd-run
que é um pouco mais fácil do que gerar manualmente umsystemd timer
:Você usa um
shutdown
comando melhor.Os comandos van Smoorenburg, Upstart e systemd
shutdown
não permitem uma especificação de data. Mas o comando BSDshutdown
recebe um valor de data em sua especificação de quando desligar, no formatoyymmddhhmm
. Este tem sido o caso desde o 4BSD, e continua assim com o FreeBSD e o OpenBSD. O NetBSD estendeu paraccyymmddhhmm
.Como o conjunto de ferramentas nosh também pode ser usado nos BSDs, dei ao meu
shutdown
comando o mesmo recurso, estendendo-o paraCCYYMMDDHHMM
por NetBSD. E como o conjunto de ferramentas nosh também pode ser usado no Linux, isso dá ao Linux um comando de desligamento que leva datas.É claro que funciona com o nosh
system-manager
. Também funciona com alguns outros sistemas. Ele envia sinais para o processo #1 para decretar coisas e os mesmos sinais são entendidos por alguns outros gerenciadores de sistema, comosystemd
, que também podem ser desligados usando-o.Você poderia usá-lo, ou uma ferramenta parecida; ou você pode tentar persuadir os autores de outros
shutdown
programas Linux a estender suas ferramentas para também serem tão capazes quanto o BSDshutdown
.Leitura adicional
shutdown
. páginas de manual do conjunto de ferramentas nosh. Programas.system-manager
. páginas de manual do conjunto de ferramentas nosh. Programas.shutdown
. Manual do Administrador do Sistema . Páginas do Manual do NetBSD. 2011-11-04.shutdown
. Manual do Gerenciador de Sistemas FreeBSD . 01-01-2018.shutdown
. Páginas do Manual do OpenBSD. 2015-01-21.Para executar o trabalho somente este ano:
Para executar o trabalho todos os anos:
Pode haver uma opção para inserir o ano do
shutdown
comando, mas o cron pode ser usado para executar comandos apenas uma vez em um momento específico. Para o seu exemplo, tenteCuidado: o acima não é a sintaxe cron padrão.