在Linux Shell中,pgrep
和 pkill
命令都是用来根据进程名来管理和操作进程的有效工具:
pgrep:pgrep
命令用于查找运行中的进程ID(PID)。它可以按名称正则表达式匹配来筛选进程。一些常用的选项包括:
-f
或-a
:显示完整命令行,包括参数。-l
或-list-full
:不仅显示进程ID,还显示进程的完整命令行。-n
:只显示匹配进程的最新(最新的进程ID)进程。-o
:只显示匹配进程的最旧(启动最早的进程ID)进程。-u
:指定用户名,仅显示由该用户拥有的进程。
示例:
pgrep -f "nginx" # 查找名为nginx的进程(包含在命令行中的任何地方)
pgrep -a nginx # 显示完整命令行且包含nginx的进程
pgrep -u www-data nginx # 查找属于www-data用户的nginx进程
pkill:pkill
命令用于向指定名称的进程发送信号,默认情况下是发送终止(SIGTERM)信号,以结束进程。它同样支持正则表达式匹配。
-SIG
:发送指定的信号给进程,例如-9
发送 SIGKILL 信号强制结束进程。-o
、-n
、-u
、-P
、-g
、-t
等选项同pgrep
命令,用于精确指定要发送信号的进程。
示例:
pkill -9 nginx # 强制结束所有名为nginx的进程
pkill -SIGINT tail # 向所有名为tail的进程发送中断信号(Ctrl+C 效果)
pkill -u user_name process_name # 结束属于特定用户名的进程
注意:在使用这些命令时,特别是 pkill
,务必谨慎操作,因为误操作可能会导致重要进程意外终止。在生产环境中,应确认目标进程后再执行操作。