获取所有进程id进程名在linux

问题描述:

我用下面的选项获取所有进程id进程名在linux

1.copied的数据,我需要从出文本放

ps ax -o rss,command | sort -nr | head -n 10 

2.But这个输出努力包含提取像下面

856232 /usr/java/jdk1.7.0/bin/java -Djava.util.logging.config.file=/data/vmware/server/xxxxx/conf/logging.properties -XX:MaxPermSize=512m -Xmx1024m -Xms1024m -XX:PermSize=256m -Xss256k - 

,但我只需要后/data/vmware/serverxxxxx的字符串。

我试过sed和awk,但没有得到预期的。

+3

你一直在这里问问题一段时间。尝试正确格式化,向回答者提供反馈,并最终在有用时接受答案。 – fedorqui 2015-03-03 10:21:03

你可以使用grep。

ps ax -o rss,command | sort -nr | head -n 10 | grep -oP 'data/vmware/server/\K[^/]*' 

实施例:

$ echo '856232 /usr/java/jdk1.7.0/bin/java -Djava.util.logging.config.file=/data/vmware/server/xxxxx/conf/logging.properties -XX:MaxPermSize=512m -Xmx1024m -Xms1024m -XX:PermSize=256m -Xss256k -' | grep -oP 'data/vmware/server/\K[^/]*' 
xxxxx 

OR

sed的。

$ echo '856232 /usr/java/jdk1.7.0/bin/java -Djava.util.logging.config.file=/data/vmware/server/xxxxx/conf/logging.properties -XX:MaxPermSize=512m -Xmx1024m -Xms1024m -XX:PermSize=256m -Xss256k -' | sed 's~.*data/vmware/server/\([^/]*\).*~\1~' 
xxxxx 
+0

转到'grep'版本..'awk'命令不可靠 - 如果java的位置发生变化,'{10}'可能指向不同的部分。 – 2015-03-03 10:22:56

+0

请注意,您可以使用'awk'...' fedorqui 2015-03-03 10:25:09

+0

删除了部分:)谢谢.. – 2015-03-03 10:25:43