# 檢測一個二進制可運行程序是否運行:# 使用方法: 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