由于我的程序需要改动比较多,想想就懒得去改了,有没有简单的办法一劳永逸呢?想到除了crontab以外其他地方都没问题,估计是crontab的环境变量出了问题,没有系统的环境变量,所以必须加上绝对路径。于是写了一个小程序测试了一下,果然如此。
随后google之,发现crontab启动加载的环境变量很少,root的是/etc/crontab,也可以在/var/spool/cron/root查看,不过却发现似乎crontab一点点环境变量都没继承进去,于是自己加上环境变量试试看,ok。于是直接把# env | grep ^SHELL, # env | grep ^PATH, env | grep ^HOME这些环境变量直接放入
SHELL=/bin/bash
PATH=/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:.:/root/bin
HOME=/root
0 1 * * * /xxx/....
0 1 * * * /xxx/....
然后运行,正确。
总结:绝对路径,或者,环境变量。

没有评论:
发表评论