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:

  1. Obtenha o crontab do usuário em um arquivo de texto usando crontab -l >crontab.txt.
  2. Manipule o arquivo de texto adicionando, removendo ou alterando as especificações dos trabalhos.
  3. 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

  • E se houver empregos existentes? Devo colocá-lo no mesmo arquivo de texto primeiro e depois anexar o novo trabalho antes de carregá-lo no crontab?
  • @Shan Como mencionei, você obteria o crontab atual para o usuário e, em seguida, modificaria isso antes de carregá-lo novamente. Portanto, sim, você acrescentaria novos trabalhos ao arquivo produzido por crontab -l.

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 de cron 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.

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *