Eu tenho um trabalho que dura para sempre no momento em que começa. Então, eu quero iniciá-lo apenas uma vez depois de inseri-lo no arquivo "crontab -e" e salvá-lo (ou) sempre que a reinicialização ocorrer.
Como conseguir isso?
Eu tenho um trabalho que dura para sempre no momento em que começa. Então, eu quero iniciá-lo apenas uma vez depois de inseri-lo no arquivo "crontab -e" e salvá-lo (ou) sempre que a reinicialização ocorrer.
Como conseguir isso?
Respostas:
Se você deseja que um comando seja executado uma vez posteriormente, use o at
comando
Se você deseja que um comando seja executado uma vez na inicialização do sistema, a solução correta é usar:
@reboot
prefixo especial (consulte a página de manual)Esta última é a única opção para um usuário não raiz.
at now
@reboot
.
Você pode usar em (1) para executar um trabalho em algum momento no futuro. No entanto, se você quiser executar algo no boot e ele continuar rodando por si só, talvez você queira uma entrada em /etc/init.d/ para isso? Isso permitiria que você iniciasse na inicialização.
kill
(supondo que você tenha permissões para isso, o que você faz para seus próprios processos). Criar um script init é realmente fácil. Procure /etc/init.d/
um script que não seja muito longo e modele o seu depois dele, ou pesquise no Google making init scripts (your distribution)
.
/etc/init.d/skeleton
no openSuSE) que você pode adaptar para seu uso.
Um trabalho que é executado apenas uma vez e dura para sempre até que você diga para morrer é chamado de "daemon". Eles são normalmente iniciados através de scripts init em /etc/init.d/.
Se o seu trabalho terminar em algum momento e puder ser considerado um tipo único de trabalho, convém examinar o comando at. Por exemplo, se eu quisesse executar o comando find às 22:00 hoje à noite e somente isso uma vez eu faria:
$ at 10PM
at> find /root > /root/find_results.list
at> <EOT>
job 3 at 2010-02-10 22:00
Dê uma olhada no comando at