2016-04-13 20 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