Eu criei um script que adicionará um cron job com base nas especificações do usuário, mas não funcionará porque preciso atualizar o cron todas as vezes Anexei um trabalho no crontab. Existe uma maneira de atualizar o cron sem interromper o processo?
Resposta
Contanto que seu o script usa para adicionar e excluir especificações de trabalho para o usuário, não haveria necessidade de reiniciar o cron
daemon.
A página do manual do cron do AIX 7.1 diz :
Quando você faz alterações para os arquivos crontab usando o comando , uma mensagem indicando a mudança é enviada para o cron daemon.
Veja também o manual .
O fluxo geral de ações que seu script faria pegue:
- Obtenha o crontab do usuário em um arquivo de texto usando
crontab -l >crontab.txt
. - Manipule o arquivo de texto adicionando, removendo ou alterando as especificações dos trabalhos.
- Carregue o crontab do usuário com as novas especificações usando
crontab crontab.txt
.
Os comandos nas primeiras e últimas etapas precisam ser executados como o usuário (a primeira etapa também pode ser executada como crontab -l username >crontab.txt
como por exemplo root).
Isso funcionaria em qualquer Unix usando cron
.
Comentários
Resposta
AIX 7.1 a página do manual do cron diz :
O O cron daemon lê o arquivo de configuração quando é ativado e quando recebe o sinal de desligamento.
Portanto, apenas kill -HUP cron_pid
deve fazê-lo.
Comentários
- Já tentei isso, mas gostaria de atualizar minha configuração sem interromper o processo
- @Shan O comando
kill
envia sinais para o processo. Em geral, os processos podem ser mortos, ou seja, eles realmente morrem, recebendo um sinal. Mas no caso decron
processar, ele lida com o sinal, não morre e relê sua configuração. - A parte da página do manual que você citou é referindo-se ao cron ' s arquivo de configuração ,
/etc/cronlog.conf
, não aos próprios arquivos crontab. - Não posso fazer disso uma resposta para esta pergunta; quando edito manualmente um arquivo crontab e o cron HUP, o novo cron job não é executado.
- @JeffSchaller está correto, você deve matar -9 cron_pid ou usar crontab em um arquivo crontab como sugerido por Kusalananda na outra resposta para recarregar o crontab.
crontab -l
.