我正在学习如何使用 cron。我在 crontab 中写了一些简单的代码
# m h dom mon dow command
*/1 * * * * echo "1 minute"> ~/Document/cronoutput
我期望它每分钟都会打印这些单词,但它没有。然后我检查页面。我运行以下命令
ps -ef | grep cron | grep -v grep
它返回
root 21430 1 0 13:24 ? 00:00:00 cron
几秒钟后,我再次重新运行命令:
root 21430 1 0 13:24 ? 00:00:00 cron
我想 cron 不会计算经过的时间,因为它总是显示 00:00。
可能是什么问题以及如何解决它?
答案1
你已经猜对了一半,但是你的语法不正确。要每分钟运行一次 cronjob,请在每个字段中输入星号
# m h dom mon dow command
* * * * * echo "1 minute"> ~/Document/cronoutput
如果您查看syslog
日志,您可能会看到类似以下内容的错误syntax error: this crontab will be ignored
您使用的语法有效,但并非每分钟都有效。
每2小时一次
# m h dom mon dow command
0 */2 * * * /path-to-script
每2天一次
# m h dom mon dow command
0 0 */2 * * /path-to-script
每2个月一次
# m h dom mon dow command
0 0 0 */2 * /path-to-script
答案2
在目录中尝试相同的操作/tmp
,它必须有效:
*/1 * * * * echo "1 minute" > /tmp/cronoutput
如果您尝试从命令行执行命令,它会因权限问题而拒绝您。