我在答案中搜索没有成功......在RHEL Linux上,第一个命令列出了这一点(我完全按照我的方式为那些想要测试的人...):
ps -eaf | grep lsnr | grep -v ' LISTENER ' | grep -v grep oracle 10258 1 0 2014 ? 01:34:43 /logicielPR1/oracle/product/11.2.0.4/bin/tnslsnr PRXPLO -inherit oracle 10442 1 0 2014 ? 00:24:30 /logicielTE1/oracle/product/11.2.0.4/bin/tnslsnr TECHIMIO -inherit oracle 10473 1 0 2014 ? 00:28:50 /logicielTE1/oracle/product/11.2.0.4/bin/tnslsnr TEIAC -inherit oracle 10566 1 0 2014 ? 00:24:50 /logicielTE1/oracle/product/11.2.0.4/bin/tnslsnr TEIMG -inherit oracle 14192 1 0 2014 ? 00:22:09 /logicielPR1/oracle/product/11.2.0.4/bin/tnslsnr PROCTM2 -inherit oracle 27167 1 0 2014 ? 00:19:26 /logicielTE1/oracle/product/11.2.0.4/bin/tnslsnr TEOCTM -inherit oracle 36854 1 0 2014 ? 00:19:59 /logicielTE1/oracle/product/11.2.0.4/bin/tnslsnr TEANA -inherit oracle 37235 1 0 May20 ? 00:08:32 /logicielPR1/oracle/product/11.2.0.4/bin/tnslsnr PRCHIMIO -inherit oracle 45141 1 0 Jun03 ? 00:08:02 /logicielST1/oracle/product/11.2.0.4/bin/tnslsnr PRIACS -inherit oracle 48241 1 0 Sep25 ? 00:04:39 /logicielPR1/oracle/product/11.2.0.4/bin/tnslsnr PRINL -inherit oracle 48708 1 0 Sep25 ? 00:03:27 /logicielTE1/oracle/product/11.2.0.4/bin/tnslsnr TEINL2 -inherit
我想提取UPPER名称(例如:第一行的PRXPLO),所以我这样做:
ps -eaf | grep lsnr | grep -v ' LISTENER ' | grep -v grep | awk -F "${ORA_LISTENER_HEADER}|${ORA_LISTENER_HEADER_UPPER}|tnslsnr " '{print $2}' PRXPLO -inherit TECHIMIO -inherit TEIAC -inherit TEIMG -inherit PROCTM2 -inherit TEOCTM -inherit TEANA -inherit PRCHIMIO -inherit PRIACS -inherit {print $2} PRINL -inherit TEINL2 -inherit
*注意:在此命令中,"$ {ORA_LISTENER_HEADER} | $ {ORA_LISTENER_HEADER_UPPER} | tnslsnr"将等同于"tnslsnr"
显然,包含"{print $ 2}"的行不应该存在,但我找不到它的来源.我知道我可以通过grep简单地排除它,但我更愿意理解我做错了什么.
有人可以帮我解决这个问题吗?
谢谢大家.
为了解决问题,只需使用一个awk调用:
ps -eaf | awk '/lsnr/ && !/ LISTENER / {print $(NF-1)}'