🍖Linux进程管理

一.进程介绍

1.进程

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

2.并行与并发

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

3.线程

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

4.任务三种状态

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

5.提交任务的两种方式

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

二.进程信息的查看

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

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

2.命令显示结果

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代表当前进程的父进程)

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秒刷新一次

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

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

  • 动态信息含义

⛅首行(可按小写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 列出当前系统支持的信号

⛅常用信号

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

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

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

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

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

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

⛅信号使用示例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

  • TOP常用内部命令

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