linux 之crontab 定时执行失败原因总结

今天写了一个nginx日志分割的简单脚本,发现手动执行脚本可以将日志成功分割,但是使用crontab定时任务就会执行失败。

然后自己写了一个只有一句话的shell脚本,发现一样的问题,然后就开始根据问题找原因:

1:是不是crontab的权限不对。然后使用了 ls /etc/init.d/crontab -lh 查看权限。发现用户组的对的,root组。

2:网上说很大可能的原因是环境变量的问题,然后,自己输出了PATH的所有环境变量,然后加入到脚本开头第二行的位置,依然不行。

3:查看crontab的执行状态。/etc/init.d/cron status 发现定时在执行。

4:定时不使用脚本,直接在定时后面直接写命令。发现是可以执行的,这就有点怪了。

手动执行脚本没问题,定时执行脚本有问题。定时执行脚本命令没问题。这是哪里出了问题呢?这说明脚本的白那些是没有问题的,问题处在了crontab定时上,然后加了环境变量的的文件绝对路径,抱着试一试的心态,结果真的成功了。具体操作如下:

*/1 * * * * /etc/profile /bin/sh path/test.sh

/etc/profile是加的环境变量的文件。

作者:first_semon
         
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。如有问题,欢迎交流
原文地址:https://www.cnblogs.com/first-semon/p/12955376.html