
Eu tenho um sistema de licenciamento para meu script. Quero verificar se há uma licença a cada 5 minutos.
Eu adicionei meu licensechecker.sh
ao crontab assim;
*/5 * * * * sh /path/to/file/licensechecker.sh
Mas parece que não está funcionando. Eu testei com:
*/1 * * * * reboot
Mas meu VPS não reiniciou.
Eu verifiquei os logs:
Sep 3 15:42:01 eyup CRON[23368]: (root) CMD (reboot)
Sep 3 15:42:01 eyup CRON[23366]: (CRON) info (No MTA installed, discarding output)
Sep 3 15:43:01 eyup CRON[23675]: (root) CMD (reboot)
Sep 3 15:43:01 eyup CRON[23674]: (CRON) info (No MTA installed, discarding output)
Sep 3 15:44:01 eyup CRON[24023]: (root) CMD (reboot)
Sep 3 15:44:01 eyup CRON[24022]: (CRON) info (No MTA installed, discarding output)
Sep 3 15:45:01 eyup CRON[24336]: (root) CMD (reboot)
Responder1
Cron não usa o PATH do seu usuário,ele tem sua própria $PATH
variável codificadaque está definido como /usr/bin:/bin
. Portanto, apenas comandos armazenados em um desses dois diretórios podem ser executados por nome. Para todos os outros, você precisa do caminho completo para o executável. Como seu reboot
comando está em /sbin
, você precisa desta linha:
*/1 * * * * /sbin/reboot
No entanto, esta não é realmente uma boa maneira de testar, pois você terá muita dificuldade em remover esta linha quando ela funcionar, pois sua máquina será reinicializada a cada minuto. Em vez disso, você pode testar usando um comando seguro como este:
*/1 * * * * /bin/date > /tmp/date.log
E aí é só verificar se o arquivo /tmp/date.log
foi criado e a data é impressa ali a cada minuto.