2007年1月29日

在 crontab 中如何取得正確的環境變數?

上週五透過 Perl 完成了使用者針對某項服務使用次數的資料收集命令稿,之後就丟到 crontab 中去定時執行。怎知今早一檢查發現該命令稿根本沒能正確執行,查了很久終於確認是因為 cron 服務中不會取得在 /etc/profile 中所設定的各種環境變數。

解決的方式其實很簡單:直接在 crontab 設定檔中指定即可。例如在編輯 crontab 時輸入以下內容,則所有定時被啟動的作業(例如 dataCollect.pl 命令稿)都會收到相關的環境變數設定。

TNS_ADMIN=/opt/oracleinstant_10_2
LD_LIBRARY_PATH=/opt/instantclient_10_2

* * * * /home/collect/dataCollect.pl

其實我想過在 .pl 檔中自行設定,不過這會出現該環境變數未定義的警告訊息,而且也不能產生對應的作用。