欢迎光临
我们一直在努力

看就完了!linux进程管理!监控系统负载!!!!!

Linux 进程管理

进程介绍

补充:

  • 程序:没有运行的可执行文件。
  • 软件:包含程序、手册、配置文件等全套的东西。软件工程。
  • 进程:程序运行后,会使用cpu、内存、磁盘、网络等资源。
  • 线程:将程序划分成更小的执行单元。

进程是什么

进程是已启动的可执行程序的运行中实例。

进程由以下组成部分:

  • 已分配内存的地址空间
  • 安全属性,包括所有权凭据和特权
  • 程序代码的一个或多个执行线程
  • 进程状态

进程的环境包括:

  • 本地和全局变量
  • 当前调度上下文
  • 分配的系统资源,如文件描述符和网络端口

进程产生-fork

一、系统调用流程图解读(fork /exec/exit /wait)

  • fork()

    父进程调用 fork(),复制自身,一个调用,两份进程:父进程、子进程

    • 父进程:fork 返回子进程 PID
    • 子进程:fork 返回 0
  • exec ()(子进程常用)

    子进程调用 exec(),加载全新程序,覆盖子进程原有代码。

  • Shell 执行外部命令标准流程:bash → fork → 子进程exec运行sleep/md5sum

  • exit()

    子进程运行结束,主动退出,进入

    Z(僵尸进程)

  • wait ()(父进程调用)

    父进程执行wait(),回收僵尸子进程,彻底释放 PCB,进程变为 X 消亡态。

  • 核心结论:父进程不执行 wait,子进程会永久处于僵尸 Z 状态


    二、进程完整状态流转图

    流转主线

    new新建进程 → R就绪(Runnable) → R运行(Running)

  • 运行态 R 遇到阻塞:
    • sleep/ 等待网络 → S 可中断睡眠(信号可唤醒)
    • 等待磁盘 IO → D 不可中断睡眠(信号无法唤醒)
  • 运行态收到SIGSTOP → T 暂停态;收到SIGCONT恢复至就绪 R
  • 进程调用exit() → Z 僵尸进程
  • 父进程wait()回收 Z → X DEAD 彻底消亡(ps 无法观察)
  • 标识内核宏状态核心特点 + 实操例子
    R TASK_RUNNING 运行 / 就绪 正在 CPU 执行,或排队等待调度;md5sum /dev/zero CPU 满载进程
    S TASK_INTERRUPTIBLE 可中断睡眠 等待事件,能够被信号唤醒;sleep 10、等待网络连接
    D TASK_UNINTERRUPTIBLE 不可中断睡眠 等待硬件 IO;任何信号(kill -9)都无法杀死
    T TASK_STOPPED 暂停态 进程被冻结;Ctrl+z、kill -19 PID
    t TASK_TRACED 调试暂停 gdb/strace 调试程序时出现
    Z EXIT_ZOMBIE 僵尸进程 子进程已 exit,资源释放,仅保留 PID,等待父进程 wait 回收
    X EXIT_DEAD 消亡态 父进程回收完成,进程彻底消失;ps 永远看不到

    [meng@centos7 ~ 19:38:17]$ ps -e
    # -e 显示系统全部进程,简易输出格式

    [meng@centos7 ~ 19:38:31]$ ps -e |head -n 5
    # head -n 5,只展示输出前5行

    [meng@centos7 ~ 19:38:51]$ ps -ef |head -n 5
    # -ef:全部进程 + 完整格式,自带UID、PPID父进程ID

    [meng@centos7 ~ 19:38:58]$ ps -u meng u
    # -u meng 筛选meng用户所有进程,u启用详细展示格式

    [meng@centos7 ~ 19:39:15]$ ps -t pts/1 u
    # -t 指定终端,只查看pts/1内运行的进程

    [meng@centos7 ~ 19:39:34]$ tty
    # 查看当前登录终端设备名称

    [meng@centos7 ~ 19:39:47]$ ps -t pts/2 u
    # 查看当前终端pts/2下所有进程

    [meng@centos7 ~ 19:39:50]$ ps axu|head -n 5
    # axu:日常最常用,查看全部进程、包含后台无终端进程,展示CPU/内存/状态

    [meng@centos7 ~ 19:40:13]$ ps axf |head
    # axf:树形展示进程,直观查看父子进程关系

    [meng@centos7 ~ 19:43:25]$ ps -o pid,%cpu,%mem,command 1760
    # -o 自定义输出字段;查询指定PID进程信息

    [meng@centos7 ~ 19:43:25]$ ps axu –sort -%cpu
    # –sort -%cpu,按照CPU使用率降序排序(-代表降序)

    [meng@centos7 ~ 19:44:19]$ ps axu –sort -%cpu|tail -n 5
    # tail -n 5,截取输出最后5行

    [meng@centos7 ~ 19:44:56]$ ps axu –sort %cpu|head -n 5
    # –sort %cpu 不带负号,CPU使用率升序排列

    # 使用Here文档创建脚本 /usr/local/bin/study
    # 'EOF'带引号:内部变量不解析,原样写入文件
    [root@centos7 ~]# cat << 'EOF' > /usr/local/bin/study
    #!/bin/bash
    while true
    do
    # $@ 接收脚本所有传入参数;>> 追加写入study.log
    echo "$(date): I'm studying [ $@ ]" >> study.log
    sleep 1
    done
    EOF

    # 添加执行权限,全局命令(路径/usr/local/bin在PATH内,任意目录直接运行study)
    [root@centos7 ~]# chmod +x /usr/local/bin/study

    # -f 实时跟踪日志末尾输出
    [meng@centos7 ~ 19:46:23]$ tail -f study.log

    # & 后台运行;study 后面【放牛】作为参数,脚本内$@接收
    [meng@centos7 ~ 19:50:06]$ study 放牛 &
    [1] 14986

    # 同时启动两个后台任务
    [meng@centos7 ~ 19:50:07]$ study 放猪 & study 放羊 &
    [2] 15100
    [3] 15101

    # jobs 查看当前shell所有后台任务列表
    [meng@centos7 ~ 19:50:58]$ jobs

    # 新增后台任务
    [meng@centos7 ~ 19:51:07]$ study 放猴 &
    [4] 15923

    # 前台执行,按下 Ctrl+z 发送SIGTSTP(20号信号),进程暂停(T状态)
    [meng@centos7 ~ 19:53:13]$ study 放鸡
    ^Z
    [5]+ 已停止 study 放鸡

    # bg %5 :把编号5的暂停任务放到后台继续运行
    [meng@centos7 ~ 19:53:39]$ bg %5
    [5]+ study 放鸡 &

    [meng@centos7 ~ 19:53:58]$ jobs

    # 前台执行,Ctrl+C发送SIGINT,直接终止当前前台进程
    [meng@centos7 ~ 19:54:03]$ study 放鸡
    ^C

    # fg %1:将任务编号1的后台进程切换到前台运行
    [meng@centos7 ~ 19:54:19]$ fg %1
    study 放牛
    ^C # 前台按下Ctrl+C,任务1被杀死

    [meng@centos7 ~ 19:54:32]$ jobs

    # ❌pkill 放 失效!进程命令名称是study,不是“放猪/放牛”,无法匹配
    [meng@centos7 ~ 19:55:01]$ pkill

    # kill 1 错误:1是systemd进程PID,普通用户无权限
    [meng@centos7 ~ 19:55:03]$ kill 1
    -bash: kill: (1) – 不允许的操作

    # %1任务已经被ctrl+c销毁,任务不存在
    [meng@centos7 ~ 19:55:18]$ kill %1
    -bash: kill: %1: 无此任务

    # kill %任务编号:向后台任务发送默认15号SIGTERM信号终止进程
    [meng@centos7 ~ 19:55:39]$ kill %2
    [meng@centos7 ~ 19:55:42]$ kill %3
    [2] 已终止 study 放猪
    [meng@centos7 ~ 19:55:48]$ kill %4
    [3] 已终止 study 放羊
    [meng@centos7 ~ 19:55:51]$ kill %5
    [4]– 已终止 study 放猴

    给进程发信号

    信号介绍

    signal 是传递给进程的软中断。

    生成信号的事件可以是错误,外部事件或者使用信号发送命令或键盘序列。

    信号编号名称定义核心用途说明
    1 HUP 挂起 1. 终端断开时发给终端下所有进程;2. 常用重载配置(kill -1 进程号,进程不退出,重新读取配置文件)
    2 INT 键盘中断 Ctrl+c 触发;可被程序捕获、处理,请求程序正常终止
    3 QUIT 键盘退出 Ctrl+\\ 触发;类似 INT,终止同时生成core 核心转储文件,用于调试
    9 KILL 强制中断(不可拦截) 终极杀进程指令;进程无法捕获、忽略、阻塞,立刻强制结束;⚠️容易丢失数据
    15 TERM 终止(默认信号) kill PID 默认发送 15 号;友好关闭信号,程序可捕获,执行清理、保存资源后退出
    18 CONT 继续 唤醒被暂停的进程;搭配 STOP/TSTP 使用,无法被拦截;bg命令底层发送 CONT
    19 STOP 暂停(不可拦截) 强制冻结进程,进程无法抵抗;进程暂停后不再占用 CPU
    20 TSTP 键盘停止 Ctrl+z 触发;把前台进程放到后台暂停;可被程序捕获、忽略

    # 查看当前终端后台任务列表,此时没有后台进程
    [meng@centos7 ~ 18:44:24]$ jobs

    # & 放到后台运行,任务编号[1],进程PID=13260
    [meng@centos7 ~ 18:44:32]$ study hello world &
    [1] 13260

    # 第二个后台任务,任务编号[2],PID=13295
    [meng@centos7 ~ 18:44:54]$ study 放牛 &
    [2] 13295

    # 列出所有信号对照表,和你之前表格一一对应
    [meng@centos7 ~ 18:45:22]$ kill -l

    # %1 代表【后台任务编号1】,发送 19 SIGSTOP 信号 → 暂停进程
    [meng@centos7 ~ 18:46:14]$ kill -19 %1
    [1]+ 已停止 study hello world

    # 发送18 SIGCONT 信号,恢复被暂停的任务1
    [meng@centos7 ~ 18:46:25]$ kill -18 %1

    # 查看后台任务状态
    [meng@centos7 ~ 18:46:30]$ jobs
    [1]+ 运行中 study hello world &
    [2]– 运行中 study 放牛 &

    # kill 不加数字,默认发送15 SIGTERM 友好终止信号,作用后台任务%1
    [meng@centos7 ~ 18:46:45]$ kill %1
    [1]+ 已终止 study hello world

    # 任务1消失,仅剩任务2
    [meng@centos7 ~ 18:46:46]$ jobs
    [2]+ 运行中 study 放牛 &

    # 通过PID查找study相关进程
    [meng@centos7 ~ 18:47:58]$ ps axu |grep study
    meng 13295 0.0 0.0 113284 1452 pts/2 S 18:44 0:00 /bin/bash /usr/local/bin/study 放牛

    # 直接使用进程PID发送默认15号信号,终止进程
    [meng@centos7 ~ 18:48:41]$ kill 13295
    [2]+ 已终止 study 放牛

    # 所有后台进程全部结束,jobs输出为空
    [meng@centos7 ~ 18:48:51]$ jobs

    pkill 和 pgrep 命令

    作用:给多个进程发信号。

    # 一次性后台启动3个sleep进程
    [meng@centos7 ~ 18:49:20]$ sleep 1231 & sleep 1232 & sleep 1233 &
    [1] 14016
    [2] 14017
    [3] 14018

    # pgrep 程序名:只输出匹配进程PID
    [meng@centos7 ~ 18:51:17]$ pgrep sleep
    14015
    14016
    14017
    14018

    # -l :同时输出【PID + 进程名称】
    [meng@centos7 ~ 18:51:33]$ pgrep -l sleep
    14015 sleep
    14016 sleep
    14017 sleep
    14018 sleep

    # ps 传统方式查看进程详情,能看到用户、终端、完整命令
    [meng@centos7 ~ 18:51:39]$ ps axu |grep sleep
    root 14015 0.0 0.0 108052 360 ? S 18:51 0:00 sleep 60
    meng 14016 0.0 0.0 108052 356 pts/2 S 18:51 0:00 sleep 1231
    meng 14017 0.0 0.0 108052 356 pts/2 S 18:51 0:00 sleep 1232
    meng 14018 0.0 0.0 108052 356 pts/2 S 18:51 0:00 sleep 1233

    # pkill sleep:匹配所有sleep进程,发送默认15号信号终止
    # 报错:14015是root进程,meng普通用户没有权限杀死
    [meng@centos7 ~ 18:52:02]$ pkill sleep
    pkill: killing pid 14015 failed: 不允许的操作
    [1] 已终止 sleep 1231
    [2]– 已终止 sleep 1232
    [3]+ 已终止 sleep 1233

    # -u username 【重点参数】
    # -u :匹配**指定有效用户**启动的所有进程
    # ⚠️危险操作:pkill -u meng → 杀死meng用户全部进程,包含当前登录bash
    # bash进程被杀死 → SSH会话直接断开,这就是你Xshell直接掉线的原因!
    [meng@centos7 ~ 18:52:46]$ pkill -u meng
    Connection closing...Socket close.
    Connection closed by foreign host.

    # 重新创建后台sleep进程
    [meng@centos7 ~ 18:53:55]$ sleep 1231 & sleep 1232 & sleep 1232 &
    [1] 14173
    [2] 14174
    [3] 14175

    # tty 查看当前终端设备文件名
    [meng@centos7 ~ 18:54:33]$ tty
    /dev/pts/1

    # -t 【参数】:匹配**指定终端**上运行的进程
    # pgrep -t pts/1 -l 查找pts/1终端下所有进程
    [meng@centos7 ~ 18:54:36]$ pgrep -t pts/1 -l
    14073 bash
    14173 sleep
    14174 sleep
    14175 sleep

    # pkill -t pts/1:杀死该终端下所有匹配进程
    # 只会杀掉sleep,不会杀掉bash会话(bash是会话首进程,一般不会被轻易回收)
    [meng@centos7 ~ 18:55:10]$ pkill -t pts/1
    [1] 已终止 sleep 1231
    [3]+ 已终止 sleep 1233
    [2]+ 已终止 sleep 1232

    # ps jf 查看进程树:PPID(父PID) PID PGID(进程组) SID(会话ID)
    [meng@centos7 ~ 18:56:31]$ ps jf
    PPID PID PGID SID TTY TPGID STAT UID TIME COMMAND
    14069 14073 14073 14073 pts/1 14207 Ss 1000 0:00 -bash
    14073 14204 14204 14073 pts/1 14207 S 1000 0:00 \\_ sleep 1231
    14073 14205 14205 14073 pts/1 14207 S 1000 0:00 \\_ sleep 1232
    14073 14206 14206 14073 pts/1 14207 S 1000 0:00 \\_ sleep 1233

    # -P 【重点参数 Parent】
    # -P PID :匹配**指定PID的所有子进程**(直接子代)
    # 14073 是bash,sleep全部是它的子进程;只杀死子sleep,bash本身不受影响
    [meng@centos7 ~ 18:56:50]$ pkill -P 14073
    [1] 已终止 sleep 1231
    [2]– 已终止 sleep 1232
    [3]+ 已终止 sleep 1233

    pgrep /pkill 共用参数

    参数全称作用
    -l list 输出 PID + 进程名称
    -u user 匹配指定用户启动的进程
    -t terminal 匹配指定终端的进程
    -P parent 匹配指定父进程的直接子进程

    无法用pgrep/pkill

    # 命令整体:提取所有yum进程PID,发送9号SIGKILL强制杀死
    [root@centos7 ~ 19:13:40]# kill -9 $(ps axu |grep yum|grep -v grep |awk '{print $2}')
    # $( ) 命令替换:先执行管道命令筛选出yum进程PID,把PID列表传给kill -9

    # 再次查询yum进程PID,确认进程已经消失
    [root@centos7 ~ 19:14:13]# ps axu |grep yum|grep -v grep|awk '{print $2}'

    # shell输出提示:后台任务[1]被SIGKILL杀死
    [1]- 已杀死 yum install httpd

    last

    [meng@centos7 ~ 19:18:21]$ last
    # last 命令:读取 /var/log/wtmp 日志,查看系统历史登录记录,新记录显示在最顶部

    # 用户meng,伪终端pts/2,远程IP10.1.8.1,7月21日18:53登录,【当前仍在线】
    meng pts/2 10.1.8.1 Tue Jul 21 18:53 still logged in

    # 用户meng,伪终端pts/1,远程IP10.1.8.1,7月21日18:53登录,【当前仍在线】
    meng pts/1 10.1.8.1 Tue Jul 21 18:53 still logged in

    # 用户meng,pts/2,18:23登录,18:53退出,本次在线时长29分钟
    meng pts/2 10.1.8.1 Tue Jul 21 18:23 – 18:53 (00:29)

    # 用户meng,pts/1,18:23登录,18:53退出,本次在线时长30分钟
    meng pts/1 10.1.8.1 Tue Jul 21 18:23 – 18:53 (00:30)

    # root用户,pts/0,18:23登录,【当前仍在线】
    root pts/0 10.1.8.1 Tue Jul 21 18:23 still logged in

    # root,pts/2,15:13登录,18:19退出,在线3小时06分
    root pts/2 10.1.8.1 Tue Jul 21 15:13 – 18:19 (03:06)

    # meng,pts/1,15:13登录,18:19退出,在线3小时06分
    meng pts/1 10.1.8.1 Tue Jul 21 15:13 – 18:19 (03:06)

    无法直接杀死,

    # 使用重定向创建脚本 bin/mm
    [meng@centos7 ~ 19:20:23]$ cat > bin/mm <<EOF
    > #!/bin/bash
    > while true # 无限死循环
    > do
    > md5sum /dev/zero # CPU密集运算,持续消耗CPU
    > sleep 1 # 休眠1秒
    > done
    > EOF

    # chmod +x 【重点】 +x 添加【执行权限】,文件变成可执行程序
    [meng@centos7 ~ 19:20:45]$ chmod +x bin/mm

    # nohup 【重点】:脱离终端会话,关闭SSH窗口进程依然继续运行;&放到后台执行
    [meng@centos7 ~ 19:21:09]$ nohup mm &
    [1] 14660
    nohup: 忽略输入并把输出追加到"nohup.out"

    # ps axo 【重点拆解】
    # a:所有用户进程
    # x:无控制终端的进程也显示(nohup后台进程属于无终端进程,不加x会看不到!)
    # o:自定义输出列,这里指定输出 pid,%cpu,command
    # –sort -%cpu 按CPU使用率降序排列(负号代表降序)
    # head -n 5 只显示前5行
    [meng@centos7 ~ 19:21:21]$ ps axo pid,%cpu,command –sort -%cpu |head -n 5
    PID %CPU COMMAND
    14661 99.7 md5sum /dev/zero
    735 0.1 /usr/bin/vmtoolsd
    1 0.0 /usr/lib/systemd/systemd –switched-root –system –deserialize 22
    2 0.0 [kthreadd]

    # 尝试直接杀死子进程md5sum(PID=14661)
    [meng@centos7 ~ 19:23:22]$ pkill -9 14661
    # ⚠️现象:md5sum被杀,但是父脚本while循环会立刻再次启动新md5sum!
    [meng@centos7 ~ 19:23:36]$ ps axo pid,%cpu,command –sort -%cpu |head -n 5
    PID %CPU COMMAND
    14661 100 md5sum /dev/zero

    # pkill -9 md5sum:按名称杀md5sum,循环依旧会新建进程
    [meng@centos7 ~ 19:23:39]$ pkill -9 md5sum
    [meng@centos7 ~ 19:23:57]$ ps axo pid,%cpu,command –sort -%cpu |head -n 5
    PID %CPU COMMAND
    14689 107 md5sum /dev/zero

    # 再次杀死新生成的md5sum子进程,循环继续拉起新进程
    [meng@centos7 ~ 19:23:59]$ kill -9 14689
    [meng@centos7 ~ 19:24:25]$ ps axo pid,%cpu,command –sort -%cpu |head -n 5
    PID %CPU COMMAND
    14701 81.6 md5sum /dev/zero

    # ps ax -f
    # a:全部用户进程
    # x:包含无终端进程
    # -f:完整格式化输出,显示PPID(父进程ID),打印进程树关系
    # grep -e 多条件匹配,同时匹配md5sum、PPID
    [meng@centos7 ~ 19:24:29]$ ps ax -f |grep -e md5sum -e PPID
    UID PID PPID C STIME TTY STAT TIME CMD
    meng 14701 14660 99 19:24 pts/2 R 0:43 md5sum /dev/zero
    # 关键:14701(子md5sum) 的父进程PPID = 14660(nohup启动的bash脚本mm)

    # 【正确做法】杀死父进程 14660!父shell消亡,循环终止,不会再生子进程
    [meng@centos7 ~ 19:25:09]$ kill -9 14660
    # 顺带清理残留子进程md5sum
    [meng@centos7 ~ 19:25:26]$ kill -9 14701
    [1]+ 已杀死 nohup mm

    # 验证:md5sum进程彻底消失
    [meng@centos7 ~ 19:25:37]$ ps ax -f |grep -e md5sum -e PPID
    UID PID PPID C STIME TTY STAT TIME CMD
    meng 14723 14592 0 19:25 pts/2 R+ 0:00 grep –color=auto -e md5su -e PPID

    [meng@centos7 ~ 19:25:41]$ ps axo pid,%cpu,command –sort -%cpu |head -n 5
    PID %CPU COMMAND
    735 0.1 /usr/bin/vmtoolsd
    1 0.0 /usr/lib/systemd/systemd –switched-root –system –deserialize 22
    2 0.0 [kthreadd]
    4 0.0 [kworker/0:0H]

    监控系统负载

    系统负载介绍

    系统负载平均值:Linux内核以活动请求数的指数移动平均值来表示。

    • 活动请求数不仅包含运行中进程,还包含等待IO的进程,对应于R和D。等待IO包括处于睡眠等待预期磁盘和网络响应的任务。
    • 指数移动平均值是一个数学公式,可以平滑趋势数据的高值和低值,更加准确地表示一段时间内系统负载,并确定系统负载是随着时间增加还是减少。
    • 根据所有CPU活动请求数,每5秒计算一次Load Average。通过汇总这些值,可以得到最近1分钟,5分钟和15分钟内的指数移动平均值。
    • 一些UNIX系统仅考虑CPU使用率或运行队列长度。Linux中负载平均值中还包含了对IO的考量,遇到负载平均值很高但CPU活动很低时,检查磁盘和网络活动。
    • Linux将各个物理CPU核心和微处理器超线程计为独立执行单元。每个独立的执行单元拥有独立的请求队列。

    # 当前登录用户meng,主机centos7,命令行时间 18:23:10
    [meng@centos7 ~ 18:23:10]$ lscpu
    # 查看CPU硬件信息
    Architecture: x86_64 # 系统架构 64位
    CPU op-mode(s): 32-bit, 64-bit # 同时支持32/64位程序
    Byte Order: Little Endian # 小端字节序
    CPU(s): 2 # 虚拟机分配总逻辑CPU核心数:2核
    On-line CPU(s) list: 0,1 # 在线CPU编号0、1
    Thread(s) per core: 1 # 每个核心无超线程
    Core(s) per socket: 1 # 每个物理插槽1核心
    座: 2 # 虚拟机模拟2个CPU插槽
    NUMA 节点: 1 # 只有1个NUMA节点
    厂商 ID: GenuineIntel # Intel CPU
    CPU 系列: 6
    型号: 186
    型号名称: 13th Gen Intel(R) Core(TM) i5-13500H # 宿主机物理CPU型号
    步进: 2
    CPU MHz: 3187.202 # 当前运行主频
    BogoMIPS: 6374.40
    超管理器厂商: VMware # 运行在VMware虚拟机内
    虚拟化类型: 完全 # 完整硬件虚拟化
    L1d 缓存: 48K # 一级数据缓存
    L1i 缓存: 32K # 一级指令缓存
    L2 缓存: 1280K
    L3 缓存: 18432K
    NUMA 节点0 CPU: 0,1
    # Flags:CPU支持的指令集(avx2、aes、sha_ni等,虚拟化相关hypervisor标记)
    Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon rep_good nopl xtopology tsc_reliable nonstop_tsc eagerfpu pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch invpcid_single ssbd ibrs ibpb stibp ibrs_enhanced fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid rdseed adx smap clflushopt clwb sha_ni xsaveopt xsavec xgetbv1 arat umip pku ospke gfni vaes vpclmulqdq movdiri movdir64b md_clear spec_ctrl intel_stibp flush_l1d arch_capabilities

    [meng@centos7 ~ 18:24:10]$ uptime
    # 查看系统运行时长、登录用户、CPU负载
    18:24:31 up 7:54, 3 users, load average: 0.01, 0.38, 0.72
    # 当前时间18:24:31;开机7小时54分;3个终端登录
    # 1分钟/5分钟/15分钟平均负载:0.01、0.38、0.72,此时CPU空闲

    [meng@centos7 ~ 18:24:58]$ md5sum /dev/zero &
    # 后台启动进程:持续读取/dev/zero做md5哈希运算,纯CPU密集型压测
    [1] 12983 # 第1个后台任务,PID=12983

    [meng@centos7 ~ 18:25:17]$ md5sum /dev/zero &
    # 再开一条CPU压测进程
    [2] 12993 # 第2个后台任务,PID=12993

    [meng@centos7 ~ 18:25:23]$ uptime
    18:25:23 up 7:55, 3 users, load average: 0.50, 0.44, 0.72
    # 负载开始上升,1分钟负载涨到0.50

    [meng@centos7 ~ 18:26:01]$ uptime
    18:26:10 up 7:56, 3 users, load average: 1.64, 0.74, 0.81
    # 两条CPU打满,1分钟负载持续走高

    # 连续敲 up,shell自动命令补全提示,没有up命令,提示匹配以up开头的程序
    [meng@centos7 ~ 18:26:01]$ up
    update-alternatives update-gtk-immodules upower
    update-ca-trust update-mime-database uptime
    updatedb update-pciids
    update-desktop-database update-smart-drivedb

    [meng@centos7 ~ 18:26:10]$ uptime
    18:26:10 up 7:56, 3 users, load average: 1.67, 0.76, 0.82

    [meng@centos7 ~ 18:26:19]$ uptime
    18:26:19 up 7:56, 3 users, load average: 1.88, 0.84, 0.84

    [meng@centos7 ~ 18:26:22]$ uptime
    18:26:22 up 7:56, 3 users, load average: 1.89, 0.85, 0.85

    [meng@centos7 ~ 18:26:23]$ uptime
    18:26:23 up 7:56, 3 users, load average: 1.89, 0.85, 0.85

    [meng@centos7 ~ 18:26:24]$ uptime
    18:26:24 up 7:56, 3 users, load average: 1.89, 0.85, 0.85

    [meng@centos7 ~ 18:26:25]$ uptime
    18:26:25 up 7:56, 3 users, load average: 1.89, 0.85, 0.85

    [meng@centos7 ~ 18:26:26]$ uptime
    18:26:26 up 7:56, 3 users, load average: 1.90, 0.87, 0.85

    [meng@centos7 ~ 18:26:27]$ uptime
    18:26:27 up 7:56, 3 users, load average: 1.90, 0.87, 0.85
    # 最终1分钟负载稳定接近1.90
    # 虚拟机总共2个逻辑CPU,2个md5sum进程把CPU基本跑满
    # Linux负载含义:逻辑CPU为2核,负载接近2代表CPU饱和

    top 命令

    作用:动态查看进程信息,包括不同状态任务数量,CPU消耗和内存消耗。

    在这里插入图片描述

    p 7:56, 3 users, load average: 1.89, 0.85, 0.85

    [meng@centos7 ~ 18:26:24]$ uptime
    18:26:24 up 7:56, 3 users, load average: 1.89, 0.85, 0.85

    [meng@centos7 ~ 18:26:25]$ uptime
    18:26:25 up 7:56, 3 users, load average: 1.89, 0.85, 0.85

    [meng@centos7 ~ 18:26:26]$ uptime
    18:26:26 up 7:56, 3 users, load average: 1.90, 0.87, 0.85

    [meng@centos7 ~ 18:26:27]$ uptime
    18:26:27 up 7:56, 3 users, load average: 1.90, 0.87, 0.85

    最终1分钟负载稳定接近1.90

    虚拟机总共2个逻辑CPU,2个md5sum进程把CPU基本跑满

    Linux负载含义:逻辑CPU为2核,负载接近2代表CPU饱和

    ## top 命令

    作用:动态查看进程信息,包括不同状态任务数量,CPU消耗和内存消耗。

    [外链图片转存中…(img-1AcX9C6l-1784635133649)]

    赞(0)
    未经允许不得转载:171主机测评 » 看就完了!linux进程管理!监控系统负载!!!!!
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址