0%

按名字找进程 - pgrep

按名字找进程 - pgrep

.. _linux_pgrep_beginner:

.. note::
众里寻他千百度。蓦然回首,那人却在,灯火阑珊处。
宋 辛弃疾《青玉案·元夕》

ps 扫一整屏再 grep,能用,但手酸。pgrep 按名字(或其它属性)直接把 PID 吐出来,专干「找进程」这一件事。要喊停,请看姊妹篇 :ref:linux_pkill_beginner——man 页虽合写,职责分开更清晰。

官方定义为:

pgrep, pkill - look up or signal processes based on name and other attributes

命令格式

1
$ pgrep [选项] pattern

常用选项:

  • -u 用户:只看该用户的进程
  • -l:顺带打印进程名
  • -a:打印更完整的命令行
  • -f:用完整命令行匹配

默认只给 PID

1
2
3
4
5
$ pgrep ssh
3073
3833
4475
5786

输出干净,方便塞进脚本:kill $(pgrep ...) 一类(写之前先确认匹配范围)。

指定用户

1
2
3
$ pgrep -u alice ssh
4475
22084

列出进程名

光看数字不够时:

1
2
3
4
$ pgrep -l ssh
3073 sshd
3833 ssh-agent
4475 ssh-agent

更详细的命令行

1
2
3
$ pgrep -a ssh
3073 /usr/sbin/sshd -D
3833 /usr/bin/ssh-agent /etc/X11/xinit/Xclients

找到目标之后若要终止,用 :ref:linux_pkill_beginner 或 :ref:linux_kill_beginner,先 pgrep 预览再动手,少误伤。

处无为之事,行不言之教;作而弗始,生而弗有,为而弗恃,功成不居!