Linux进程管理
一、进程查看命令
1、pstree
用于查看进程树之间的关系,谁是父进程,谁是子进程,可以清楚的看出来是谁创建了谁
用法:
pstree [选项]
选项:
2、ps
显示系统当前进程瞬间运行状态
用法:
ps [选项]
选项:
[root@localhost ~]# ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.3 128384 6376 ? Ss 5月13 0:07 /usr/lib/systemd/systemd --sw
root 2 0.0 0.0 0 0 ? S 5月13 0:00 [kthreadd]
进程信息说明:
USER:进程所有者
PID:进程ID
%CPU:CPU占用百分比
%MEM:内存占用百分比
VSZ:虚拟内存使用量
RSS:物理内存使用量
TTY:关联终端
STAT:进程状态标识
START:启动时间
TIME:运行时长
COMMAND:启动命令
进程状态详解:
- S:休眠状态
- s:主进程(含子进程)
- R:运行状态
- Z:僵尸进程(父进程已终止但子进程未正常退出,导致资源占用)
使用说明:
在Linux系统中,执行ps aux命令可查看当前运行的进程详情。输出结果中的STAT(或S)列专门显示进程状态,反映进程的当前行为特征。
ps aux 输出的进程状态(STAT)详解
ps aux 的典型输出如下:
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.1 169316 13184 ? Ss May30 0:09 /sbin/init
root 2 0.0 0.0 0 0 ? S May30 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? I< May30 0:00 [rcu_gp]
...
其中 STAT 列 的字母组合表示进程的状态,常见的有:
常见进程状态组合
Ss:会话领导者(s),处于可中断睡眠(S),如 bash 终端进程。
Ssl:多线程(l)的会话领导者(s),如 systemd。
R+:前台运行(+)的进程(R),如 top 命令。
D:不可中断睡眠(D),常见于磁盘I/O密集型任务(如 dd 命令)。
Z:僵尸进程(Z),需要父进程回收资源。
I<:内核空闲线程(I),低优先级(<)。
如何查看进程状态?
ps aux(显示所有进程):
ps aux | grep nginx
输出示例:
root 1234 0.0 0.1 12345 6789 ? S May30 0:00 nginx: worker process
S 表示 nginx 处于可中断睡眠(等待请求)。
ps -efj(显示进程父子关系):
ps -efj
可查看 PPID(父进程ID)和 STAT 状态。
top / htop(动态查看进程状态):
top
ps -elf 是 Linux 中查看进程信息的常用命令之一,它以长格式(-l)和完整格式(-f)显示所有进程(-e),并提供更详细的进程状态信息。以下是 ps -elf 的详细解析:
3、ps -elf 命令详解
基本语法
ps -elf
-
-e:显示所有进程(等同于-A)。 -
-l:长格式输出,显示更多字段(如F、S、PRI、NI)。 -
-f:完整格式输出,显示完整的命令行(CMD)和用户信息。
ps -elf 输出字段解析
执行 ps -elf 后,输出类似如下格式:
F S UID PID PPID C PRI NI ADDR SZ WCHAN STIME TTY TIME CMD
4 S root 1 0 0 80 0 - 42336 - May30 ? 00:00:09 /sbin/init
1 S root 2 0 0 80 0 - 0 - May30 ? 00:00:00 [kthreadd]
1 I root 3 2 0 60 -20 - 0 - May30 ? 00:00:00 [rcu_gp]
...
各列含义如下:
4、关键字段详解
1. 进程状态(S 列)
与 ps aux 的 STAT 列相同,常见状态包括:
R:运行中(Running)。
S:可中断睡眠(Interruptible Sleep,等待事件)。
D:不可中断睡眠(Uninterruptible Sleep,通常与磁盘I/O相关)。
Z:僵尸进程(Zombie)。
T:已停止(Stopped,如被 SIGSTOP 暂停)。
I:空闲(Idle,内核线程)。
2. 优先级(PRI 和 NI)
PRI:进程的实际优先级(由内核动态调整,数值越小优先级越高)。
NI:Nice值(用户可调整的优先级修正值):
-20:最高优先级(抢占更多CPU)。
19:最低优先级(CPU友好,适合后台任务)。
3. WCHAN 列
显示进程当前等待的内核事件(如 poll、futex)。
若为 -,表示进程正在运行或无需等待。
4. CMD 列
-f 选项会显示完整命令行(包括参数),而 ps aux 默认截断长命令。
示例:
/usr/bin/python3 /app/server.py --port 8080 # 完整命令
ps -elf vs ps aux

