首页 > 大家帮忙看下这个脚本,还有没有更加简便的写法?

大家帮忙看下这个脚本,还有没有更加简便的写法?

写了一个脚本,用来查找打开了某个路径下文件的进程都是哪些,例子中,假设需要匹配的进程是打开了路径包含IDMDomain的文件。

我写的脚本如下:

for pid in `lsof 2>/dev/null  |grep IDMDomain |awk '{print $2}' | uniq`
do
ps -ef |grep ${pid} 
done

实例输出如下:

appsoa   24332 24331  0 14:50 pts/5    00:00:00 -bash
appsoa   26219 24012  0 16:03 pts/0    00:00:00 grep 24332
appsoa   25581     1  0 16:00 pts/0    00:00:00 sh /u01/fmwhome/user_projects/domains/IDMDomain/bin/startWebLogic.sh
appsoa   25632 25581 51 16:00 pts/0    00:01:24 /u01/fmwhome/jdk1.6/bin/java -jrockit -Xms1024m -Xmx1024m -Dweblogic.Name=AdminServer -Djava.security.policy=/u01/fmwhome/wlserver_10.3/server/lib/weblogic.policy -Dweblogic.ProductionModeEnabled=true -da -Dplatform.home=/u01/fmwhome/wlserver_10.3 -Dwls.home=/u01/fmwhome/wlserver_10.3/server -Dweblogic.home=/u01/fmwhome/wlserver_10.3/server -XX:PermSize=256m -XX:MaxPermSize=512m -Dcommon.components.home=/u01/fmwhome/oracle_common -Djrf.version=11.1.1 -Dorg.apache.commons.logging.Log=org.apache.commons.logging.impl.Jdk14Logger -Ddomain.home=/u01/fmwhome/user_projects/domains/IDMDomain -Djrockit.optfile=/u01/fmwhome/oracle_common/modules/oracle.jrf_11.1.1/jrocket_optfile.txt -Doracle.server.config.dir=/u01/fmwhome/user_projects/domains/IDMDomain/config/fmwconfig/servers/AdminServer -Doracle.domain.config.dir=/u01/fmwhome/user_projects/domains/IDMDomain/config/fmwconfig -Digf.arisidbeans.carmlloc=/u01/fmwhome/user_projects/domains/IDMDomain/config/fmwconfig/carml -Digf.arisidstack.home=/u01/fmwhome/user_projects/domains/IDMDomain/config/fmwconfig/arisidprovider -Doracle.security.jps.config=/u01/fmwhome/user_projects/domains/IDMDomain/config/fmwconfig/jps-config.xml -Doracle.deployed.app.dir=/u01/fmwhome/user_projects/domains/IDMDomain/servers/AdminServer/tmp/_WL_user -Doracle.deployed.app.ext=/- -Dweblogic.alternateTypesDirectory=/u01/fmwhome/oracle_common/modules/oracle.ossoiap_11.1.1,/u01/fmwhome/oracle_common/modules/oracle.oamprovider_11.1.1,/u01/fmwhome/oracle_common/modules/oracle.jps_11.1.1 -Djava.protocol.handler.pkgs=oracle.mds.net.protocol -Dweblogic.jdbc.remoteEnabled=false -Dem.oracle.home=/u01/fmwhome/oracle_common -Djava.awt.headless=true -Didm.oracle.home=/u01/fmwhome/Oracle_IDM1 -Xms512m -Xmx1024m -Xss512K -Djava.protocol.handler.pkgs=oracle.mds.net.protocol -Dweblogic.management.discover=false -Dweblogic.management.discover=true -Dwlw.iterativeDev=false -Dwlw.testConsole=false -Dwlw.logErrorsToConsole=false -Dweblogic.ext.dirs=/u01/fmwhome/patch_wls1036/profiles/default/sysext_manifest_classpath:/u01/fmwhome/patch_ocp371/profiles/default/sysext_manifest_classpath weblogic.Server
appsoa   26221 24012  0 16:03 pts/0    00:00:00 grep 25581
appsoa   25632 25581 51 16:00 pts/0    00:01:24 /u01/fmwhome/jdk1.6/bin/java -jrockit -Xms1024m -Xmx1024m -Dweblogic.Name=AdminServer -Djava.security.policy=/u01/fmwhome/wlserver_10.3/server/lib/weblogic.policy -Dweblogic.ProductionModeEnabled=true -da -Dplatform.home=/u01/fmwhome/wlserver_10.3 -Dwls.home=/u01/fmwhome/wlserver_10.3/server -Dweblogic.home=/u01/fmwhome/wlserver_10.3/server -XX:PermSize=256m -XX:MaxPermSize=512m -Dcommon.components.home=/u01/fmwhome/oracle_common -Djrf.version=11.1.1 -Dorg.apache.commons.logging.Log=org.apache.commons.logging.impl.Jdk14Logger -Ddomain.home=/u01/fmwhome/user_projects/domains/IDMDomain -Djrockit.optfile=/u01/fmwhome/oracle_common/modules/oracle.jrf_11.1.1/jrocket_optfile.txt -Doracle.server.config.dir=/u01/fmwhome/user_projects/domains/IDMDomain/config/fmwconfig/servers/AdminServer -Doracle.domain.config.dir=/u01/fmwhome/user_projects/domains/IDMDomain/config/fmwconfig -Digf.arisidbeans.carmlloc=/u01/fmwhome/user_projects/domains/IDMDomain/config/fmwconfig/carml -Digf.arisidstack.home=/u01/fmwhome/user_projects/domains/IDMDomain/config/fmwconfig/arisidprovider -Doracle.security.jps.config=/u01/fmwhome/user_projects/domains/IDMDomain/config/fmwconfig/jps-config.xml -Doracle.deployed.app.dir=/u01/fmwhome/user_projects/domains/IDMDomain/servers/AdminServer/tmp/_WL_user -Doracle.deployed.app.ext=/- -Dweblogic.alternateTypesDirectory=/u01/fmwhome/oracle_common/modules/oracle.ossoiap_11.1.1,/u01/fmwhome/oracle_common/modules/oracle.oamprovider_11.1.1,/u01/fmwhome/oracle_common/modules/oracle.jps_11.1.1 -Djava.protocol.handler.pkgs=oracle.mds.net.protocol -Dweblogic.jdbc.remoteEnabled=false -Dem.oracle.home=/u01/fmwhome/oracle_common -Djava.awt.headless=true -Didm.oracle.home=/u01/fmwhome/Oracle_IDM1 -Xms512m -Xmx1024m -Xss512K -Djava.protocol.handler.pkgs=oracle.mds.net.protocol -Dweblogic.management.discover=false -Dweblogic.management.discover=true -Dwlw.iterativeDev=false -Dwlw.testConsole=false -Dwlw.logErrorsToConsole=false -Dweblogic.ext.dirs=/u01/fmwhome/patch_wls1036/profiles/default/sysext_manifest_classpath:/u01/fmwhome/patch_ocp371/profiles/default/sysext_manifest_classpath weblogic.Server
appsoa   26223 24012  0 16:03 pts/0    00:00:00 grep 25632
appsoa   25699     1  0 16:00 pts/0    00:00:00 sh /u01/fmwhome/user_projects/domains/IDMDomain/bin/startManagedWebLogic.sh wls_ods1
appsoa   25701 25699  0 16:00 pts/0    00:00:00 /bin/sh /u01/fmwhome/user_projects/domains/IDMDomain/bin/startWebLogic.sh nodebug noderby noiterativedev notestconsole noLogErrorsToConsole
appsoa   26225 24012  0 16:03 pts/0    00:00:00 grep 25699
appsoa   25701 25699  0 16:00 pts/0    00:00:00 /bin/sh /u01/fmwhome/user_projects/domains/IDMDomain/bin/startWebLogic.sh nodebug noderby noiterativedev notestconsole noLogErrorsToConsole
appsoa   25751 25701 25 16:00 pts/0    00:00:33 /u01/fmwhome/jdk1.6/bin/java -jrockit -Xms1024m -Xmx1024m -Dweblogic.Name=wls_ods1 -Djava.security.policy=/u01/fmwhome/wlserver_10.3/server/lib/weblogic.policy -Dweblogic.ProductionModeEnabled=true -Dweblogic.security.SSL.trustedCAKeyStore=/u01/fmwhome/wlserver_10.3/server/lib/cacerts -da -Dplatform.home=/u01/fmwhome/wlserver_10.3 -Dwls.home=/u01/fmwhome/wlserver_10.3/server -Dweblogic.home=/u01/fmwhome/wlserver_10.3/server -XX:PermSize=256m -XX:MaxPermSize=512m -Dcommon.components.home=/u01/fmwhome/oracle_common -Djrf.version=11.1.1 -Dorg.apache.commons.logging.Log=org.apache.commons.logging.impl.Jdk14Logger -Ddomain.home=/u01/fmwhome/user_projects/domains/IDMDomain -Djrockit.optfile=/u01/fmwhome/oracle_common/modules/oracle.jrf_11.1.1/jrocket_optfile.txt -Doracle.server.config.dir=/u01/fmwhome/user_projects/domains/IDMDomain/config/fmwconfig/servers/wls_ods1 -Doracle.domain.config.dir=/u01/fmwhome/user_projects/domains/IDMDomain/config/fmwconfig -Digf.arisidbeans.carmlloc=/u01/fmwhome/user_projects/domains/IDMDomain/config/fmwconfig/carml -Digf.arisidstack.home=/u01/fmwhome/user_projects/domains/IDMDomain/config/fmwconfig/arisidprovider -Doracle.security.jps.config=/u01/fmwhome/user_projects/domains/IDMDomain/config/fmwconfig/jps-config.xml -Doracle.deployed.app.dir=/u01/fmwhome/user_projects/domains/IDMDomain/servers/wls_ods1/tmp/_WL_user -Doracle.deployed.app.ext=/- -Dweblogic.alternateTypesDirectory=/u01/fmwhome/oracle_common/modules/oracle.ossoiap_11.1.1,/u01/fmwhome/oracle_common/modules/oracle.oamprovider_11.1.1,/u01/fmwhome/oracle_common/modules/oracle.jps_11.1.1 -Djava.protocol.handler.pkgs=oracle.mds.net.protocol -Dweblogic.jdbc.remoteEnabled=false -Dem.oracle.home=/u01/fmwhome/oracle_common -Djava.awt.headless=true -Didm.oracle.home=/u01/fmwhome/Oracle_IDM1 -Xms512m -Xmx1024m -Xss512K -Djava.protocol.handler.pkgs=oracle.mds.net.protocol -Dweblogic.management.discover=false -Dweblogic.management.discover=false -Dweblogic.management.server=http://testidm.zzmetro.cn:7001 -Dwlw.iterativeDev=false -Dwlw.testConsole=false -Dwlw.logErrorsToConsole=false -Dweblogic.ext.dirs=/u01/fmwhome/patch_wls1036/profiles/default/sysext_manifest_classpath:/u01/fmwhome/patch_ocp371/profiles/default/sysext_manifest_classpath weblogic.Server
appsoa   26227 24012  0 16:03 pts/0    00:00:00 grep 25701
appsoa   25751 25701 25 16:00 pts/0    00:00:33 /u01/fmwhome/jdk1.6/bin/java -jrockit -Xms1024m -Xmx1024m -Dweblogic.Name=wls_ods1 -Djava.security.policy=/u01/fmwhome/wlserver_10.3/server/lib/weblogic.policy -Dweblogic.ProductionModeEnabled=true -Dweblogic.security.SSL.trustedCAKeyStore=/u01/fmwhome/wlserver_10.3/server/lib/cacerts -da -Dplatform.home=/u01/fmwhome/wlserver_10.3 -Dwls.home=/u01/fmwhome/wlserver_10.3/server -Dweblogic.home=/u01/fmwhome/wlserver_10.3/server -XX:PermSize=256m -XX:MaxPermSize=512m -Dcommon.components.home=/u01/fmwhome/oracle_common -Djrf.version=11.1.1 -Dorg.apache.commons.logging.Log=org.apache.commons.logging.impl.Jdk14Logger -Ddomain.home=/u01/fmwhome/user_projects/domains/IDMDomain -Djrockit.optfile=/u01/fmwhome/oracle_common/modules/oracle.jrf_11.1.1/jrocket_optfile.txt -Doracle.server.config.dir=/u01/fmwhome/user_projects/domains/IDMDomain/config/fmwconfig/servers/wls_ods1 -Doracle.domain.config.dir=/u01/fmwhome/user_projects/domains/IDMDomain/config/fmwconfig -Digf.arisidbeans.carmlloc=/u01/fmwhome/user_projects/domains/IDMDomain/config/fmwconfig/carml -Digf.arisidstack.home=/u01/fmwhome/user_projects/domains/IDMDomain/config/fmwconfig/arisidprovider -Doracle.security.jps.config=/u01/fmwhome/user_projects/domains/IDMDomain/config/fmwconfig/jps-config.xml -Doracle.deployed.app.dir=/u01/fmwhome/user_projects/domains/IDMDomain/servers/wls_ods1/tmp/_WL_user -Doracle.deployed.app.ext=/- -Dweblogic.alternateTypesDirectory=/u01/fmwhome/oracle_common/modules/oracle.ossoiap_11.1.1,/u01/fmwhome/oracle_common/modules/oracle.oamprovider_11.1.1,/u01/fmwhome/oracle_common/modules/oracle.jps_11.1.1 -Djava.protocol.handler.pkgs=oracle.mds.net.protocol -Dweblogic.jdbc.remoteEnabled=false -Dem.oracle.home=/u01/fmwhome/oracle_common -Djava.awt.headless=true -Didm.oracle.home=/u01/fmwhome/Oracle_IDM1 -Xms512m -Xmx1024m -Xss512K -Djava.protocol.handler.pkgs=oracle.mds.net.protocol -Dweblogic.management.discover=false -Dweblogic.management.discover=false -Dweblogic.management.server=http://testidm.zzmetro.cn:7001 -Dwlw.iterativeDev=false -Dwlw.testConsole=false -Dwlw.logErrorsToConsole=false -Dweblogic.ext.dirs=/u01/fmwhome/patch_wls1036/profiles/default/sysext_manifest_classpath:/u01/fmwhome/patch_ocp371/profiles/default/sysext_manifest_classpath weblogic.Server
appsoa   26229 24012  0 16:03 pts/0    00:00:00 grep 25751

可以看到,结果还是比较乱,包含了grep命令本身的输出。

对于这个需求,还有其他更好的实现吗?


ps -ef |grep ${pid}替换成ps -p ${pid} -o comm=


lsof 2>/dev/null |grep IDMDomain
这样写不行么?

【热门文章】
【热门文章】