我试图消除许多常见错误,
确保PATH可用于cron
在crontab文件的末尾有一个结尾
时区通过以下方式设置:
cd /etc cp /usr/share/zoneinfo/Asia/Singapore /etc/localtime
运行date
bash,我得到:
Tue Sep 17 15:14:30 SGT 2013
为了检查cron是否使用同一时间,
* * * * * date >> date.txt
在date.txt中给出了相同的日期输出。
这是我要执行的脚本:
event.sh
:
#!/usr/bin/env bash
echo data > /root/data.txt
使用crontab -e
,下面的行有效,
* * * * * /bin/bash /root/event.sh >/tmp/debug.log 2>&1
15 * * * * /bin/bash /root/event.sh >/tmp/debug.log 2>&1
但是,当我尝试其他一些参数时,希望它能在下午2.50运行:
50 14 * * * /bin/bash /root/event.sh >/tmp/debug.log 2>&1
要么
50 14 * * * (cd /root ; ./event.sh >/tmp/debug.log 2>&1)
它不再起作用。我的小时参数似乎有问题。在/tmp/debug.log
文件中也找不到任何内容。
解:
原来,对TZ进行更改后,我必须重新启动cron服务。
也可以做一些小的修改,例如
—
Rahul Patil
* * * * * /bin/bash /root/event.sh >/tmp/debuge.log 2>&1
您说时区设置正确,但是您绝对确定吗?尝试添加一个条目,例如,
—
CVn 2013年
* * * * * date
并确认它date
显示了预期的时间。请注意,在crontab中设置TZ环境变量可能不会影响cron守护程序本身使用的时区,但是会影响通过cron启动的进程,因此,如果您在crontab中设置TZ,建议您暂时将其注释掉并使用系统时钟的时区(如果您是单引导Linux,则可能是UTC,但可能是本地时间)来设置时间。
您错过了重点,@ adsisco。我要求您删除crontab中可能存在的任何TZ指令,然后重试。这将使日期与cron守护程序本身具有相同的TZ执行,让我们看到cron希望在哪个时区输入时间字段。/etc/localtime仅影响显示,而不影响系统时钟,我怀疑它会影响cron。通过执行此测试,我们可以确保您的问题与时区无关(坦白地说,这对我来说似乎是这样)。
—
CVn
实际上,我认为我只是通过重新启动系统来解决了它。...可能是在更改TZ之后必须重新启动cron服务吗?@MichaelKjörling。谢谢!为我指出可能的时区问题。
—
adsisco 2013年
~/event.sh
尝试/home/username/event.sh