5、常用组合命令
1. 查找特定进程
ps -elf | grep nginx
2. 查看进程树(父子关系)
ps -elf --forest
3. 按CPU或内存排序
ps -elf --sort=-%cpu # 按CPU降序
ps -elf --sort=-%mem # 按内存降序
4. 查看僵尸进程
ps -elf | grep 'Z'
6、pgrep
查看进程的信息,包括进程是否已经消亡,通过pgrep来获得正在被调度的进程的相关信息。 pgrep通过匹配其程序名,找到匹配的进程
用法:
pgrep [选项] pidname
选项:
注意:#pgrep命令用来查找进程的信息,通常会和kill命令来连用,在指定条件下kill问题进程
pgrep [选项] pidname #先查找进程号
kill [选项] pid #用kill 结束进程
7、top、htop
top:动态监控系统处理器状态,htop姑且称之为top的增强版
yum install epel-release -y #安装epel源
yum install htop -y #安装htop
常用选项
-d:指定更新的间隔时间,以秒为单位。
-n:指定更新的次数。
-p:监控指定进程的 ID。
-u:监控指定用户的进程。
常用按键
空格键:立即刷新显示。
M:按照内存使用百分比对进程进行排序。
P:按照 CPU 使用百分比对进程进行排序。
T:按照进程运行时间对进程进行排序。
q:退出 top 命令。
h:显示帮助信息。
案例
`top -d 5`:每隔 5 秒更新一次进程信息。
`top -n 2`:更新两次进程信息后退出。
`top -p 1234`:监控进程 ID 为 1234 的进程。
`top -u root`:监控 root 用户的进程。
二、进程管理命令
1、kill
语法:
kill [选项] pid
选项:
信号列表:
信号含义解析:
| 信号名称 | 作用 |
|---|---|
| SIGHUP | 终端挂起或者控制进程结束时发出的信号,通常用于通知守护进程重新读取配置文件等。 |
| SIGINT | 键盘中断信号,通常由用户按下 Ctrl+C 产生,用于终止正在运行的程序。 |
| SIGQUIT | 键盘退出信号,通常由用户按下 Ctrl+\ 产生,用于使程序异常退出并产生核心转储文件(如果可能)。 |
| SIGILL | 非法指令信号,表示程序执行了一条非法的机器指令。 |
| SIGTRAP | 跟踪陷阱信号,用于调试程序,通常由断点触发。 |
| SIGABRT | 异常终止信号,通常由程序内部的 abort 函数调用产生。 |
| SIGBUS | 总线错误信号,通常表示访问内存时出现了总线错误。 |
| SIGFPE | 浮点运算异常信号,例如除以零等浮点运算错误。 |
| SIGKILL | 强制终止信号,无法被捕获或忽略,用于立即终止进程。 |
| SIGUSR1 | 用户自定义信号 1,留给用户程序自定义用途。 |
| SIGSEGV | 内存访问越界信号,通常表示程序尝试访问非法的内存地址。 |
| SIGUSR2 | 用户自定义信号 2,留给用户程序自定义用途。 |
| SIGPIPE | 管道破裂信号,当进程向一个没有读端的管道写入数据时产生。 |
| SIGALRM | 闹钟信号,通常由 alarm 函数设置的定时器超时产生。 |
| SIGTERM | 终止信号,是 kill 命令默认发送的信号,用于请求程序正常终止。 |
| SIGSTKFLT | 协处理器栈错误信号,在某些特定架构的系统上使用。 |
| SIGCHLD | 子进程状态改变信号,当子进程终止、暂停或继续运行时,父进程会收到此信号。 |
| SIGCONT | 继续执行信号,用于使暂停的进程继续运行。 |
| SIGSTOP | 暂停进程信号,无法被捕获或忽略,用于暂停进程的执行。 |
| SIGTSTP | 终端停止信号,通常由用户按下 Ctrl+Z 产生,用于暂停前台进程的运行。 |
| SIGTTIN | 后台进程从控制终端读取数据时收到的信号。 |
| SIGTTOU | 后台进程向控制终端写入数据时收到的信号。 |
| SIGURG | 紧急数据到达信号,通常用于网络编程中表示有紧急数据需要处理。 |
| SIGXCPU | 超过 CPU 时间限制信号,表示进程超过了设定的 CPU 使用时间限制。 |
| SIGXFSZ | 超过文件大小限制信号,表示进程试图扩大文件超过了系统限制。 |
| SIGVTALRM | 虚拟定时器信号,用于在虚拟时间内设置定时器超时。 |
| SIGPROF | 性能分析定时器信号,用于性能分析工具。 |
| SIGWINCH | 窗口大小改变信号,当终端窗口大小发生改变时产生。 |
| SIGIO | 异步 I/O 信号,表示异步 I/O 事件发生。 |
| SIGPWR | 电源故障信号,在某些系统上表示电源状态发生变化。 |
| SIGSYS | 系统调用错误信号,表示进程执行了一个无效的系统调用。 |
| SIGRTMIN | 实时信号的最小值。 |
| 35 - 64 | SIGRTMIN+1 至 SIGRTMAX 是一系列的实时信号,用于实时应用程序中的优先级信号传递等 |
2、pkill与killall
pkill是ps命令和kill命令的结合,按照进程名来杀死指定进程,pkill和killall应用方法差不多,也是直接杀死运行中的程序,如果想杀掉单个进程,请用kill来杀掉。
用法:
pkill/killall [选项] 进程名
三、进程类型
前台进程
在终端界面运行的进程,运行前台进程后,终端无法操作

2005

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



