我正在尝试在这里学习 cron(对不起,如果问题是 101!所以,我有一个像这样的小测试脚本:
#! /bin/sh
# /home/admin/js/test.sh
#
SHELL=/bin/bash
source ~/.bashrc
# Some things that run always
screen -d -r myscreen
touch /home/admin/js/testsuccess.txt
exit 0
然后我做crontab -e
并添加以下条目(我在 ec2 上运行 debian 7):
*/15 7-23 * * * root /home/admin/js/test.sh > /dev/null 2>&1
所以.. 这基本上在指定的时间内每 15 分钟运行一次。cron 似乎运行了,即当我这样做时:
grep CRON /var/log/syslog
我看到输出:
Oct 26 19:30:01 ip-16-653-987-12 /USR/SBIN/CRON[20700]: (admin) CMD (root /home/admin/js/test.sh > /dev/null 2>&1)
..但我在目录中看不到touch
新文件。不知道这里到底发生了什么 - 任何解决这个问题的建议将不胜感激!谢谢。
问题出在 cron 条目上,您的脚本似乎工作正常。
当您执行普通crontab -e
时,您正在修改与您的用户对应的 crontab 条目。您使用的 cron 作业格式适用于直接在 /etc/crontab
中添加 crons 系统范围的情况
因此,您可以使用crontab -u user -e
为特定用户打开crontab(因为您在这种情况下的用户是root
,您需要使用sudo
运行它)并输入不带用户名的cronjob
*/15 7-23 * * * /home/admin/js/test.sh > /dev/null 2>&1
或者,您可以在/etc/crontab
中将 cron 作业添加到系统范围的 cron 作业,而不是使用 crontab -e
。
另请注意,您在脚本中使用~
可能会导致问题,请始终在 cron 作业中使用完整路径。