Chinaunix

标题: Shell获取进程程序的绝对路径 [打印本页]

作者: kwokcn    时间: 2009-02-20 16:54
标题: Shell获取进程程序的绝对路径
大家好。

正在学习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
复制代码


以上是我写出来的东西,一团乱麻……虽然能够正确处理,但总感觉很不舒服。期待各位更好的处理方法。
谢谢。
作者: kwokcn    时间: 2009-02-20 18:17
可能说的絮叨了一点,还是希望有朋友闲了无聊的时候给点意见。
回家吃饭了。:)
作者: 我是DBA    时间: 2009-02-21 07:30
再怎么说也得支持一下你。




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2