Openwrt下获取进程pid的实用shell
2016-05-11 00:00
645 查看
摘要: 最近陷入各种基于openwrt的系统中,有的是原版opwrt,有的是修改过的openwrt,以致有的系统命令被阉割,有的系统命令被保留,导致shell在一类设备上运行ok,在另类设备上运行不ok。查询进程号pid就是一个例子。
查询进程pid常用shell命令:ps,pgrep,top
其中ps aux和ps -ef不是全部设备都支持;
pgrep "XXX"也不太灵光,比如我自己的后台脚本程序就靠名字拿不到pid;
最后是用的top命令来兼顾所有的不同openwrt设备都能拿到程序的进程号。
查询某个名字进程的pid shell函数如下:
函数成功会返回当前进程的pid,如果不在该进程返回null,没有传入程序名称返回-1
#!/bin/sh
GetPidByCommand(){
if [ ! -n "${1}" ]
then
echo "-1"
fi
}
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
查询进程pid常用shell命令:ps,pgrep,top
其中ps aux和ps -ef不是全部设备都支持;
pgrep "XXX"也不太灵光,比如我自己的后台脚本程序就靠名字拿不到pid;
最后是用的top命令来兼顾所有的不同openwrt设备都能拿到程序的进程号。
查询某个名字进程的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
相关文章推荐
- Linux socket 初步
- Linux Kernel 4.0 RC5 发布!
- linux lsof详解
- linux 文件权限
- Linux 执行数学运算
- 10 篇对初学者和专家都有用的 Linux 命令教程
- Linux 与 Windows 对UNICODE 的处理方式
- Ubuntu12.04下QQ完美走起啊!走起啊!有木有啊!
- 解決Linux下Android开发真机调试设备不被识别问题
- 运维入门
- 运维提升
- Linux 自检和 SystemTap
- Ubuntu Linux使用体验
- c语言实现hashmap(转载)
- Linux 信号signal处理机制
- linux下mysql添加用户
- Scientific Linux 5.5 图形安装教程
- Linux 下无损图片压缩小工具介绍