在unix中查找进程并打印应用程序名称

时间:2017-04-20 05:56:54

标签: shell unix

我有一个文件中的原始PS命令输出,我想找到如果找到pmon然后我需要打印像Oracle,数据库,如果Jboss发现需要打印像Jboss,Middle-ware。

我有如下的映射文件

PMON,甲骨文,数据库
JBoss和JBoss和中间件
WebLogic中,WebLogic中,中间件。

我需要为此编写一个shell脚本,请你帮帮我 感谢

2 个答案:

答案 0 :(得分:0)

这样的东西,也许?:

$ cat foo
pmon Oracle,Database
jboss Jboss,Middle-ware
weblogic Weblogic,Middle-ware. 
bash Bash,shell

代码:

$ ps | awk '
BEGIN {                           # hash the mapping file foo in the BEGINning:
    while((getline < "foo") > 0)  # read records from file
        a[$1]=$2                  # hash to a
    close("foo") }                # be nice now and shut it up
$NF in a { $0=$0 OFS a[$NF] }     # append mapping to the end of output
1'                                # print
  PID TTY          TIME CMD
 4611 pts/3    00:00:04 bash Bash,shell
15691 pts/3    00:00:00 ps
15692 pts/3    00:00:00 awk
31785 pts/3    00:00:00 emacs

下行:a[$1]=$2只允许一个字映射,映射如下:

emacs greatest entity's right hand

会失败(好吧,不完全是,它会输出emacs greatest :)。

答案 1 :(得分:0)

感谢Jamesh的时间。

我能够用这个实现 读线时 做
txtgrep = echo $line | cut -d@ -f1
txtappend = echo $line | cut -d@ -f2
完成

我修改了映射文件,如
jboss @ jboss,中间件