É necessário reiniciar o cron ou crond após cada nova adição ou modificação do cronograma?

29

Quando agendar um trabalho, alguns parecem ser aplicados imediatamente, enquanto outros após uma reinicialização. Portanto, é recomendável reiniciar cron( crond) após adicionar um novo trabalho cron? Como fazer isso corretamente (especialmente em um sistema Debian), e isso deve ser feito com sudo(como sudo service cron restart) mesmo para o dos usuários normais?

Eu tentei:

/etc/init.d/cron restart

que parece não funcionar (nem funciona /etc/init.d/cron stopnem service cron stop) e é concluído com o código de retorno 1.

Aqui está uma parte da saída da mensagem:

Como o script que você está tentando chamar foi convertido em um trabalho Upstart, você também pode usar o utilitário stop (8), por exemplo, stop cron stop: Rejeitado enviar mensagem, 1 regras correspondentes; type = "method_call", remetente = ": 1.91" (uid = 1000 pid = 3647 comm = "stop cron") interface = "com.ubuntu.Upstart0_6.Job" member = "Stop" error name = "(unset)" request_reply = "0" destination = "com.ubuntu.Upstart" (uid = 0 pid = 1 comm = "/ sbin / init")

(o que isso significa?)

preciso
fonte

Respostas:

18

Não, você não precisa reiniciar cron, ele notará as alterações nos seus arquivos crontab ( /etc/crontabou no arquivo crontab dos usuários).

No topo do seu / etc / crontab você provavelmente possui (se você tiver a implementação Vixie crondesse IIRC é a do Debian):

# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.

O motivo pelo qual você pode não ver mudanças específicas implementadas é se você adicionar itens, por exemplo, /etc/cron.dailye a execução diária já ocorreu.

A mensagem que você recebe é porque você usa uma maneira antiga de reiniciar o cron no seu sistema. A maneira recomendada (mas não necessária se você apenas editar arquivos cron) é:

 restart cron

Obviamente, é necessário reiniciar para ver os efeitos de um trabalho cron do @reboot

Timo
fonte
não foi um trabalho de reinicialização, mas a cada n minutos de trabalho agendado .. e a reinicialização parece funcionar com o sudo com as formas antiga e nova .. mas não para um usuário normal ..
precisa
Como você edita o crontab? Como usuário com crontab -e?
Timo
sim .. crontab -eé o que eu uso ..
precisa
Você tem Vixie Cron (veja man cron-> Nome)
Timo
1
Parece que apenas salvar as alterações não é suficiente e os trabalhos agendados se aplicam somente depois que o editor de texto (eu uso nano) também é fechado! ..e talvez isso tenha causado a confusão ...
precisa
3

Uma reinicialização pode não ser necessária. Como eu disse nos meus comentários, o editor de texto que você usou (aquele designado para editar tarefas do cron) para editar a tarefa precisa ser fechado ; apenas salvar o conteúdo não é suficiente . (Foi o que experimentei. Editar tarefas via nanoe salvar com Ctrl+ Ocom o arquivo ainda aberto não aplica as edições imediatamente, mas somente depois que o editor é fechado com Ctrl+ X.)

E, como mencionado nesta resposta (por terdon ), o daemon cron checaria , a cada minuto, para ver se algum trabalho deve ser executado e acionar aqueles que precisam .

preciso
fonte