一、进程查看指令
1、pstree
pstree 命令详解
pstree 是一个用于显示当前系统中进程树结构的命令行工具,以树状图形式直观展示进程间的父子关系。以下是其核心功能及使用方法:
基本语法
pstree [选项] [PID或用户名]
- 无参数时默认显示所有进程的树状结构。
- 指定
PID或用户名可查看特定进程或用户所属的进程树。
常用选项
-p:显示进程的 PID
pstree -p
输出示例:
-a:显示命令行参数
pstree -a
输出示例:
-n:按 PID 数值排序(默认按进程名排序)
pstree -n
输出示例:
-h:高亮当前进程及其祖先
pstree -h $$
输出示例:

($$ 表示当前 shell 的 PID)
-G 或 -U:使用图形化字符(UTF-8)或 ASCII 字符绘制树状线
pstree -G # UTF-8 风格
pstree -U # ASCII 风格
示例:


应用示例
查看特定进程的子树
pstree 1234 # 显示 PID 为 1234 的进程及其子进程

显示用户进程树
pstree username # 查看指定用户的进程

结合 grep 过滤
pstree -p | grep nginx # 查找 nginx 相关进程
注意事项
- 若系统未安装
pstree,可通过包管理器安装:sudo apt install psmisc # Debian/Ubuntu sudo yum install psmisc # CentOS/RHEL
2、ps
ps 命令用于显示当前系统的进程状态。以下是常用选项和用法。
ps aux
aux 选项组合显示所有用户的进程详细信息:
a:显示终端上的所有进程。u:以用户为主的格式显示。x:显示无控制终端的进程。- A:所有的进程均显示出来,与 -e 具有同样的效用
- l:较长、较详细的将该PID 的的信息列出

输出解析:
-
USER:进程的所有者。 -
PID:进程的 ID。 -
%CPU:进程占用的 CPU 百分比。 -
%MEM:进程占用的内存百分比。 -
VSZ:进程使用的虚拟内存大小。 -
RSS:进程使用的物理内存大小。 -
TTY:进程所在的终端。 -
STAT:进程的状态,如S(休眠)、R(运行)、Z(僵尸进程)等。 -
START:进程的启动时间。 -
TIME:进程运行的时间。 -
COMMAND:启动进程的命令。
进程状态:

3、pgrep
pgrep命令的功能
pgrep是Linux/Unix系统中用于根据进程名称或其他属性查找进程ID(PID)的工具。它通过匹配进程名或其他条件直接返回PID,避免使用ps和grep的组合操作。
基本用法
pgrep [选项] <进程名或模式>
- 常用选项:
-l:同时显示进程名和PID。
-u:按用户筛选进程(如-u root)。
-x:精确匹配整个进程名(而非部分匹配)。
-f:匹配完整命令行(包括参数)。
-n:仅显示最新的匹配进程。
示例代码
- 查找所有包含
nginx的进程PID:
pgrep nginx
- 显示进程名和PID:
pgrep -l nginx
- 精确匹配名为
nginx的进程:
pgrep -x nginx
- 查找特定用户运行的
bash进程:
pgrep -u root bash
- 通过完整命令行匹配进程(如带参数的Python脚本):
pgrep -f "python3 script.py"
注意事项
- 默认区分大小写,可通过
-i选项忽略大小写。 - 结合
pkill可直接终止查找到的进程(如pkill nginx)。 - 若未找到匹配进程,命令无输出且返回状态码
1。
与其他命令对比
ps aux | grep:功能更灵活但需手动解析输出。pidof:仅支持精确匹配进程名,不支持正则或用户过滤。
通过pgrep可高效简化进程查找操作,特别适合脚本中自动化处理。
4、top、htop
top 命令
top 是一个用于实时监控系统性能的交互式命令行工具,可以查看进程的 CPU、内存等资源使用情况。
基本用法
top

常用交互命令
q:退出topk:终止指定 PID 的进程M:按内存使用排序P:按 CPU 使用排序1:显示所有 CPU 核心的详细信息h:查看帮助
常用命令行参数
top -d 2 # 设置刷新间隔为 2 秒
top -p 1234 # 仅显示 PID 为 1234 的进程
top -u username # 仅显示指定用户的进程
htop 命令
htop 是 top 的增强版,提供更友好的交互界面和更多功能,如鼠标支持、颜色高亮、进程树查看等。
基本用法
htop

