我有如下设置但它从未执行过。
$ chmod +x /var/tmp/myscript.sh
$ vim /var/tmp/crontab.sh;
* * * * * sleep(10); /var/tmp/myscript.sh
$ crontab /var/tmp/crontab.sh
现在,我注意到它不起作用。我做错了什么?
$ grep CRON /var/log/syslog
Nov 28 15:20:01 sun CRON[1768]: (sun) CMD (sleep(10);/var/tmp/myscript.sh)
Nov 28 15:20:01 sun CRON[1766]: (CRON) error (grandchild #1768 failed with exit status 2)
Nov 28 15:20:01 sun CRON[1766]: (CRON) info (No MTA installed, discarding output)
跟进:
$ vim /var/tmp/crontab.sh
* * * * * sleep 10; /var/tmp/myscript.sh>/dev/null 2>&1
$ tail -f /var/log/syslog | grep CRON
Nov 28 15:50:02 sun CRON[2301]: (sun) CMD (sleep 10; /var/tmp/myscript.sh>/dev/null 2>&1)
Nov 28 15:51:01 sun CRON[2312]: (sun) CMD (sleep 10; /var/tmp/myscript.sh>/dev/null 2>&1)
答案1
实际上,使用 crontab 的最佳方式是使用 crontab 本身:
crontab -l # 列出当前的 crontab 条目
crontab -e # 编辑 cron 表
一旦您完成编辑 crontab(通过“crontab -e”),它就会被激活,并且会在设置为触发时触发所设置的任何操作。
注意,机器必须处于运行状态,crontab 才能工作。如果您想要更灵活的方法,可以查看 anacron(8)。
答案2
sleep
不接受括号中的参数(如 C 语言中),因此应该是
* * * * * sleep 10; /var/tmp/myscript.sh
在输入命令之前,务必在系统 shell 中测试该命令cron
;)。