Isso pode ser um tópico um pouco confuso, porque existem diferentes implementações do cron. Também houve vários bugs que quebraram esse recurso e também existem alguns casos de uso em que ele simplesmente não funciona, especificamente se você fizer um desligamento / inicialização versus uma reinicialização.
Insetos
ponto de dados # 1
Um desses erros no Debian é abordado aqui, intitulado: cron: @reboot jobs não são executados . Isso parece ter entrado no Ubuntu também, o que não posso confirmar diretamente.
ponto de dados # 2
A evidência do bug no Ubuntu parece estar confirmada aqui nesta sessão de perguntas e respostas, intitulada: @reboot cronjob não em execução .
excerto
comment # 1: .... 3) sua versão do crond pode não suportar @reboot você está usando o crix do vix? ... mostrar resultados do usuário crontab -l -u
comment # 2: ... Pode ser uma boa ideia configurá-lo como um script init em vez de confiar em uma versão específica do @reboot do cron.
comentário # 3: ... @MarkRoberts removeu a reinicialização e modificou o 1 * * * *, para * / 1 * * * *, o problema foi resolvido! Para onde envio os representantes Mark? Obrigado!
A resposta aceita nas perguntas e respostas também teve este comentário:
Parece-me que o Lubuntu não suporta a sintaxe @Reboot Cron.
Evidência adicional
ponto de dados # 3
Como evidência adicional, havia esse tópico de que alguém estava tentando a mesma coisa e ficava frustrado por não ter funcionado. O título é: Tópico: Cron - os trabalhos do @reboot não estão funcionando .
excerto
Re: Cron - os trabalhos @reboot não funcionam
Citação Postado originalmente por ceallred Ver Post Isso está me matando ... Tentei o script do wrapper. A execução manual gera o arquivo de log ... reinicializando e o trabalho não é executado ou cria um arquivo de log.
O Syslog mostra que o CRON executou o trabalho ... mas, novamente, nenhuma saída e o processo não está sendo executado. 15 de julho 20:07:45 RavenWing cron [1026]: (CRON) INFO (executando trabalhos do @reboot) 15 de julho 20:07:45 RavenWing CRON [1053]: (ceallred) CMD (/ home / ceallred / Scripts / run_spideroak). sh> /home/ceallred/Scripts/SpiderOak.log 2> & 1 &)
Parece que o cron não gosta do comando @reboot .... Alguma outra idéia?
Ok ... parcialmente resolvido. Vou marcar este como resolvido e iniciar um novo tópico com o novo problema .....
Acho que a resposta foi que meu diretório pessoal criptografado não foi montado quando o CRON estava tentando executar o script (armazenado em / home / nome de usuário / scripts). Movido para / usr / scripts e o trabalho é executado conforme o esperado.
Então agora parece ser um problema de aranha-aranha. O processo é iniciado, mas quando o processo de inicialização é concluído, ele se foi. Estou adivinhando um acidente por algum motivo .... Nova discussão para perguntar sobre isso.
Obrigado por toda a ajuda!
Depois que o usuário acima descobriu seu problema, ele conseguiu @reboot
trabalhar com a 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 também pode usar @reboot
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 então reiniciei o sistema.
$ sudo reboot
Após a reinicialização.
$ cat reboot.txt
hi
Aprendizado
- Esse recurso parece ser suportado para entradas do sistema e do usuário crontab.
- Você precisa garantir que ele seja suportado / funcione em sua distribuição específica e / ou versão do pacote cron.
Para saber mais sobre como o mecanismo real funciona, @reboot
me deparei com este post do blog que discute as entranhas. É intitulado: @reboot - explicando a mágica simples do cron .
Crond de depuração
Você pode aumentar a verbosidade crond
adicionando o seguinte a este arquivo de configuração nas distros baseadas em 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 para o nível de log padrão, remova-o "-L 2"
quando terminar de depurar a situação.