完成我有這樣的一段代碼:如何等待後臺作業在外殼
sqlplus usr1/[email protected] @$DIR/a.sql $1 &
sqlplus usr2/[email protected] @$DIR/b.sql $1 &
wait
echo "Done!"
在後臺兩個sqlplus的會議,使他們能夠在同一時間運行,並等待命令要等到雙方的他們完成。
在真實程序中,「echo」實際上是對另一個程序的調用,該程序通過先前執行的查詢對假脫機文件起作用,因此需要等待它們完成。
我有一個問題,因爲當我自己執行它時它工作正常,但它不會在我將其安排在crontab上時發生。由於我似乎無法找到解決方案,我想以某種方式模擬該行爲。這是我的想法:
sqlplus usr1/[email protected] @$DIR/a.sql $1
session1=$! //I think this stores sqlpluss pid
sqlplus usr2/[email protected] @$DIR/b.sql $1
session2=$!
while (not finished($session1) and not finished($session2)) //pseudocode
do nothing //maybe sleep for a few seconds, something that wont waste resources unnecesarally
echo "Done!"
我需要一些關於如何完成該循環的幫助。首先,我假設$ session1和$ session2具有每個sqlplus會話的pid。不確定這是否正確。然後,必須有一些簡單的方法來檢查進程是否仍在運行,並且是否爲pid。最後,如果仍然有一個正在運行,我想等待但不循環數百萬次,但也許睡一會兒:
在此先感謝您的任何建議!
+1等待。它也沒有價值,沒有參數,'wait'將等待所有*後臺進程。 「男人等待」(然後搜索它,因爲它是內置的)有更多的信息。 – jedwards