2013年12月24日 星期二

cron 的一些.. run as XXX 還有環境

cron 是定時執行的 daemon。
命令是在; /etc/crontab
在crontab 中可以指定以哪一個 user 的身份來 run command
但是並不包含該 user 環境變數。

所以 run 起來會和真的以該user run 該 script 的結果不同。

為了解決這個問題,
可以在 command script 的開頭加入: . .profile

test result . 判斷執行成功或失敗

在 shell script 中,需要知道這個 command 執行成功或失敗。
$?
來代表

例如: cd mydir if [ "$?" -ne "0" ]; then echo failed else echo success fi
0 代表成功。



另外,有要用 pipe log ,又要判斷的情況。
例如: make -j4 2>&1 | tee makelog 這時候用 $? 就會是 tee 這個 command 執行的結果,不是 make 的

在bash, 可以用 ${PIPESTATUS[0]} 來代表 make -j4 2>&1 | tee makelog if [ "${PIPESTATUS[0]}" -ne "0" ]; then echo failed else echo success fi