解決命令行執行shell腳本成功,但crontab執行失敗
阿新 • • 發佈:2017-08-29
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執行失敗