cron 一个简单的测试脚本,包含 debian、screen 和 ec2



我正在尝试在这里学习 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 作业中使用完整路径。

最新更新