在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值,並將++改為--即可。
沒有留言:
張貼留言