我正在尝试创建服务器管理器,但我需要获取某些进程的进程ID和命令。
例如:
ps ax | grep ./skulltag
4760 pts/2 Tl 0:02 ./skulltag-server
4793 pts/2 Tl 0:01 ./skulltag-server
4956 pts/2 Tl 0:01 ./skulltag-server -port 13000
4958 pts/2 Tl 0:26 ./skulltag-server -port 13001
如何让它只返回进程,只返回命令(./skulltag-server)或两者兼而有之?感谢。
答案 0 :(得分:3)
您可以通过管道awk来选择要输出的字段
E.g。 ps ax | grep ./skulltag | awk '{ print $1 }'
将打印第一列(pid)
请注意,您可能还希望使用-o选项ps来修改其输出
答案 1 :(得分:3)
我认为你应该使用awk
ps ax | grep ./skulltag | awk '{print $1}' # Or $5, or $1 and $5
这将为您提供流程ID列表。
答案 2 :(得分:3)
答案 3 :(得分:1)
您可以使用ps ax
解析awk
的结果,以提取所需的列:
aix@aix:~/tmp$ ps ax | grep bash
1906 pts/5 Ss+ 0:00 bash
13749 pts/31 Ss 0:00 bash
27315 ? SN 0:00 /bin/bash /etc/cron.daily/backup
27648 pts/31 S+ 0:00 grep --color=auto bash
aix@aix:~/tmp$ ps ax | grep bash | awk '{print $1}'
1906
13749
27315
27652
aix@aix:~/tmp$ ps ax | grep bash | awk '{print $5}'
bash
bash
/bin/bash
grep