Openwrt下獲取進程pid的實用shell

查詢某個名字進程的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
相關文章
相關標籤/搜索