ps、top、htop、pgrep、pidof等命令用于查看Linux进程信息:ps提供静态快照,top和htop实现动态监控,pgrep和pidof按名称查找进程ID;其中ps的STAT列显示进程状态,如R(运行)、S(睡眠)、Z(僵尸)等;top默认按CPU使用率排序,可结合P、M、N键切换排序方式,并用k键终止高耗进程;pgrep结合kill可精准结束指定进程,如pgrep firefox获取PID后执行kill或kill -9强制终止。

查看Linux命令行中的进程信息,主要依靠
ps、
top、
htop、
pgrep、
pidof等命令。它们各有侧重,可以从不同角度展示系统进程的运行状态。
ps命令:静态快照 top命令:动态实时视图 pgrep命令:根据名称查找进程ID pidof命令:查找指定程序运行的进程ID
ps命令是最基础的,它能提供进程的静态快照。但如果你想实时监控进程动态,top命令就更合适了。而当你只想找到某个特定进程的ID时,pgrep或者pidof会更便捷。
解决方案
1. 使用 ps
命令:
ps命令提供了进程的静态快照。常用的选项包括:
ps aux
: 显示所有用户的进程,包括没有控制终端的进程。a
显示所有用户,u
显示用户名和启动时间,x
显示没有控制终端的进程。ps -ef
: 显示所有进程的详细信息,包括父进程ID (PPID)。e
显示所有进程,f
显示完整格式。ps -u <用户名>
: 显示特定用户的进程。例如,ps -u john
。
例如,
ps aux | grep firefox可以查找包含 "firefox" 关键字的进程。
2. 使用 top
命令:
top命令提供了一个动态、实时的系统进程视图。它可以按 CPU 使用率、内存使用率等排序进程。
- 运行
top
命令后,你可以使用不同的按键进行排序:P
: 按 CPU 使用率排序。M
: 按内存使用率排序。N
: 按 PID 排序。
top -u <用户名>
: 监控特定用户的进程。
3. 使用 htop
命令:
htop是
top的一个增强版本,提供了更友好的界面和更多的功能,例如彩色显示、鼠标操作等。如果你的系统没有预装
htop,可以使用包管理器安装,如
sudo apt install htop(Debian/Ubuntu) 或
sudo yum install htop(CentOS/RHEL)。
4. 使用 pgrep
命令:
pgrep命令允许你根据进程名或其他属性查找进程 ID。
pgrep <进程名>
: 例如,pgrep firefox
会返回所有名为 "firefox" 的进程的 PID。pgrep -u <用户名> <进程名>
: 查找特定用户的进程 ID。
5. 使用 pidof
命令:
pidof命令用于查找指定程序运行的进程 ID。
pidof <程序名>
: 例如,pidof firefox
。注意,pidof
可能不如pgrep
灵活,因为它只能根据程序名查找。
6. 使用 pstree
命令:
pstree命令以树状图的形式显示进程之间的父子关系。
在现实生活中的购物过程,购物者需要先到商场,找到指定的产品柜台下,查看产品实体以及标价信息,如果产品合适,就将该产品放到购物车中,到收款处付款结算。电子商务网站通过虚拟网页的形式在计算机上摸拟了整个过程,首先电子商务设计人员将产品信息分类显示在网页上,用户查看网页上的产品信息,当用户看到了中意的产品后,可以将该产品添加到购物车,最后使用网上支付工具进行结算,而货物将由公司通过快递等方式发送给购物者
pstree
: 显示所有进程的树状图。pstree -p
: 显示进程 ID。pstree <用户名>
: 显示特定用户的进程树。
如何理解ps命令输出结果中的STAT列?
ps命令输出的
STAT列表示进程的状态。它由多个字符组成,每个字符代表进程的不同状态属性。
-
第一个字符 表示进程的主要状态:
R
(Running): 正在运行或准备运行。S
(Sleeping): 睡眠状态,等待事件发生。D
(Disk sleep): 不可中断的睡眠状态,通常在等待 I/O 操作完成。T
(Stopped): 停止状态,通常是被信号暂停。Z
(Zombie): 僵尸进程,进程已结束,但父进程尚未回收其资源。<
(High-priority): 高优先级进程。N
(Low-priority): 低优先级进程。L
(Locked memory): 进程的内存被锁定,不会被交换到磁盘。
-
其他字符 表示进程的附加状态:
S
(session leader): 会话领导者。L
(multi-threaded): 多线程进程。+
(foreground process group): 前台进程组。W
(paging): 进程正在进行内存交换。
例如,
Ss表示该进程是睡眠状态,并且是会话领导者。
R+表示该进程正在运行,并且是前台进程组。
如何使用top命令监控CPU使用率高的进程?
top命令可以实时监控 CPU 使用率高的进程。运行
top命令后,默认会按照 CPU 使用率排序。
-
运行
top
命令: 在终端输入top
并按回车键。 -
观察
%CPU
列:top
命令会显示一个进程列表,其中%CPU
列表示每个进程占用的 CPU 百分比。 - 查找 CPU 使用率高的进程: 列表顶部通常是 CPU 使用率最高的进程。
-
使用
k
命令杀死进程(谨慎操作): 如果你想结束某个 CPU 使用率过高的进程,可以按下k
键,然后输入要结束的进程的 PID(进程 ID),再按回车键。top
命令会提示你输入要发送的信号,默认是SIGTERM
(15),可以尝试使用该信号。如果进程没有正常结束,可以尝试使用SIGKILL
(9) 信号,但请注意,SIGKILL
会强制结束进程,可能导致数据丢失。
在
top命令中,你还可以使用以下按键:
P
: 按 CPU 使用率排序(默认)。M
: 按内存使用率排序。N
: 按 PID 排序。h
: 显示帮助信息。q
: 退出top
命令。
如何使用pgrep和kill命令杀死指定进程?
pgrep命令用于查找进程 ID,
kill命令用于向进程发送信号,通常用于结束进程。
-
使用
pgrep
查找进程 ID:pgrep <进程名>
例如,要查找所有名为 "firefox" 的进程的 PID,可以运行
pgrep firefox
。 -
使用
kill
命令结束进程:kill <进程ID>
例如,如果
pgrep firefox
返回的 PID 是 1234,那么可以使用kill 1234
来结束该进程。kill -9 <进程ID>
: 使用SIGKILL
信号强制结束进程。请谨慎使用该信号,因为它会立即结束进程,可能导致数据丢失。
示例:
# 查找 firefox 进程的 PID
pids=$(pgrep firefox)
# 检查是否找到了进程
if [ -n "$pids" ]; then
# 循环结束所有找到的进程
for pid in $pids; do
echo "正在结束进程 $pid"
kill $pid
done
else
echo "没有找到 firefox 进程"
fi这个脚本首先使用
pgrep查找所有 "firefox" 进程的 PID,然后使用一个循环来结束所有找到的进程。如果
pgrep没有找到任何进程,脚本会输出一条消息。









