1. 程式人生 > >解決命令行執行shell腳本成功,但crontab執行失敗

解決命令行執行shell腳本成功,但crontab執行失敗

ges config 腳本監控 由於 data 路徑 amp 導致 bsp

實際生產案例

生產機房自建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執行失敗