我尝试每分钟运行一个脚本(在运行 Ubuntu 16.04 的 Docker 容器上)。
/etc/echo.sh
简单地回应“嗨”这个词
cat /etc/crontab
* * * * * root /etc/echo.sh > /var/log/cron.log 2>&1
/etc/init.d/cron reload
* Reloading configuration files for periodic command scheduler cron [ OK ]
tail -f /var/log/cron.log
hi
打印一次“hi”之后,什么也没有发生。
知道原因吗?
答案1
该脚本确实每分钟运行一次,但>
每次都会截断文件。
如果文件不存在,则创建该文件;否则,打开后将其截断为空文件。
改为使用>>
来追加到文件。即便如此,有时可能很难判断文件是否只增长了一行。这就是为什么在测试类似的东西时最好使用date
而不是。echo hi
答案2
*/1 * * * * root /etc/echo.sh > /var/log/cron.log 2>&1
我认为这就是问题所在。您必须将crontab
分钟选项更改为 */1,以便每分钟运行该 bash。