hnchxy 发表于 2008-09-17 18:00

手动执行shell和crontab执行结果不同,请帮忙!

手动执行shell和crontab执行结果不同,请帮忙!

shell如下:

#!/bin/bash
lan_eth=`netstat -in |awk '{print $1'}|grep -Ev 'lo|Iface|Kernel|bond'`
for i in $lan_eth
do
   lan_status=`ethtool $i |grep Link |awk '{ print $3 }'`
   if [ x$lan_status != xyes ] ; then
      /usr/sbin/ethtool $i
      echo -e "检查结果: $i 网卡状态不正常!"
   else
       /usr/sbin/ethtool $i
      echo -e "检查结果: $i 网卡状态正常! "
   fi
done

cuci 发表于 2008-09-17 18:03

哪里不同

hnchxy 发表于 2008-09-17 19:39

手动执行结果为:网卡状态正常!crontab执行结果为:网卡状态不正常

手动执行结果为:网卡状态正常!crontab执行结果为:网卡状态不正常

lzs45 发表于 2008-09-17 20:12

手动执行和crontab结果不相同大部分都是环境变量的问题

lzs45 发表于 2008-09-17 20:51

原帖由 hnchxy 于 2008-9-17 19:39 发表 http://linux.chinaunix.net/bbs/images/common/back.gif
手动执行结果为:网卡状态正常!crontab执行结果为:网卡状态不正常

在你的shell脚本开始加上
##################
. /etc/profile
. ~/.bash_profile
##################
一般人我可不告诉他:mrgreen: :mrgreen:


#!/bin/bash
##################
. /etc/profile
. ~/.bash_profile
##################

lan_eth=`netstat -ni |awk '{print $1'}|grep -Ev 'lo|Iface|Kernel|bond'`
for i in $lan_eth
do
     lan_status=`ethtool $i |grep Link |awk '{ print $3 }'`
     if [ x$lan_status != xyes ] ; then
        /usr/sbin/ethtool $i
        echo -e "检查结果: $i 网卡状态不正常!"
     else
       /usr/sbin/ethtool $i
        echo -e "检查结果: $i 网卡状态正常! "
     fi
done

hnchxy 发表于 2008-09-17 21:45

谢谢!可以了。

:lol: 谢谢!可以了。

vermouth 发表于 2008-09-17 22:17

##################
. /etc/profile
. ~/.bash_profile
##################
加上这个的意思是,先定义好环境变量?

MMMIX 发表于 2008-09-17 22:30

原帖由 lzs45 于 2008-9-17 20:51 发表 http://linux.chinaunix.net/bbs/images/common/back.gif


在你的shell脚本开始加上
##################
. /etc/profile
. ~/.bash_profile
##################

实际上,这不是个好主意,例如说你修改了自己的一些配置信息,却影响了原来正确执行的 crontab 任务。还是在 crontab 配置文件中显式的设置它需要的环境变量吧。

MMMIX 发表于 2008-09-17 22:30

原帖由 vermouth 于 2008-9-17 22:17 发表 http://linux.chinaunix.net/bbs/images/common/back.gif
##################
. /etc/profile
. ~/.bash_profile
##################
加上这个的意思是,先定义好环境变量?
加载当前用户的环境设置。

lzs45 发表于 2008-09-18 21:29

原帖由 MMMIX 于 2008-9-17 22:30 发表 http://linux.chinaunix.net/bbs/images/common/back.gif

实际上,这不是个好主意,例如说你修改了自己的一些配置信息,却影响了原来正确执行的 crontab 任务。还是在 crontab 配置文件中显式的设置它需要的环境变量吧。

呵呵,谢谢大师,这个确实不是个好主意,不过对于刚开始学crontab的人是一个解决问题的方法,等通过这个方法找到问题所在并理解加这个的真正原因后再怎么改crontab就看个人发挥了
页: [1] 2
查看完整版本: 手动执行shell和crontab执行结果不同,请帮忙!