查詢某個名字進程的pid shell函數以下: 函數成功會返回當前進程的pid,若是不在該進程返回null,沒有傳入程序名稱返回-1 #!/bin/sh GetPidByCommand(){ if [ ! -n "${1}" ] then echo "-1" fishell
ptop=$(top -n 1 |grep "${1}" |grep -v "grep ${1}") pid="" startpos=0 stringlen=${#ptop} startstatus=0 while [ 1 ] do if [ ${startpos} -ge ${stringlen} ] then break fi currchar=${ptop:${startpos}:1} if [ "${currchar}" = "0" ] || [ "${currchar}" = "1" ] || [ "${currchar}" = "2" ] || [ "${currchar}" = "3" ] || [ "${currchar}" = "4" ] || [ "${currchar}" = "5" ] || [ "${currchar}" = "6" ] || [ "${currchar}" = "7" ] || [ "${currchar}" = "8" ] || [ "${currchar}" = "9" ] then if [ ${startstatus} -eq 0 ] then startstatus=1 fi pid=${pid}${currchar} elif [ ${startstatus} -eq 1 ] then break fi startpos=$(expr ${startpos} + 1 ) done echo ${pid}
}session
pid=$(GetPidByCommand "Test001")函數
echo "Test001 pid = ${pid}"code
exit 0進程
最後發現:pgrep -f "XXX"能夠搞定 囧 Usage: pgrep [-flnovx] [-s SID|-P PPID|PATTERN]string
Display process(es) selected by regex PATTERNit
-l Show command name too -f Match against entire command line -n Show the newest process only -o Show the oldest process only -v Negate the match -x Match whole name (not substring) -s Match session ID (0 for current) -P Match parent process ID