20100429

Crontab 環境變數,這算是很重要的基本觀念,所以不能忘~~~

不廢話,如何看到Crontab啟動時所帶的環境變數
要觀察crontab 的話需要透過 crontab來啟動sh
vi /tmp/x.sh
export > /tmp/xx.txt
crontab -e
*/1 * * * * /tmp/xx.txt #每分鐘跑一次
cat /tmp/xx.txt
export HOME='/root'
export LOGNAME='root'
export PATH='/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin'
export PWD='/root'
export SHELL='/bin/sh'
如此一來就看到Crontab了
但也非常的清楚的看到,寫好的sh不會自己套上Bash的環境變數
所以會需要用到的環境變數需要在sh內就定義好
免得發生跑出來的結果不是自己預期的效果
比如說SH中有包含中文字,sh處理完後變成亂碼
像這樣就可以在sh的內容中將LANG="en_US.UTF-8" export
export LANG="en_US.UTF-8"
這樣亂碼的問題就解除了

當然也可以寫在/etc/crontab 裡面
方法1
vi /etc/crontab
LANG="en_US.UTF-8" #加在開頭的地方
方法2
vi /etc/crontab
* 17 * * 1-5 root export LANG="en_US.UTF-8";/tmp/x.sh #加在row也可以
差別是
方法1:所有/etc/crontab內的row都會套用到這個環境變數
方法2:只有該row套用這個環境變數

這算是很重要的基本觀念,所以不能忘~~~

謝謝 Tsung 前輩
參考來源Crontab 基本環境變