搜尋此網誌

星期三, 9月 15, 2010

在dos下,如何使用無窮迴圈來作一個監控程式

在dos下,如何使用無窮迴圈來作一個監控程式

對一個dba來說,在dos 下想使用跟unix相同的工具來監控系統,會是一個很大的困擾。

今天在客戶端,為了進行tnsping的監控,user使用了tnsping {tnsname} 20

這是一個偵測資料庫是否可以連接的指令

不過,在dos下必須一直手動執行,才能繼續監控。

這對我來說是一個很不舒服的感覺。

因此我在網路上找到以下的指令:


for /l %%i in (1 1 50000) do (ping 168.95.1.1 -n 1)


其中的ping 為你想執行的系統指令,1 1 5000,代表,每由1開始,間隔1次執行,共執行至50000時停止。

不過真的執行下去,就馬上一直執行。這個結果還不能滿足我的需求,我還要他中間有暫停時間,暫停完後才再度執行指令。
---20100926補充:dos下有timeout指令,可以代替sleep來使用
可以改寫為:


for /l %i in (1 1 50000) do (
ping 168.95.1.1 -n 1 >>d:\test.log
timeout 2
)


---
然而dos下沒有sleep的指令,因此我把想法轉移到perl上面

對一個oracle dba來說,perl是你最好的朋友,只需要環境變數上,加上小小的路徑,你就可以瞬間提升功力。

這段perl的語法如下:


$num = 1;
while($num++){

print "$num\n";
system("ping 168.95.1.1 -n 1");
    sleep(2);
}

注意,這是一個無窮迴圈,若要限制次數,請修改num值,並將++改為--即可。

沒有留言: