Estou executando em algumas distros diferentes do Linux (Fedora 11, CentOS 5 e SuSE 10.2) e frequentemente encontro um problema em que um novo script que eu quero executar como um trabalho cron funciona bem quando chamado diretamente na linha de comando, mas falha quando chamado do cron devido a pequenas variações no PATH ou em outras variáveis de ambiente necessárias.
Existe uma maneira de testar a execução de um script individual como se estivesse sendo executado no cron, sem precisar executar o crontab inteiro ou usar run-parts para executar o diretório cron.daily / .hourly etc. inteiro? Acho que posso editar temporariamente meu crontab para executar o script nos próximos minutos, mas prefiro ter uma solução mais autônoma para não arriscar estragar o crontab.
Se eu estiver executando um trabalho cron agendado individualmente (uma linha separada no crontab), eu o agendarei para cada minuto ou outro momento enquanto o estiver testando. Depois de testado, editarei a linha crontab para que funcione na frequência que desejo.
Como observação, se eu quiser testar se o cron está funcionando corretamente e enviar os resultados por e-mail para o endereço correto (MUITO importante), adicionarei a seguinte linha ao meu / etc / crontab:
Executa a cada minuto e tenta fazer um
ls
em um diretório que não existe. Deve enviar uma mensagem de falha a cada minuto. Eu comento a linha quando a trabalho.Voltando à sua pergunta: você provavelmente não deseja modificar o trabalho cron existente para que seja executado com freqüência, tanto porque há uma chance de esquecer de alterá-lo novamente, quanto porque executando seu cron.hourly, cron.daily ou cron. pode ter efeitos colaterais, dependendo do que você tem lá. Para garantir que você esteja executando o script no mesmo ambiente em que ele será chamado quando for chamado do cron, recomendo modificar meu truque "ls" acima:
Adicione uma linha ao seu crontab para executar o script diretamente:
Dessa forma, você pode executá-lo quantas vezes for necessário para testá-lo.
fonte
Não conheço uma solução mais direta, mas você pode criar um usuário (digamos, crontest) com privs no seu script e usar o crontab específico do usuário para o usuário 'crontest' para testar o script editando para que o script seja executado nos próximos dois minutos.
fonte