Pergunta

Eu estou tentando escrever uma interface web para Crontab em Ruby usando a excelente gem CronEdit. Eu fui através de código fonte crontab de Dillon Cron e descobriu que ele atualiza um arquivo específico para que o daemon irá atualizar a lista de cron durante a próxima varredura.

No homem crontab para VixieCron, ele diz:

Além disso, as verificações agendadas a cada minuto para ver se modtime de seu diretório de spool (Ou o modtime em / etc / crontab) foi alterado, e se tiver, cron irá então examinar a modtime em todos os crontabs e recarregar as que mudaram. Assim necessidade cron não ser reiniciado sempre que um arquivo crontab é modificado. Observe que o crontab (1) comando atualiza o modtime do diretório de spool sempre que muda um crontab.

Existe alguma plataforma (Ubuntu, Red Hat, ArchLinux, Mac OS X) forma independente para garantir que depois de editar manualmente o arquivo Cron, as atualizações daemon-lo sem falhar?

Foi útil?

Solução 3

Muito obrigado gnibbler e Aaron. Eu só fui através do código-fonte para ambas as gemas 'sempre' e 'cronedit' para Ruby. Ambos faz um 'crontab -' que substitui o arquivo cron existente com as entradas cron atualizados. Isso significa contrárias à minha pergunta original, essas bibliotecas fazer uso da ferramenta crontab padrão que por sua vez faria o que especificidades necessárias para atualizar o daemon.

Eu acho que o melhor independente de plataforma, e cron (Dillon, vixie, mcron etc.) forma agnóstica para atualizar o daemon é sempre usar o utilitário crontab associado. Mesmo quando a edição de programação, o programa do usuário deve passar o novo arquivo cron para o utilitário crontab que faria tudo o que é exigido por essa plataforma específica / cron.

@ Marcos, obrigado pelos comentários. No entanto, eu estou tentando fornecer uma web interface simples que o usuário pode personalizar através do www assim como editar o arquivo crontab diretamente.

Muito obrigado por suas respostas!

Outras dicas

Não, não há. Se você sabe que é VixieCron, em seguida, atualizar o timestamp do diretório. Caso contrário, você pode ser capaz de fingir:. Set a variável env EDITOR Antes de chamar crontab -e (que deve trazer um editor para o crontab)

A idéia é definir o editor para algum programa que faz a mudança. crontab -e irá aguardar o editor de encerrar e reler o arquivo e dizer cron que algo mudou.

Se você tem uma versão antiga do cron, no entanto, você ainda deve reiniciá-lo. Mas duvido que você pode encontrar essas versões antigas sobre qualquer coisa que roda Linux ou Mac OS X.

Sane modernas distribuições Linux tem diretório /etc/cron.d/ onde você pode colocar a sua entrada crontab como um arquivo separado. Se bem me lembro o novo cronfile é lido dentro de 2 minutos de ser escrita

Se isto é tão importante, por que não usar uma alavanca diferente? Em outras palavras, existem duas opções:

crontab 1:. / Fazer / algum / muito / específica / coisa com parâmetros específicos que eu preciso mudar etc

crontab 2: / fazer / o que / necessita de / para / ser / feito

No nº 2, o trabalho é responsável por determinar em tempo de execução o que precisa ser feito e fazê-lo. Com este projeto, a noção de que necessitam para entender como funciona o crontab em algum nível detalhado é irrelevante.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top