2016-07-05 84 views
1

嗨下面的腳本在從命令提示符執行時工作正常,但在cron中計劃時沒有給出任何結果。請幫忙。shell腳本在crontab中安排後無法工作

#!/bin/bash 
db_mode() 
{ 
$ORACLE_HOME/bin/sqlplus -s << eof 
system/[email protected]<DB_NAME> 
SET LINES 132 
SET PAGESIZE 0 FEEDBACK OFF VERIFY OFF HEADING OFF ECHO OFF 
select open_mode from v\$database; 
exit; 
eof 
} 
state=`db_mode` 
echo $state > /home/oracle/dba/scripts/monitor/state.log 

大家好,

我安排與-l工作,似乎已經奏效。 這是我已經安排了工作,現在

*/1 * * * * /斌/慶典-l /home/oracle/dba/scripts/monitor/db_mode.sh

早些時候,我安排它作爲

*/1 * * * * /斌/慶典/home/oracle/dba/scripts/monitor/db_mode.sh

感謝所有。

+1

你的cronjob表達式是什麼? – fedorqui

+0

大家好,我安排的工作與-l,它似乎工作。這就是我現在如何安排這項工作*/1 * * * */bin/bash -l /home/oracle/dba/scripts/monitor/db_mode.sh –

+0

不錯!請用這些重要的細節編輯你的問題 – fedorqui

回答

1

大多是從cron運行時,該變量沒有被腳本看到

$ ORACLE_HOME

使用完整路徑,它應該在一般不工作

依賴於任何環境從cron運行時變量,所以如果sqlplus取決於環境變量,你必須在腳本中設置它們,以便看到它們。

這樣做的原因是,cron是不正常shell中運行,它不具有的.bashrc等洛在正常的外殼,當你初始化

0

嘗試採購你的.bashrc或者第一的.profile:

*/1 * * * * source /home/oracle/.bashrc; /home/oracle/dba/scripts/monitor/db_mode.sh 
0

因爲它沒有「標準輸入」或「標準輸出」,所以Cron不會在這裏和那裏轉儲輸出,因爲它沒有與其關聯的「控制終端」。只有指定文件的I/O才能工作。沒關係$ ORACLE_JAZZ。