iT邦幫忙

0

shell script 的問題

在shell script中要如何做等待啊
例如說
我要先stop 一個service
然後做一些事 例如 tar 一個資料夾
tar完後再把剛剛stop 的service start

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
22
pail
iT邦新手 4 級 ‧ 2009-05-12 11:43:35
最佳解答

停 service, 建議 sleep 幾秒會比較乾淨.
如:
service xxxx stop
sleep 1
tar ....
service xxx start

基本上, 1 秒就夠, 怕的話, 可以拉到 3 秒.

jiahuey iT邦新手 1 級 ‧ 2009-05-12 14:40:02 檢舉

哈! 對了 sleep 才對!

24
fillano
iT邦超人 1 級 ‧ 2009-05-11 15:30:17

等待??你執行/etc/init.d/xxx stop,應該就會等到他執行完才會return吧?

不然就用wait。但是前提是service是你這個script的process的child。

18
huangsb
iT邦好手 1 級 ‧ 2009-05-12 08:31:24

先建立如下的 Script:
net stop myservice
start /wait copyfile.bat
net start myservice

註: 執行 start /wait 時,會開啟另一個 DOS 視窗,並等待它被關閉才會執行下一行指令

copyfile.bat 內容如下:
copy d:\ c:\
exit

請記得 copyfile.bat 最後一行要加上 exit, 否則視窗不會自動關閉

aesop iT邦研究生 4 級 ‧ 2009-05-12 08:37:40 檢舉

不好意思
您誤會了
我問的是shell script
不過您的回答我一樣受用
感恩

14
jiahuey
iT邦新手 1 級 ‧ 2009-05-12 10:33:09

service xxx stop; sync; tar xxxxxxxx; sync; service xxx start

如果你要停掉的 service 是類似 oracle 這一累的大東西,最好是確認所有的子程序真的停下來了,這就要作一點其他的判斷。最直接的方式就是用 ps ax | grep xxx 作一下確認。

懶一點的,估計一下停掉 service 需要的時間,加個 stop 就可以了。

我要發表回答

立即登入回答