当前位置: 首页>>技术教程>>正文


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

, ,

问题描述

为了搜索过程,您可以将psgrep一起使用。

例如,搜索firefox

ps aux | grep firefox

如何在不使用grep的情况下获得相同的答案?

最佳解决方法

pgrep命令及其兄弟pkill正是为此目的而存在的:

  • pgrep firefox将列出其命令与firefox匹配的所有进程

  • pgrep -f firefox将列出整个命令行与firefox匹配的所有进程

  • pgrep -x firefox将列出其命令与firefox完全匹配的所有进程

  • … 等等。

当然,pgrep将从匹配中排除,因此不需要与ps | grep相关的grep仪式。


另一组工具是pidofkillall命令。这些不如pgreppkill灵活。

  • pidof firefox将列出命令为firefox的进程

次佳解决方法

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.

第三种解决方法

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

对于那些喜欢awk的人来说,这里有一个awk oneliner:ps -eF | awk '/process-name/ {print $11}'。使用ps -eF进程名称始终位于第11列。或者,如果您执行ps -eF | awk '{print $11}' | sort,则会获得进程名称的排序列表,并按字母顺序排序。将其导入less命令只是为了更容易地查看长文件列表。

第四种方法

一个很酷的技巧

$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,您可以搜索所需的名称。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/2354.html,未经允许,请勿转载。