O que é uma maneira simples de executar um comando, digamos, daqui a oito horas? Eu posso pensar assim:
nohup bash -c "sleep 28800 ; ./mycommand.sh" &
Existe uma maneira mais "adequada"?
bash
command-line
schedule
Steve Bennett
fonte
fonte
nohup
+sleep
? Por que é "impróprio"?Respostas:
Você pode usar o
at
comando Osat
comandos de execução posteriormente. Oat
utilitário deve ler os comandos da entrada padrão e agrupá-los como um trabalho, para serem executados posteriormente.Normalmente,
at
é instalado por padrão no Ubuntu, mas se o seu lançamento não o incluir, instale via:Para mais informações, opções, exemplos e outros, consulte o repositório de páginas Manuais do Ubuntu.
Exemplo:
Você também pode usar atalhos convenientes, como
tomorrow
ounoon
, como emAviso: Isso executará o comando à esquerda do tubo imediatamente, mas somente apresentará sua saída posteriormente. O exemplo também demonstra como você pode canalizar ações
at
.at -c
é a maneira de examinar as ações agendadas, que você pode listar convenientemente com o número delas, como em:fonte
at now +8 hours -f ~/myscript.sh
at 8:00
para executar o comando em um tempo absoluto, ebatch
para "quando parece que o computador está ocioso"teatime
é às 16h. Por algumas razões, não é mencionado em manpages.ubuntu.com/manpages/raring/man1/at.1posix.html, mas estáman at
aqui e aqui em manpages.ubuntu.com/manpages/raring/en/man1/at.1.html .gpio write 8 1
mas ele foi executado imediatamente.Sim, você pode definir um trabalho cron.
Por exemplo, se agora é 14:39:00 e hoje é sexta-feira, 30 de agosto, você pode adicionar o seguinte trabalho cron (a ser executado após 8 horas) no seu arquivo crontab usando o
crontab -e
comando:Mais sobre:
fonte
crontab
até que você o remova. Um ano depois, quando você esquecer quem colocou lá e por quê, ficará coçando a cabeça, imaginando o que fazer com o comando.Utilizar a GUI baseada em Gnome para
cron
,at
e afins:A introdução do CronHowto sugere o uso da
gnome-schedule
GUI, que é muito mais agradável do que digitar todo o lixo no terminal (especialmente para usuários "médios" do Ubuntu que não são usuários "avançados" * nix / bsd).Execute-o usando o Unity Dash (ou outro menu de aplicativos) para procurar tarefas agendadas ou em execução
gnome-schedule
.Usando
gnome-schedule
, para um script em seu diretório pessoal, um novo comando "at" seria configurado usando este tipo de janela:fonte
Eu descobri uma maneira rápida e suja de fazer isso antes de descobrir que
at
era uma coisa.Digamos que você queira que seu script seja executado ao meio-dia:
Digamos que você queira que ele funcione amanhã ao meio-dia (hoje é 24 de novembro para mim):
Atualização : Método ligeiramente melhor: teste apenas os números de que você gosta, usando
date +FORMAT
:fonte
at
,cron
ou qualquer outra aplicação real programador. O agendamento de tarefas é difícil e não é uma roda que você deve reinventar.at
.at
é porque seus trabalhos sobreviverão a uma reinicialização.