解决命令行执行shell脚本成功,但crontab执行失败

Posted minseo

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了解决命令行执行shell脚本成功,但crontab执行失败相关的知识,希望对你有一定的参考价值。

实际生产案例

生产机房自建PPTP客户端通过拨号连接到生产机房,但是一旦客户端网络是意外断线再重新拨号

会产生IP冲突,于是写了一个脚本监控PPTP的IP是否有多个(一般冲突以后会生成2个IP)

#!/bin/bash
#author Liuyueming
. /etc/profile                 #开始没有加这个环境变量
for i in {10..35}
do
    n=`ifconfig|grep 10.13.0.${i}|wc -l`   #循环取ip并计数
#   echo `ifconfig|grep 10.13.0.${i}`
        if [ $n -gt 1 ]                 #如果同一个ip出现两次及大于1说明ip冲突需要清除  
            then
                for network in `ip add|grep 10.13.0.$i|sed \'s#^.*global ##g\'` #取出重复ip的网卡名删除掉
                  do
                    ip addr flush $network
                  done
        fi

done

手动执行没有报错,但是放入crontab执行就会报错提示命令ifconfig not find

 

命令行执行脚本成,但crontab执行shell脚本不成功是由于两个原因导致 
解决方法 
1. 路径问题 
查看crontab中执行该脚本的路径是否正确。例如:

*/1 * * * * cd /mypath/;./my_shell.sh > /dev/null 2>&1

2. 环境变量问题导致 
在shell脚本中加入环境变量文件生效的命令,一般加在脚本的第二行: 
有两种方法可以使环境变量文件生效:

  • 方法1:
.  /etc/profile

注意: . 和 /etc/profile 空格

  • 方法2:
source /etc/profile

以上是关于解决命令行执行shell脚本成功,但crontab执行失败的主要内容,如果未能解决你的问题,请参考以下文章

shell脚本 手动执行成功,crontab执行缺少数据

Crontab定时任务中python3脚本无法运行问题解决

crontab 命令行执行成功,定时任务报错

使用crontab,让linux定时执行shell脚本

使用crontab,让linux定时执行shell脚本

Linux 定时执行shell脚本命令之crontab