linux的 functions之status函數詳解

# 檢測一個二進制可運行程序是否運行:# 使用方法:
        status [-p pidfile] {program}status() {
        local base pid pid_file=
        # Test syntax.          # 測試調用該函數時的參數格式。
        if [ "$#" = 0 ] ; then
                echo $"Usage: status [-p pidfile] {program}"   
               # 若是調用該函數沒有給一個參數的話就顯示:該函數的使用方法,而後直
               #接退出。退出狀態碼:1
                return 1        fi
        if [ "$1" = "-p" ]; then
                pid_file=$2     
                shift 2        fi
        base=${1##*/}   # 使用$base 記錄二進制可運行程序的文件名。
        # First try "pidof"
        __pids_var_run "$1" "$pid_file"  
        # 調用函數:__pids_var_run 來檢測二進制程序的運行狀態。
        RC=$?
        if [ -z "$pid_file" -a -z "$pid" ]; then  
        # 若是調用 status時,沒有傳遞pidfile文件,而且沒有檢測到PID號
                pid="$(__pids_pidof "$1")"   
          # 由於有些二進制可運行程序,是不會把PID寫到 
          # /var/run/$base.pid文件當中的。就調用函數__pids_pidof來查找PID號
        fi####################################################################
        if [ -n "$pid" ]; then   
        # 若是查到二進制運行程序的PID號,就表明該該二進制程序是運行的。
                echo $"${base} (pid $pid) is running..."
                return 0        fi
        case "$RC" in   
        # 根據函數:__pids_var_run返回的狀態碼,來判斷二進制程序的運行狀態。
                0)
                        echo $"${base} (pid $pid) is running..."
                        return 0                        ;;
                1)
                        echo $"${base} dead but pid file exists"  
                      # 若是函數:__pids_var_run返回的狀態碼是:1 ,的話....
                        return 1                        ;;
        esac#####################################################################
        # See if /var/lock/subsys/${base} exists   # ***鎖文件。
        if [ -f /var/lock/subsys/${base} ]; then
                echo $"${base} dead but subsys locked"
                return 2        fi
        echo $"${base} is stopped"
        return 3}


https://blog.51cto.com/9528du/1420154web

相關文章
相關標籤/搜索