查询某个名字进程的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 }
最后发现: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
本文章由作者:佐须之男 整理编辑,原文地址: Openwrt下获取进程pid的实用shell
本站的文章和资源来自互联网或者站长的原创,按照 CC BY -NC -SA 3.0 CN协议发布和共享,转载或引用本站文章应遵循相同协议。如果有侵犯版权的资 源请尽快联系站长,我们会在24h内删除有争议的资源。欢迎大家多多交流,期待共同学习进步。