linux的functions之__pids_var_run函数详解

# 该函数有二个做用:
 # 一、根据给定的二进制运行程序,找出该程序的进程号(PID)。# 二、判断该二进制程序的运行状态,输出不一样的返回値,供查看一个程序的运行状态时使用。# __proc_pids {program} [pidfile]   -----> 该函数的用法# Set $pid to pids from /var/run* for {program}.# $pid should be declared# local in the caller.# Returns LSB exit code for the 'status' action.__pids_var_run() {
        local base=${1##*/}  
        # 参数替换,使用局部变量$base 存储程序的二进制文件名。
        local pid_file=${2:-/var/run/$base.pid}  
         # 参数替换。若是调用该函数时,没有给$2或为空,将使# 用/var/run/$base.pid做为变量 pid_file的值。
        pid=       # 设置一个全局变量,但其值为空。记录进程的PID号
        if [ -f "$pid_file" ] ; then   # 判断变量的值是不是一个文件,
                local line p                read line < "$pid_file"  # 读取文件的内容
                for p in $line ; do  
                    [ -z "${p//[0-9]/}" -a -d "/proc/$p" ] && pid="$pid $p" 
              # 找出二进制运行程序的PID号。
              # 一个二进制可运行程序启动后,通常会在/var/run/目录下建立一个   
              # $base.pid 文件。
      #同时会把本身的进程号(PID)写到该文件中,固然有可能也会把另外的信息写到该文件中
      # 同时系统会在/proc 目录中建立一个以该二进制运行程序的PID为名称的目录
      # 该目录保存了,二进制运行程序的使用资源状况等等。
      #也有例外:/var/run/$base.pid 文件是空的。也有程序把pid文件存放在其它目
      #的。mysql
                done
                if [ -n "$pid" ]; then  
                        return 0        
                        # 若是找到进程号就返回状态码 0.表明二进制程序是运行的。
                fi
                return 1 # "Program is dead and /var/run pid file exists"   
         # 若是找不到进程号,就返回状态码 1.可是: /var/run/目录下是有pid文件的。
         # $base.pid是空的,也会找不到PID的。可是并不表明$base是不运行的。
        fi
        return 3 # "Program is not running"  
     # 若是:/var/run/ 目录上没有pid文件,就返回状态码 3 .该二进制程序是中止的。}
相关文章
相关标签/搜索