desligamento em data específica

desligamento em data específica

Eu sei que você pode agendar um desligamento para um horário específico shutdown -h 21:45e que não deve usar crontabs para essas coisas devido à sua natureza repetitiva. Como posso agendar um desligamento para um determinadodatatipo 31 de agosto às 20h?

Responder1

O atcomando serve para agendar execuções futuras únicas.

por exemplo

% at 8pm Aug 31
at> echo hello
at> <EOT>
job 161 at Sat Aug 31 20:00:00 2019

(o "<EOT>" foi produzido pressionando control-D)

% atq
161     Sat Aug 31 20:00:00 2019 a sweh

Você pode colocar seu shutdowncomando aqui.

Responder2

Embora atseja a maneira óbvia de fazer isso, acho que sobreviverá aos desligamentos; portanto, se a máquina for reinicializada antes do desligamento programado, ela poderá desligar novamente no horário programado. 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 tem precisão de apenas 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, em seguida, usando isso como o atraso para o desligamento. Não funcionará corretamente se o horário programado estiver no passado.

Responder3

Versões recentes do Ubuntu usam systemd e quando o agendador convencional atde associado atpara comandos únicos não está instalado ou não está em execuçãoum comando único pode ser agendado comsystemd-run o que é um pouco mais fácil do que gerar manualmente umsystemd timer:

 systemd-run --on-calendar="2019-08-31 20:00:00 CET" /sbin/shutdown now

Responder4

Para executar o trabalho apenas este ano:

0 20 31 8 * test $(/bin/date +\%Y) = "2019" && /sbin/shutdown now

Para executar o trabalho todos os anos:

0 20 31 8 * /sbin/shutdown now

informação relacionada