在crontab中執行shell腳本的問題


crontab中記錄的編寫比較簡單,下面是一個示例:

0 2 * * * /app/tpssapp/ftpsrc/tools/statTables/statTables.sh > /app/tpssapp/ftpsrc/tools/statTables/statTables.log

表示每天2點執行/app/tpssapp/ftpsrc/tools/statTables/statTables.sh。
這里有個問題是,有時候,因為shell腳本的問題,導致在自己在命令行中運行的shell腳本和crontab中運行的效果不一樣。這個問題的原因就是,在shell命令中shell腳本使用了系統的環境變量,一個用戶的命令行,起碼讀取的2個環境變量配置文件:/etc/profile和${HOME}/.bash_profile。如果shell腳本在crontab執行出現問題,原因就是它在執行的時候,沒有加載這兩個環境變量配置文件。所以,我們需要在shell腳本中自己去指定讓shell去設定環境變量。
代碼如下:

#! /bin/sh
echo `pwd`
echo `id`
USER_HOME=/home/`whoami`
. /etc/profile
if [ -f ${USER_HOME}/.bash_profile ];
then
       echo ${USER_HOME}/.bash_profile
        . ${USER_HOME}/.bash_profile
fi

BASE_PATH=/app/tpssapp/ftpsrc/tools/statTables
cd ${BASE_PATH}
java -jar statTables-v2.0.jar

腳本上面的部分,可以作為一個通用的東西,配置在每一個腳本中。


免責聲明!

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



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