Respostas:
Você pode fazer isso diretamente no shutdown command
, consulte man shutdown
:
SYNOPSIS
/sbin/shutdown [-akrhPHfFnc] [-t sec] time [warning message]
[...]
time When to shutdown.
Então, por exemplo:
shutdown -h 21:45
Isso será executado shutdown -h
às 21:45.
Para comandos que não oferecem essa funcionalidade, você pode tentar um dos seguintes:
O at
daemon foi projetado exatamente para isso. Dependendo do seu sistema operacional, pode ser necessário instalá-lo. Em sistemas baseados no Debian, isso pode ser feito com:
sudo apt-get install at
Existem três maneiras de dar um comando para at
:
Pipe it:
$ echo "ls > a.txt" | at now + 1 min
warning: commands will be executed using /bin/sh
job 3 at Thu Apr 4 20:16:00 2013
Salve o comando que você deseja executar em um arquivo de texto e passe esse arquivo para at
:
$ echo "ls > a.txt" > cmd.txt
$ at now + 1 min < cmd.txt
warning: commands will be executed using /bin/sh
job 3 at Thu Apr 4 20:16:00 2013
Você também pode passar at
comandos do STDIN:
$ at now + 1 min
warning: commands will be executed using /bin/sh
at> ls
Em seguida, pressione CtrlDpara sair do at
shell. O ls
comando será executado em um minuto.
Você pode dar tempos muito precisos no formato de [[CC]YY]MMDDhhmm[.ss]
, como em
$ at -t 201403142134.12 < script.sh
Isso executará o script script.sh
às 21:34 e 12 segundos em 14 de março de 2014.
A outra abordagem é usar o cron
agendador projetado para executar tarefas em horários específicos. Geralmente é usado para tarefas que serão repetidas, mas você também pode dar um tempo específico. Cada usuário possui seus próprios "crontabs", que controlam quais tarefas são executadas e quando. O formato geral de um crontab é:
* * * * * command to be executed
- - - - -
| | | | |
| | | | +----- day of week (0 - 6) (Sunday=0)
| | | +------- month (1 - 12)
| | +--------- day of month (1 - 31)
| +----------- hour (0 - 23)
+------------- min (0 - 59)
Por exemplo, isso será executado ls
todos os dias às 14:04:
04 14 * * * ls
Para configurar um cronjob para uma data específica:
Crie um novo crontab executando crontab -e
. Isso abrirá uma janela do seu editor de texto favorito.
Adicione esta linha ao arquivo que acabou de abrir. Este exemplo em particular será executado às 14:34 de 15 de março de 2014 se esse dia for sexta-feira (então, ok, pode ser executado mais de uma vez):
34 14 15 5 /path/to/command
Salve o arquivo e saia do editor.
Essa resposta do SO sugere uma maneira de executá-lo apenas uma vez, mas eu nunca o usei, portanto não posso atestar isso.
shutdown
. Sinto por essa experiência ruim que não poderia ter sido agradável.
shutdown
agendamento e cron
com a mesma resposta ... Se é uma estação de trabalho ou um servidor de correio de 1000 usuários (minha triste experiência), trata-se mais das consequências de um mau hábito.
shutdown
, não se deve incluir cron
. (. esp com alguém que não sabe por que isso é uma idéia horrível.)
Não, você não pode especificar uma data no comando shutdown, mas existem duas alternativas:
1) O mais fácil é usar o comando at . O exemplo a seguir será executado shutdown +5
em um horário e dia específicos:
echo "shutdown +5" | at 10:05am 2019-01-19
2) se você não se importa em usar sua calculadora e deseja desligar em, digamos, 24 horas (24 * 60 = 1440 minutos) e tem certeza absoluta de que o sistema não será reiniciado no meio:
shutdown -r +1440
at
comando.
at
não merece explicação. Eu posso ver você acreditar no contrário. Mentes diferentes, visões diferentes.
shutdown
comandos van Smoorenburg, Upstart e systemd não permitem uma especificação de data. Mas o conjunto de ferramentas nosh shutdown
funciona, suportando a sintaxe de longa data do BSD.
Ele encerrará o sistema às 12:00:
$ sudo shutdown -h 12:00
Opções:
-h, -P, --poweroff
Desligue a máquina.
-r, --reboot
Reinicie a máquina.
-c
Cancele um desligamento pendente.