
У меня есть система лицензирования для моего скрипта. Я хочу проверять наличие лицензии каждые 5 минут.
Я добавил свой licensechecker.sh
файл crontab следующим образом:
*/5 * * * * sh /path/to/file/licensechecker.sh
Но, похоже, это не работает. Я проверил это с помощью:
*/1 * * * * reboot
Но мой VPS не перезагрузился.
Я проверил логи:
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)
решение1
Cron не использует PATH вашего пользователя,имеет свою собственную, жестко закодированную $PATH
переменнуюкоторый установлен в /usr/bin:/bin
. Таким образом, только команды, которые хранятся в одном из этих двух каталогов, могут быть запущены по имени. Для всех остальных вам нужен полный путь к исполняемому файлу. Поскольку ваша reboot
команда находится в /sbin
, вам нужна эта строка:
*/1 * * * * /sbin/reboot
Однако это на самом деле не очень хороший способ тестирования, так как вам будет очень трудно удалить эту строку, как только она заработает, так как ваша машина будет перезагружаться каждую минуту. Вместо этого вы можете провести тестирование с помощью безопасной команды, например:
*/1 * * * * /bin/date > /tmp/date.log
А затем просто проверьте, что файл /tmp/date.log
создан и дата в нем печатается каждую минуту.