![每 5 分钟运行一次命令](https://linux22.com/image/1189150/%E6%AF%8F%205%20%E5%88%86%E9%92%9F%E8%BF%90%E8%A1%8C%E4%B8%80%E6%AC%A1%E5%91%BD%E4%BB%A4.png)
我的脚本有一个许可系统。我想每 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
是否创建并且每分钟是否打印日期。