關於linux下crontab下腳本執行時,獲取的值不正確

本次是因爲需要創建定時任務,判斷SNMP服務的狀態。

通過以下代碼進行判斷

tmp=`/etc/init.d/snmpd status`
snmpd_status=`echo $tmp | grep -Eo "running" `
if [ $snmpd_status = "running" ] 
then
    snmpd_status="running"
else
    snmpd_status="stop"
fi
echo $snmpd_status

注:系統爲red hat 5.7和6.5

現在snmpd服務是正常運行中的。

我通過手動執行該腳本,得到的結果是running

但是隻要放到crontab,執行出來的就是stop

很是奇怪

後來,我在腳本里把每一個變量都打印出來看,發現crontab運行的言語環境爲中文。

但是我export出來的明顯是英文環境

一開始我沒有想到這個,因爲我手動執行和crontab使用的都是root賬號


之後,我通過在腳本前面加入export LENG="en_US",將腳本的執行環言語定爲英文後,執行的結果正常了。


對於環境變量中的言語變量,不知道爲什麼會出現在這樣的情況,有時間去研究下。如果有哪位大神知道的,請指點一二

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章