crontab無法執行perl指令碼 手工卻成功執行

myownstars發表於2011-02-10

crontab裡面有一個perl指令碼,但是一直執行不成功,手工呼叫perl ***.pl卻可以成功。

手工能執行成功 說明該指令碼語法以及許可權均不存在問題。
透過在crontab中設定跟蹤日誌
*、1 * * * * /home/oracle/tools/find_sql.pl >> /home/oracle/find_sql_temp.log 2>&1
可以捕獲到錯誤資訊如下
Can't exec "sendEmail": No such file or directory at /home/oracle/find_sql.pl line 39.

初步推斷此問題是由環境變數設定不正確導致的,但是perl指令碼中已經有了如下設定
$ENV{ORACLE_HOME} = "/data/oracle/product/10.2/db1";
$ENV{ORACLE_SID} = "justin";

檢視.bash_profile設定的路徑資訊
[oracle@racdg1 ~]$ echo $PATH
/home/oracle/bin:/data/oracle/product/10.2/db1/bin:/usr/lib64/qt-3.3/bin:/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin:/home/oracle/bin:/sbin/:/data/oracle/product/10.2/crs//bin:/home/oracle/tools

將其加入到perl指令碼中,crontab即可成功呼叫並執行該perl指令碼
$ENV{PATH} ="/home/oracle/bin:/data/oracle/product/10.2/db1/bin:/usr/lib64/qt-3.3/bin:/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin:/home/oracle/bin:/sbin/:/data/oracle/product/10.2/crs//bin:/home/oracle/tools";

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/15480802/viewspace-686976/,如需轉載,請註明出處,否則將追究法律責任。

相關文章