Openwrt下获取进程pid的实用shell

查询某个名字进程的pid shell函数如下: 函数成功会返回当前进程的pid,如果不在该进程返回null,没有传入程序名称返回-1 #!/bin/sh GetPidByCommand(){ if [ ! -n "${1}" ] then echo "-1" fi

    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}

}

pid=$(GetPidByCommand "Test001")

echo "Test001 pid = ${pid}"

exit 0

最后发现:pgrep -f "XXX"可以搞定 囧 Usage: pgrep [-flnovx] [-s SID|-P PPID|PATTERN]

Display process(es) selected by regex PATTERN

    -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

转载于:https://my.oschina.net/u/2375158/blog/673509

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值