06 进程管理

193次阅读
没有评论

共计 3764 个字符,预计需要花费 10 分钟才能阅读完成。

一. 进程介绍

1. 进程

  • 程序: 存放代码的文件(静态概念)
  • 进程: 程序运行的过程(动态概念)
  • 同一个程序可能对应多个进程
  • 父进程: 程序运行时产生的第一个进程
  • 子进程: 由父进程衍生出来的进程(比如在 bash 里再开一个 bash)
  • 如果父进程终止, 子进程也会随之终止
  • 进程是操作系统最核心的概念

2. 并行与并发

  • 并发: 多个任务看起来是同时运行的
  • 并行: 多个任务真正的同时运行(只有多核再能实现并行)

3. 线程

  • 线程是进程内代码执行的过程
  • 线程才是 CPU 上的执行单位
  • 一个进程至少有一个线程
  • 强调:CPU 只做代码的运行, 而不涉及 I / O 操作

4. 任务三种状态

  • 运行态
  • 就绪态
  • 阻塞态
  • 不是阻塞态就是非阻塞态

5. 提交任务的两种方式

  • 同步
 同步是指发送方发送数据后, 等接收方发回响应后才发下一个数据包的通讯方式
  • 异步
异步是指发送方发出数据后, 不等接收方发回响应, 接着就发下个数据包的通讯方式
  • 例子
1. 快递小哥给你送快递, 如果他打电话叫你过来拿, 他在那里等你, 等你从他手上把快递拿走了他才去送别人的快递, 这个就称之为同步
2. 快递小哥把你快递放在丰巢柜或者驿站, 然后打个打电话或者发个信息告诉你快递到了让你自己去拿, 然后小哥去干别的事了, 这个就是异步(效率更高一点)

二. 进程信息的查看

1.ps aux 组合命令, 查看进程信息

-a 显示一个终端的所有进程
-u 选择有效的用户 ID 或者是用户名
-x 显示没有控制终端的进程, 同时显示各个命令的具体路径

2. 命令显示结果

06 进程管理

3. 首行信息代表含义

USER 运行进程的用户
PID 进程运行的 ID 号
%CPU 进程占用 CPU 百分比
%MEM 进程占用内存百分比
VSZ 进程占用虚拟内存的大小(单位: KB)
RSS 进程占用物理内存的实际大小(单位: KB)
TTY 进程运行的终端(tty1, pts/ 0 虚拟终端等)
STAT 进程运行过程中的状态(R S D T Z X < N s + l |) "man" 查询
START 进程启动时间
TIME 进程占用 CPU 的总时间("0" 表示还没有超过 "1" 秒)
COMMAND 程序运行指令, 有 [] 代表内核态进程, 没有 [] 代表用户态进程
  • VSZ : 是指已分配的线性空间大小, 这个大小通常并不等于程序实际用到的内存大小,(内存映射, 共享的动态库, 或向系统申请了更多的堆都会扩大线性空间)
  • RSS : 常驻内存大小, 即进程实际占用的物理内存大小

  • STAT进程状态

R 进程运行
S 可中断睡眠(sleep), 执行 I / O 操作可得到硬件设备响应
D 不可中断睡眠, 执行 I / O 操作得不到硬件设备的响应
T 停止的进程
Z 僵尸进程
s 大 S 后面的小 s, 代表包含子进程
< 优先级较高的进程
N 优先级较低的进程
+ 前台运行的进程
|(管道符号) 代表多进程
X 死掉的进程(几乎看不见, 死掉后就被回收了)
l(小写 l) 以多线程的方式运行
  • D状态与 Z 状态的进程都无法使用 kill -9 杀死

4.ps -elf 查看命令

  • 选项
-e 显示所有进程
-f 全格式
-l 长格式
  • 三种查看效果对比 (PPID 代表当前进程的父进程)

06 进程管理

5. 查看进程不同状态

  • S+状态与 T 状态切换
🌵打开一个文件进行编辑
[root@shawn ~]# vim aaa.txt
🌵ps 查看
[root@shawn ~]# ps aux | grep [v]im
root      94654  0.0  0.5 149816  5408 pts/0    S+   17:04   0:00 vim aaa.txt
🌵Ctrl + z 暂停挂到后台再查看
[root@shawn ~]# ps aux | grep [v]im
root      94654  0.0  0.5 149816  5408 pts/0    T    17:04   0:00 vim aaa.txt
  • 查看 S+ R+ D+ 状态
🌵我们将这些目录打包压缩成一个压缩包, 内容比较大
[root@shawn ~]# tar cfz /aaa.gz /home /opt /boot /run
🌵然后不断地使用 "ps" 命令去查看 "tar" 的运行状态
[root@shawn ~]# ps aux | grep [t]ar
root      96003  5.0  0.1 123808  1408 pts/0    S+   17:30   0:00 tar cfz /aaa.gz /home /opt /boot /run
[root@shawn ~]# ps aux | grep [t]ar
root      96003  6.8  0.1 123808  1408 pts/0    R+   17:30   0:00 tar cfz /aaa.gz /home /opt /boot /run
[root@shawn ~]# ps aux | grep [t]ar
root      96003  5.5  0.1 123808  1408 pts/0    D+   17:30   0:01 tar cfz /aaa.gz /home /opt /boot /run
🌵捕捉到了三种状态