常用交互功能
- 方向键:选择进程
F9:终止进程F6:按指定列排序F5:以树状结构显示进程F2:配置显示选项
常用命令行参数
htop -d 5 # 设置刷新间隔为 5 秒
htop -u root # 仅显示 root 用户的进程
htop -p 1234 # 仅显示 PID 为 1234 的进程
对比
| 特性 | top | htop |
|---|---|---|
| 交互体验 | 基础 | 更友好,支持鼠标 |
| 颜色显示 | 无 | 支持颜色高亮 |
| 进程树 | 不支持 | 支持树状结构 |
| 自定义显示 | 有限 | 可配置列和布局 |
| 依赖安装 | 系统自带 | 需额外安装 |
安装 htop
若系统中未安装 htop,可通过以下方式安装:
yum install epel-release -y #安装epel源
yum install htop -y #安装htop
# Ubuntu/Debian
sudo apt install htop
# CentOS/RHEL
sudo yum install htop
# Arch Linux
sudo pacman -S htop
通过 top 和 htop 可以实时监控系统资源使用情况,快速定位资源占用高的进程。htop 在功能和交互上更强大,适合需要详细监控的场景。
二、进程管理命令
1、kill
语法:
kill [选项] pid
选项
| -l | 列出所有信号参数 |
| -a | 当处理当前进程时,不限制命令号和进程号的对应关系 |
| -u | 指定用户 |
| -p | 指定kill命令只打印相关的进程号,而不发送任何信号 |
| -s | 发送指定的信号 |
| -9 | 强制杀死 |
| -0 | 用来检测一个进程是否存在。 |
信号列表
1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL
5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE
9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR2
13) SIGPIPE 14) SIGALRM 15) SIGTERM 16) SIGSTKFLT
17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP
21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU
25) SIGXFSZ 26) SIGVTALRM 27) SIGPROF 28) SIGWINCH
29) SIGIO 30) SIGPWR 31) SIGSYS 34) SIGRTMIN
35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3 38) SIGRTMIN+4
39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8
43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12
47) SIGRTMIN+13 48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14
51) SIGRTMAX-13 52) SIGRTMAX-12 53) SIGRTMAX-11 54) SIGRTMAX-10
55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7 58) SIGRTMAX-6
59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2
63) SIGRTMAX-1 64) SIGRTMAX
以下是这些信号的翻译和简要说明(保留编号和英文缩写,便于技术参考):
---
### Linux/Unix 信号列表(带编号)
1. **SIGHUP (1)** - 挂起信号(终端断开/进程重载配置)
2. **SIGINT (2)** - 中断信号(Ctrl+C,强制终止进程)
3. **SIGQUIT (3)** - 退出信号(Ctrl+\,终止并生成核心转储)
4. **SIGILL (4)** - 非法指令信号(CPU遇到无效指令)
5. **SIGTRAP (5)** - 陷阱信号(调试器用,如断点触发)
6. **SIGABRT (6)** - 中止信号(如 `abort()` 调用或断言失败)
7. **SIGBUS (7)** - 总线错误(内存访问违规)
8. **SIGFPE (8)** - 算术异常(如除零错误)
9. **SIGKILL (9)** - 强制终止信号(不可捕获或忽略)
10. **SIGUSR1 (10)** - 用户自定义信号 1
11. **SIGSEGV (11)** - 段错误(无效内存访问)
12. **SIGUSR2 (12)** - 用户自定义信号 2
13. **SIGPIPE (13)** - 管道破裂(写入无读端的管道)
14. **SIGALRM (14)** - 定时器信号(由 `alarm()` 触发)
15. **SIGTERM (15)** - 终止信号(可捕获的优雅退出请求)
16. **SIGSTKFLT (16)** - 协处理器栈错误(已弃用)
17. **SIGCHLD (17)** - 子进程状态变更(终止/暂停)
18. **SIGCONT (18)** - 继续执行(恢复已暂停的进程)
19. **SIGSTOP (19)** - 暂停信号(不可捕获,强制暂停)
20. **SIGTSTP (20)** - 终端暂停信号(Ctrl+Z,可捕获)
21-64 为其他信号(部分为实时信号),例如:
- **SIGTTIN (21)** - 后台进程尝试读取终端
- **SIGTTOU (22)** - 后台进程尝试写入终端
- **SIGRTMIN (34)** 到 **SIGRTMAX (64)** - 自定义实时信号
---
### 关键说明:
- **不可忽略的信号**:`SIGKILL (9)` 和 `SIGSTOP (19)` 不能被程序捕获或忽略。
- **常见错误信号**:`SIGSEGV`(段错误)、`SIGBUS`(内存错误)、`SIGFPE`(算术异常)。
- **用户自定义**:`SIGUSR1`/`SIGUSR2` 常用于进程间自定义通信。
如需更详细的某个信号解释,可以指定进一步说明!
2、pkill与killall
pkill是ps命令和kill命令的结合,按照进程名来杀死指定进程,pkill和killall应用方法差不多,也是直接杀死运行中的程序,如果想杀掉单个进程,请用kill来杀掉。
语法
pkill/killall [选项] 进程名
三、进程类型
1、前台进程
在终端界面运行的进程,运行前台进程,终端无法操作
#将前台进程放到后台运行
firefox &
#注意:该运行前台进程的方式,当终端关闭时,进程也会随着关闭
nohup firefox & #关闭终端,进程不掉
#查看
jobs
#将进程调到前台运行
fg 1
#将正在运行的前台进程放到后台运行
ctrl + z
bg 1
2. 后台进程(Background Process)
特点
-
不占用终端:后台进程与终端分离,用户可继续在同一个终端输入其他命令。
-
无交互输入:默认不接收键盘输入(若尝试读取输入会暂停,见
SIGTTIN)。 -
输出可能干扰终端:后台进程的输出仍可能打印到终端(可通过重定向避免)。
典型场景
-
长时间运行的任务(如日志分析、编译大型项目)。
-
无需用户干预的服务(如
python server.py &)。
458

被折叠的 条评论
为什么被折叠?



