我有如下设置,但从未执行过。
$ chmod +x /var/tmp/myscript.sh
$ vim /var/tmp/crontab.sh;
* * * * * sleep(10); /var/tmp/myscript.sh
$ crontab /var/tmp/crontab.sh
Run Code Online (Sandbox Code Playgroud)
现在只是,注意到它不起作用。我究竟做错了什么?
$ 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)
Run Code Online (Sandbox Code Playgroud)
跟进:
$ 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)
Run Code Online (Sandbox Code Playgroud)
实际上,使用 crontab 的最佳方法是使用 crontab 本身:
crontab -l # 列出当前 crontab 条目
crontab -e #编辑cron表
一旦您完成编辑 crontab(通过“crontab -e”),它就会被激活,并且每当设置为触发时都会触发所设置的内容。
请注意,机器必须正在运行才能让 crontab 工作。如果你想要更灵活的东西,你可以看看 anacron(8)。
sleep
不将参数放在括号中(就像在 C 中一样),所以它应该是
* * * * * sleep 10; /var/tmp/myscript.sh
Run Code Online (Sandbox Code Playgroud)
在将命令输入到cron
;) 之前,请始终在系统 shell 中测试命令。