在 Linux 系统中,有多种有效的方法可以过滤和查找进程。以下是几种常用的方法:
ps
命令过滤ps
是最基础的进程查看工具,可以通过多种方式过滤:
# 按名称过滤
ps -ef | grep process_name
# 按用户过滤
ps -u username
# 按CPU/内存使用排序
ps aux --sort=-%cpu | head # 按CPU降序
ps aux --sort=-%mem | head # 按内存降序
# 精确匹配进程名(避免grep自身出现在结果中)
ps -ef | grep [p]rocess_name
pgrep
命令pgrep
专门用于查找进程ID:
# 查找指定名称的进程ID
pgrep process_name
# 查找并显示进程名
pgrep -l process_name
# 按用户过滤
pgrep -u username process_name
pstree
查看进程树# 显示进程树
pstree
# 显示特定用户的进程树
pstree username
# 显示进程ID
pstree -p
htop
或 top
交互式过滤# 启动htop后按F4可以过滤进程
htop
# 在top中按"o"可以添加过滤条件
top
pidof
查找进程ID# 查找指定程序的进程ID
pidof program_name
ss
或 netstat
过滤网络相关进程# 查看监听特定端口的进程
ss -ltnp | grep :80
# 等同于
netstat -ltnp | grep :80
lsof
按文件或端口过滤# 查看使用特定文件的进程
lsof /path/to/file
# 查看使用特定端口的进程
lsof -i :80
# 查看特定用户打开的文件/进程
lsof -u username
# 查找并杀死特定进程
pkill process_name
# 或者
kill $(pgrep process_name)
# 查找并显示特定进程的详细信息
ps -p $(pgrep -d, process_name) -o pid,user,cmd,start_time
/proc
文件系统# 查看所有进程目录
ls /proc | grep -E '^[0-9]+$'
# 查看特定进程的信息
cat /proc/PID/status
选择哪种方法取决于具体需求,简单的进程查找可以使用 pgrep
或 pidof
,复杂的过滤可以使用 ps
配合管道和 grep
,而交互式操作则可以使用 htop
。