免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3999 | 回复: 2
打印 上一主题 下一主题

Shell获取进程程序的绝对路径 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-02-20 16:54 |只看该作者 |倒序浏览
大家好。

正在学习Shell的过程中,今天随手写了个获取进程程序的绝对路径的Shell,但不甚满意,希望得到各位指点。

需求:
1、传入任意字符串,获取能够匹配到的进程程序的绝对路径,未匹配到则返回提示;
2、如果匹配到的进程是一个脚本,请不要返回“/bin/bash”这样的结果,而应返回该脚本的绝对路径;
3、如果一个进程的程序绝对路径为“/aaa/test”,另一个进程的程序绝对路径为“/bbb/test2”,请避免出现返回“/bbb/test”的情况。


  1. #!/bin/sh
  2. if [ `ps -ef | grep $1 | grep -v grep | grep -v $0 | wc -l` = 0 ]; then echo "$1 : Process is NOT EXISTED !!"; exit; fi
  3. procname=(`ps -ef | grep $1 | grep -v grep | grep -v $0 | awk -F/ '{print $NF}' | sort | uniq`)
  4. for ((i=0;i<${#procname[@]};i++))
  5. do
  6.         ls -l `ps -ejH | grep ${procname[i]} | uniq -f1 -w6 | grep -v grep | grep -v $0 |
  7.         awk '$6=="'"${procname[i]}"'" {print "/proc/"$2}'` |
  8.         grep cwd | awk -F" -> " '{print $2"/""'"${procname[i]}"'"}' | sort | uniq
  9. done
复制代码


以上是我写出来的东西,一团乱麻……虽然能够正确处理,但总感觉很不舒服。期待各位更好的处理方法。
谢谢。

评分

参与人数 1可用积分 +8 收起 理由
我是DBA + 8 原创内容

查看全部评分

论坛徽章:
0
2 [报告]
发表于 2009-02-20 18:17 |只看该作者
可能说的絮叨了一点,还是希望有朋友闲了无聊的时候给点意见。
回家吃饭了。:)

论坛徽章:
0
3 [报告]
发表于 2009-02-21 07:30 |只看该作者
再怎么说也得支持一下你。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP