【问题标题】:Get the all the process names with process id in linux在linux中获取所有带有进程ID的进程名称
【发布时间】:2015-03-03 10:17:24
【问题描述】:

我正在尝试以下选项

1.从输出的文本中复制我需要的数据

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

2.但此输出包含如下提取物

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/server 之后的字符串,即xxxxx

我尝试了 sed 和 awk,但没有得到想要的。

【问题讨论】:

  • 您在这里提问已经有一段时间了。尝试正确格式化它们,向回答者提供反馈并最终接受有用的答案。

标签: perl shell awk sed grep


【解决方案1】:

你可以使用 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

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

【讨论】:

  • 选择grep 版本。awk 命令不可靠 - 如果 java 的位置发生变化,{10} 可能指向不同的部分。
  • 请注意,您可以使用awk '...' <<< "string" 代替echo "string" | awk '...'。这有助于显示相关代码而不是回显
猜你喜欢
  • 2018-08-12
  • 2014-11-02
  • 1970-01-01
  • 2014-11-03
  • 1970-01-01
  • 1970-01-01
  • 2011-05-05
  • 2014-01-28
相关资源
最近更新 更多