Korn 쉘 스크립트에서 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