今天在改otter的时候,发现了一个crontab的问题。一直以为我们的脚本没有问题,但是在vilab
跑的时候总是出问题。
手工运行脚本没有问题,但是crontab却有问题。不解!
我的脚本是每半个小时去统计流量的信息,但是半个小时之后,我发现那个文件是空的,不解!
手工运行脚本,统计没有问题,文件有内容。
但是半个小时之后,我发现按照脚本运行,那个文件会备份。结果备份文件有内容,但是新生成的文件
大小还是0。郁闷!
思考中。。。。。。
就是脚本中iptables-save这一句有问题,问题在那里呢?没有执行,不可能后面的语句都执行了。
难道是执行出错了~~~
肯定是运行出错了。问题在哪里呢?难道是路径问题?
crontab下面的脚本中有时候,需要以全路径来指定命令。iptables-save换成/sbin/iptables-save就OK了。
实际上,这个问题是因为crontab指定的人物是由cron这个系统用户来运行的,她找不到一些系统命令,是因为它的
$PATH的问题。
解决这个问题下面几种方法:
1、在脚本中使用全路径
2、在crontab中指定任务的时候,使用/bin/sh xxx.sh
3、修改代码,给cron用户的$PATH增加一些路径
下面是从ChinaUnix上面摘录的一段话:
crontab -e 与修改 /etc/crontab 所用的格式不一样,后者需要指定执行身份,但是前者不用。
另外一般不会鼓励去改 /etc/crontab,而会使用 crontab -e 来管理比较单纯方便。
一般用crontab -e改用户的cron,或者直接编辑/var/spool/cron/用户
具体的任务一般不放在/etc/crontab中的
阅读(1550) | 评论(0) | 转发(0) |