如何在不使用grep的情况下按名称搜索进程?


62

为了搜索过程中,你可以使用psgrep

例如搜索Firefox

ps aux | grep firefox

如何不使用就得到相同的答案grep


1
考虑到该ps/grep解决方案效果很好,我很好奇您为什么要这样做?
Neuronet '18

OP只是想一个较短的命令,我猜。如果有那样的事情ps -n <process name>可以回答他的需要。ps -n firefox比短ps | grep firefoxps可以已经pid针对用户ID进行过滤或针对用户ID进行处理,因此根据进程名称进行过滤是一个合理的问题。
Jochem Schulenklopper

Answers:


71

pgrep命令及其同级pkill正是出于以下目的而存在:

  • pgrep firefox 将列出所有命令匹配的进程 firefox
  • pgrep -f firefox 将列出所有命令行匹配的所有进程 firefox
  • pgrep -x firefox 将列出其命令完全匹配的所有进程 firefox
  • ... 等等。

而且自然pgrep会将自己排除在比赛之外,因此不需要任何grep与之相关的仪式ps | grep


用于此目的的另一套工具是pidofand killall命令。这些都不如灵活pgreppkill

  • pidof firefox 将列出其命令是的进程 firefox

24
ps -fC process-name

例:

ps -fC firefox

man ps

  -C cmdlist      Select by command name.
                       This selects the processes whose executable name is
                       given in cmdlist.


 -f              Do full-format listing. This option can be combined
                       with many other UNIX-style options to add additional
                       columns. It also causes the command arguments to be
                       printed. When used with -L, the NLWP (number of
                       threads) and LWP (thread ID) columns will be added. See
                       the c option, the format keyword args, and the format
                       keyword comm.

这是最好的答案,但是不幸的是在OSX上不起作用。BSD ps -C标志的行为完全不同-“更改CPU百分比的计算方式”
mastaBlasta

2

top大写时允许您搜索字符串L; 该过程将突出显示,并使用向上和向下箭头键滚动浏览过程列表。同样, htop命令可以在您点击时突出显示一个特定的进程/。并且\会过滤名称中带有特定字符串的所有进程。

对于那些谁喜欢的awk,这里是一个awk oneliner: ps -eF | awk '/process-name/ {print $11}' 。随着ps -eF工艺的名字总是在第11列。或者,如果您ps -eF | awk '{print $11}' | sort得到了按字母顺序排序的进程名称的排序列表。将其通过管道less传递到命令中只是为了更轻松地查看文件的长列表。


2

一个很酷的把戏

$ps -ejH

您将获得所有带有名称的进程

exmple:
1747   568   568 ?        00:00:00   colord
1833  1832  1832 ?        00:00:00   gnome-keyring-d
2263   568   568 ?        00:00:00   udisksd
2311  2311  2311 ?        00:00:00   cupsd
2315  2315  2311 ?        00:00:00     dbus

重定向或将输出复制到文件中,然后打开nano,按Ctrl+ W ,您可以搜索所需的名称。


1

您还可以使用htopF4,然后按F4以匹配的用户定义字符串来过滤结果。您还可以通过按F3键获得自定义搜索功能。


1

如果两个进程的问题,你可以使用只有 grep的:

grep firefox /proc/*/cmdline

0

我刚刚在Lennart Poettering博客上阅读了这个ps别名。输出是根据systemd控制组的父项:

alias psc='ps xawf -eo pid,user,cgroup,args'
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.