pgrep通过模式匹配支持多条件筛选,适合复杂查询;pidof按程序名精确查找,简单高效,适用于服务监控。

在Linux系统中,pgrep 和 pidof 是两个常用于查找进程ID(PID)的命令。它们功能相似但使用方式和匹配机制略有不同,适用于不同的排查场景。下面详细介绍这两个命令的用法、区别以及常见操作示例。
pgrep:通过模式匹配查找进程
pgrep 命令根据用户提供的模式(如进程名、用户、终端等)搜索正在运行的进程,并输出其PID。它支持多种筛选条件,灵活性较高。
常用选项:-u 用户名:查找指定用户的进程 -t 终端名:查找在指定终端上运行的进程 -f:匹配完整的命令行(包括参数) -l:同时显示进程名(或命令) -n:返回最新启动的匹配进程(PID最大) -o:返回最老启动的匹配进程(PID最小)使用示例:pgrep sshd:查找所有名为sshd的进程PID pgrep -u root sshd:查找root用户运行的sshd进程 pgrep -l bash:列出bash进程的PID和名称 pgrep -f “python script.py”:根据完整命令行查找进程 pgrep -n java:获取最近启动的Java进程PID
pidof:通过程序名查找进程ID
pidof 是一个更简单的工具,主要用于根据二进制程序名查找对应的进程PID。它本质上是调用 /sbin/killall5 实现,基于进程名精确匹配。
特点说明:默认只匹配可执行文件的名称(不包括路径或参数) 不支持复杂的过滤条件(如用户、终端) 通常由 init 系统或脚本使用,适合快速获取服务进程ID使用示例:pidof sshd:获取所有sshd进程的PID pidof nginx:查看Nginx主进程和工作进程的PID pidof -s httpd:仅返回一个PID(常用于脚本判断) pidof -o 1 systemd:排除PID为1的进程(即排除init)
pgrep 与 pidof 的主要区别
虽然两者都能获取进程PID,但在实际使用中有明显差异:
匹配方式:pgrep 支持模糊匹配和正则表达式;pidof 要求精确匹配程序名 灵活性:pgrep 可按用户、终端、完整命令行等条件筛选;pidof 功能较单一 跨平台性:pidof 是 sysvinit 工具集的一部分,某些最小化系统可能缺失;pgrep 属于 procps-ng 包,更通用 脚本适用性:pidof 更适合简单服务监控脚本;pgrep 更适合诊断和复杂查询
实用技巧与注意事项
在日常运维或脚本编写中,合理使用这两个命令能提升效率。
结合 kill 使用:如 kill $(pgrep app_name) 快速终止进程 避免误杀:使用 pgrep -l 先确认匹配结果再操作 脚本中判断进程是否存在:if pidof nginx > /dev/null; then … 注意程序名缩写问题:比如 firefox 实际运行时可能显示为 firefox-bin,导致 pidof 找不到 容器环境限制:在容器中,某些进程可能不可见,需确认命名空间范围基本上就这些。掌握 pgrep 和 pidof 的差异和用法,能让你更高效地管理和排查Linux进程问题。
以上就是Linux pgrep与pidof命令详解的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/196096.html
微信扫一扫
支付宝扫一扫