解決命令行執行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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM