24.Linuxあ进程管理

1|0一.进程介绍

1|11.进程

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

1|22.并行与并发

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

1|33.线程

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

1|44.任务三种状态

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

1|55.提交任务的两种方式

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

2|0二.进程信息的查看

2|11.ps aux 组合命令,查看进程信息

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

2|22.命令显示结果

2|33.首行信息代表含义

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 杀死

2|44.ps -elf 查看命令

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

2|55.查看进程不同状态

  • 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
🌵捕捉到了三种状态

2|66.查看进程树

🌵先安装"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

2|77.动态查看用法top

  • 1|0常用选项

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

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

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

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

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

  • 1|0动态信息含义

⛅首行(可按小写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 共享内存
  • 1|0进程信号

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

  • 1|0TOP常用内部命令

 

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


__EOF__

本文作者ଲ小何才露煎煎饺
本文链接https://www.cnblogs.com/zeny/articles/14443898.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   ଲ小何才露煎煎饺  阅读(58)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
点击右上角即可分享
微信分享提示