Linux 入门到精通,真的不用背命令!零基础小白靠「场景化学习法」,3 个月拿下运维 offer,第二十二天

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:长格式输出,显示更多字段(如 FSPRINI)。

  • -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 - 64SIGRTMIN+1 至 SIGRTMAX 是一系列的实时信号,用于实时应用程序中的优先级信号传递等
2、pkill与killall

pkill是ps命令和kill命令的结合,按照进程名来杀死指定进程,pkill和killall应用方法差不多,也是直接杀死运行中的程序,如果想杀掉单个进程,请用kill来杀掉。

用法

pkill/killall [选项] 进程名

三、进程类型

前台进程

在终端界面运行的进程,运行前台进程后,终端无法操作

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值