2016-04-13 16 views
0

我正在嘗試編寫腳本來進行數據庫備份。備份腳本如下 -在shell腳本中按順序執行命令並延遲執行下一條語句

$LOG_TIME=`date +%T` 
$LOG=/home/developer/backup.log 

echo $LOG_TIME "::Backup Started">>$LOG; 
su - oracle -c "exp username/password file=~/db_exp.dmp log=db_exp.dmp"; 
echo $LOG_TIME "::Backup End">>$LOG; 

我的代碼是完美的補充備份。但是,當我檢查db_exp.dmp文件,我發現 -

14:25:33 :: Backup Started 
14:25:33 :: Backup End 

我的問題是這裏的兩線「備份開始」和「備份結束」打印在同一時間,而它需要幾秒鐘(約40〜 50)進行備份。我想打印備份完成時的實際時間。我已經嘗試了幾件事情 - 使用&&;用分號(;)和if聲明一樣 -

if backup_command; then 
    echo $LOG_TIME ":: Backup End"; 
fi 

但沒有爲我工作。我不想在這裏使用sleep,因爲它不能讓我完成數據庫備份的實際時間。

+0

'$ LOG_TIME'值設置一次。您必須爲結束日期調用新的'date'命令。 – SLePort

回答

2

嘗試在初始化時這個

echo `date +%T` "::Backup End" 
+0

我強烈推薦使用'$(...)'而不是反引號,它更易讀並且(對於極少數情況,您需要它)使嵌套更容易。 – Vatine

+0

我同意'$(...)'更具可讀性。缺點是我不確定所有的炮彈都支持它。我更喜歡推薦最廣泛支持的語法。 – GMichael

+0

'$(...)'至少是POSIX,所以你可能在從2000年以後運行OS的unix機器上找到的任何shell都可能支持它。 – Vatine