6. 查看进程树

🌵先安装 "pstree" 应用
[root@shawn ~]# yum -y install psmisc
[root@shawn ~]# rpm -qf `which pstree`
psmisc-22.20-16.el7.x86_64
🌵查看
[root@shawn ~]# pstree
systemd─┬─VGAuthService
        ├─abrt-watch-log
        ├─abrtd
        ├─auditd───{auditd}
        ├─crond
        ├─dbus-daemon
        ├─login───bash
        ├─master─┬─pickup
        │        └─qmgr
        ├─polkitd───6*[{polkitd}]
        ├─rsyslogd───2*[{rsyslogd}]
        ├─sshd─┬─sshd───bash
        │      └─sshd───bash───pstree
        ├─systemd-journal
        ├─systemd-logind
        ├─systemd-udevd
        ├─tuned───4*[{tuned}]
        └─vmtoolsd───{vmtoolsd}
[root@shawn ~]# pstree 95327    (查看某一个进程)
bash───pstree

7. 动态查看用法 top

  • 常用选项

-d 指定刷新时间(秒)
-p 指定某个进程(PID)
-u 查看指定用户的进程
  • 选项示例

⛅查看指定进程 ID 的进程信息

top -d 1 -p 11019 1 秒刷新一次

06 进程管理

⛅查看指定用户开启的所有进程信息

top -d 1 -u song1 1 秒刷新一次

06 进程管理

  • 动态信息含义

06 进程管理

⛅首行(可按小写 L 选择开启或关闭)

top 当前时间
up 系统已运行时间
users 登入的用户数量
load average 平均负载(1 分钟,5 分钟,15 分钟)

⛅第二行

Tasks: 111 total 表示有 111 个进程
running 正在运行的进程数
sleeping 正在睡眠的进程数
stopped 停止的进程数
zombie 僵尸进程数

⛅第三行

%CPU(s):(按 "1" 可以展开) 表示各种占用 CPU 的百分比
us 用户态占用 CPU 百分比
sy 内核态占用 CPU 百分比
ni nice 值
id 空闲 CPU 百分比
wa cpu 等待 I / O 完成时间
hi 硬件中断占 CPU 百分比
si 软件中断占 CPU 百分比
st 被虚拟化偷走的 CPU 时间

⛅第四行

KIB Mem : 物理内存
total 物理内存总空间
free 空闲空间
used 已用空间
buff / cache 缓冲 / 缓存占用空间

⛅第五行

KIB Swap : 交换分区大小
total 交换分区总空间
free 空闲空间
used 已用空间
avail Mem 可用内存

⛅信息字段含义补充

PR 优先级(比 NI 大 20)
NI nice 值, 也表示优先级
VIRT 虚拟内存(线性空间)
RES 进程当前使用的内存大小
SHR 共享内存
  • 进程信号

kill -l 列出当前系统支持的信号

06 进程管理

⛅常用信号

编号 含义 作用
1 SIGHUP 不用重启进程直接重新加载配置文件
9 SIGKILL 强制杀死进程(D,Z 杀不死)
15 SIGTERM 终止进程, kill 默认就是这个信号
18 SIGCONT 让被停止的进程恢复运行
19 SIGSTOP 暂停进程

⛅信号使用示例(使用信号 18,19)

🌵我们开启一个 "ping" 进程
# ping 192.168.12.1

06 进程管理

🌵使用 "ps" 命令查看 "ping" 进程
# ps aux | grep [p]ing

06 进程管理

🌵停止进程挂职后台
# kill -19 25002
    或者 Ctrl + z
🌵再次查看状态
# ps aux | grep [p]ing

06 进程管理

🌵使用 "18" 信号将其继续运行
# kill -18 25002
# ps aux | grep [p]ing

06 进程管理

⛅信号使用示例 2(使用信号 1)

🌵使用信号 "1", 再不重启进程 (进程号不变) 的情况下重新载入配置
# vim /etc/vsftpd/vsftpd.conf    (编辑 ftp 配置文件)
# ps aux | grep [v]sftpd         (查看 ftp 进程信息)
root 11019  0.0  0.0  53288   772 ?  Ss   17:21  0:00 /usr/sbin/vsftpd/etc/vsftpd/vsftpd.conf

# kill -1 11019                  (重载 ftp 配置文件)

⛅根据进程名杀死所有进程

# killall -9 vim   (杀死所有的 "vim" 进程)
# pkill -9 vim     (杀死所有的 "vim" 进程)

⛅查看某个用户开启的进程

# pgrep -l -u song1

06 进程管理

  • TOP 常用 内部命令

s(默认 3 秒) 修改刷新时间, 建议不要设置很小, 会消耗 CPU 资源
q 退出, 或者是 Ctrl + c
M 按照内存占用率大小从大到小排序
P 按照 CPU 占用率从大到小排序
N 按照 PID 从大到小排序
(R) 以上配合 R 可进行倒序
(shift + > <) 以上配合左右可进行左右字段选择
f 增加显示的字段, 空格键选择
k 发送信号
数字 "1" 展开显示所有的 CPU 信息
z 变颜色
"⬆","⬇" 向上向下进行翻页查看
r 调整进程优先级

三. 关于 HUP 信号

正文完
 
shawn
版权声明:本站原创文章,由 shawn 2023-06-16发表,共计3764字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)