停 service, 建議 sleep 幾秒會比較乾淨.
如:
service xxxx stop
sleep 1
tar ....
service xxx start
基本上, 1 秒就夠, 怕的話, 可以拉到 3 秒.
等待??你執行/etc/init.d/xxx stop,應該就會等到他執行完才會return吧?
不然就用wait。但是前提是service是你這個script的process的child。
先建立如下的 Script:
net stop myservice
start /wait copyfile.bat
net start myservice
註: 執行 start /wait 時,會開啟另一個 DOS 視窗,並等待它被關閉才會執行下一行指令
copyfile.bat 內容如下:
copy d:\ c:\
exit
請記得 copyfile.bat 最後一行要加上 exit, 否則視窗不會自動關閉
service xxx stop; sync; tar xxxxxxxx; sync; service xxx start
如果你要停掉的 service 是類似 oracle 這一累的大東西,最好是確認所有的子程序真的停下來了,這就要作一點其他的判斷。最直接的方式就是用 ps ax | grep xxx 作一下確認。
懶一點的,估計一下停掉 service 需要的時間,加個 stop 就可以了。