crontab遇到的问题
最近实习用到crontab,之前还一直不知道,以为定时执行都要靠程序内部计时呢,原来强大的linux还自带了这么个实用的工具,真是孤陋寡闻啊。
通常使用crontab来完成一些需要定时启动的任务。通常命令就使用两个参数,crontab -e编辑或添加任务,crontab -l查看现有任务。如果crontab执行失败还会自动发邮件提醒用户,邮件可以使用mail命令查看
最近在使用crontab的过程中碰到过几个问题,这里总结一下
1. 如果将crontab任务开始执行的时间设置得离当前时间太近的话,很有可能触发不了。
网上搜索了下,据说是crontab是定时每个一定时间去读取配置的,如果太近可能会正好错过,所以尤其在测试的时候最好将时间设置晚几分钟,停下来去做做其他事情,等到时候再看结果。
2. crontab运行时的环境变量问题。
事情是这样的,我们服务器上有2个版本的python,一个2.4一个2.7,我的环境变量设置下,默认是执行python2.7的。而是用crontab执行程序时确是python2.4。由此得知crontab执行时的环境变量和用户本身的设置不同,虽然说crontab是针对不同用户的,用户无法看到其他用户的crontab任务。所以执行的任务如果依赖环境变量,那么最好要在shell脚本最前面加上载入环境变量的命令,或者直接使用完整路径。