根據守護進程的運行狀態來測試網絡的連接情況,這樣的做法遠比直接查找網絡連接狀態的參數要好。下面通過一個腳本來對一個指定的進程名進行狀態測試,並將測試結果顯示到標準輸出上。
代碼:
#!/bin/bash # #提示用戶指定一個守護進程名 並將名字暫存到變量n_prog中 echo "check up progress status" echo -n "Input a name of progress:" read n_prog # #定義一些常量 定義每次發送測試結果的參數到標準輸出的時間間隔 pro_file_name=status not_connected=65 interval=2 #搜索變量n_prog中指定的守護進程的進程號 pidno=$( ps ax |grep -v "ps ax" |grep -v grep|grep $n_prog|awk '{print $1}') # echo "checkingfor \"$n_prog\",please wait..." echo #判斷變量pidno的值是否爲空 if [ -z "$pidno" ] then echo "The status be stopped..." echo "And belong to not connected" echo exit $not_connected else echo "The status is running..." echo "And belong to connected" echo fi # #若指定進程對應的文件存在 但進程沒有處於連接狀態 則執行if結構語句 while [ true ] do if [ ! -e "/proc/$pidno/$pro_file_name" ] then echo "But he progress is disconnected" echo exit $not_connected fi #獲取一些連接的參數 並輸出到標準輸出上 netstat -s |grep "packets received" netstat -s |grep "packets delivered" #每隔一秒顯示一個參數 相隔的時間由變量$interval定義 sleep $interval echo done exit 0
使用ls命令測試一下:
OVER~~