根据守护进程的运行状态来测试网络的连接情况,这样的做法远比直接查找网络连接状态的参数要好。下面通过一个脚本来对一个指定的进程名进行状态测试,并将测试结果显示到标准输出上。

代码:

#!/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命令测试一下:

wKiom1Mll5zz0rfXAAEVI-9hDiw329.jpg


OVER~~