Isso pode ser um pouco confuso porque existem diferentes implementações do cron. Também houve vários bugs que quebraram esse recurso, e há também alguns casos de uso em que simplesmente não funcionará, especificamente se você fizer um shutdown / boot vs. um reboot.
Bugs
datapoint # 1
Um desses problemas no Debian é coberto aqui, intitulado: cron: @reboot jobs não são executados . Isso parece ter entrado no Ubuntu, o que não posso confirmar diretamente.
ponto de dados # 2
A evidência do bug no Ubuntu parece ser confirmada aqui neste SO Q & A intitulado: @ reiniciar o cronjob não está sendo executado .
trecho
comment #1: .... 3) your version of crond may not support @reboot are you using vix's crond? ... show results of crontab -l -u user
comment #2: ... It might be a good idea to set it up as an init script instead of relying on a specific version of cron's @reboot.
comment #3: ... @MarkRoberts removed the reboot and modified the 1 * * * * , to */1 * * * * , problem is solved! Where do I send the rep pts Mark? Thank you!
A resposta aceita em Q & A também teve este comentário:
Seems to me Lubuntu doesn't support the @Reboot Cron syntax.
Evidência adicional
ponto de dados # 3
Como evidência adicional, havia essa discussão de que alguém estava tentando a mesma coisa e ficando frustrada por não ter funcionado. É intitulado: Tópico: Cron - @reboot jobs not working .
trecho
Re: Cron - @reboot jobs not working
Quote Originally Posted by ceallred View Post This is killing me... Tried the wrapper script. Running manually generates the log file... rebooting and the job doesn't run or create log file.
Syslog shows that CRON ran the job... but again, no output and the process isn't running. Jul 15 20:07:45 RavenWing cron[1026]: (CRON) INFO (Running @reboot jobs) Jul 15 20:07:45 RavenWing CRON[1053]: (ceallred) CMD (/home/ceallred/Scripts/run_spideroak.sh > /home/ceallred/Scripts/SpiderOak.log 2>&1 &)
It's seems like cron doesn't like the @reboot command.... Any other ideas?
Ok ... Parcialmente resolvido. Vou marcar este como resolvido e começar um novo tópico com o novo problema .....
Acho que a resposta foi que meu diretório pessoal criptografado não estava montado quando o CRON estava tentando executar o script (armazenado em / home / username / scripts). Movido para / usr / scripts e a tarefa é executada conforme o esperado.
Então, agora parece ser um problema de spideroak. O processo é iniciado, mas quando o processo de inicialização é concluído, ele desaparece. Eu estou supondo uma queda por algum motivo .... Novo tópico para perguntar sobre isso.
Obrigado por toda a ajuda!
Uma vez que este usuário acima descobriu seu problema, ele conseguiu fazer com que @reboot
trabalhasse na entrada crontab de um usuário.
Não tenho certeza de qual versão do cron é usada no Ubuntu, mas isso parece indicar que o usuário pode usar @reboot
também, ou que o bug foi corrigido em algum momento nas versões subseqüentes do cron.
ponto de dados # 4
Eu testei no CentOS 6 o seguinte e funcionou.
Exemplo
$ crontab -l
@reboot echo "hi" > /home/sam/reboot.txt 2>&1
Eu reiniciei o sistema.
$ sudo reboot
Após a reinicialização.
$ cat reboot.txt
hi
Retire
- Esse recurso parece ser suportado para entradas crontab do sistema e do usuário.
- Você precisa ter certeza de que é suportado / funcionando em sua distro e / ou versão do pacote cron.
Para saber mais sobre como o mecanismo real funciona para @reboot
, encontrei este post do blog que discute as entranhas. É intitulado: @reboot - explicando a mágica simples do cron .
Depuração de crond
Você pode aumentar a verbosidade de crond
adicionando o seguinte a este arquivo de configuração em distros baseadas no RHEL / CentOS / Fedora.
$ more crond
# Settings for the CRON daemon.
# CRONDARGS= : any extra command-line startup arguments for crond
CRONDARGS="-L 2"
Os níveis válidos são 0, 1 ou 2. Para reverter esse arquivo de volta ao seu nível de registro padrão, simplesmente remova o "-L 2"
quando acabar de depurar a situação.