在 korn shell 脚本中,我正在运行 expdp。我已将脚本设置为可重用的位置,因此如果以后的过程失败,我可以再次运行它,而无需运行已完成的步骤。我正在后台运行两个进程,并等待两个进程完成,然后再继续执行脚本。例如,我使用下面的逻辑来等待。 expdp 进程完成后,我使用日志函数来写入已完成的消息。
while ps | grep "expdp" | grep -v grep
do
echo expdp is still in the ps output. Must still be running.
sleep 5
done
WriteLog "Completed exporting client schemas"
如果该进程不存在(即修复expdp之后发生的任何错误后重用脚本),如何将其设置为仅当expdp进程存在时才发生写日志的位置。如果从 ps 中找不到进程,则不应再次写入日志。
答案1
我认为您搜索的方式错误。我会写这样一个脚本:
if [ "z$STEP5" != "zOK" ] ; then
expdp -your_options > $logfile &
while ps ax | grep [e]xpdp ; do
echo "expdp still in progress..."
sleep 5
done
wait # in order to be sure there is no more background processes...
tail -n1 $logfile | grep "successfully without warnings" >/dev/null 2>&1
if [ $? -ne 0 ] ; then
echo "Some errors occured while export"
else
echo "Export done sucessfully"
fi
fi