进程操作

进程查看、管理和控制

type
status
date
slug
summary
tags
category
icon
password
notion image

一、进程查看

进程(process),系统进行资源分配的最小单位

1、ps命令

aux输出格式
  • USER: 行程拥有者
  • PID: pid
  • %CPU: 占用的 CPU 使用率
  • %MEM: 占用的记忆体使用率
  • VSZ: 占用的虚拟记忆体大小(物理内存、共享内存、swap,所有内存总和)
  • RSS: 占用的记忆体大小
  • TTY: 终端的次要装置号码 (minor device number of tty)
  • STAT: 该行程的状态:
    • D: 无法中断的休眠状态 (通常 IO 的进程)
    • R: 正在执行中
    • S: 静止状态
    • T: 暂停执行
    • Z: 不存在但暂时无法消除
    • W: 没有足够的记忆体分页可分配
    • <: 高优先序的行程
    • N: 低优先序的行程
    • L: 有记忆体分页分配并锁在记忆体内 (实时系统或捱A I/O)
  • START: 行程开始时间
  • TIME: 执行的时间
  • COMMAND:所执行的指令
    • [进程名]:内核进程/系统进程 不能停,不能关
    • 进程名 :用户进程

2、查看内存(free)

3、进程状态

cpu按时间切片的方式执行多个进程,进程才会状态之分 R:运行, 就绪
D/S:睡眠,等待IO
IO
IO操作,即输入/输出操作,指的是与外部设备(如硬盘、网络)进行数据交互的过程。由于IO操作通常比CPU运算慢很多,因此在进行IO操作时,进程或线程会被阻塞,进入等待状态,直到IO操作完成才能被唤醒继续执行。
S+: 前台运行 可以ctrl C暂停 S:后台运行 不可以Ctrl C暂停 可以直接kill 干掉
+:前台
异常状态 Z:僵尸状态,子进程销毁时,资源没有被正常回收 T:停止状态

4、查看cpu(lscpu、nproc)

5、查看进程树

二、进程调度/控制

1、控制进程前/后台运行

默认情况下,所有指令都是在前台运行(占着命令提示符 )

2、向进程发送信号

三、计划任务

1、一次性任务

前提:依赖atd服务正常运行
同步系统时间
创建一次性任务

2、周期性任务

前提:依赖crond服务正常运行
创建周期性任务
时间格式
时间设置
含义
* * * * *
每分钟执行一次
0 * * * *
每小时的第 0 分钟执行一次
0 0 * * *
每天的午夜(0 点)执行一次
0 0 * * 0
每周日的午夜(0 点)执行一次
0 0 1 * *
每个月的第一天午夜(0 点)执行一次
0 0 L * *
每个月的最后一天午夜(0 点)执行一次
0 0 1 1 *
每年的第一天午夜(0 点)执行一次
0 0 * * 3
每周三的午夜(0 点)执行一次
0 0 1,15 * *
每个月的第 1 和第 15 天午夜(0 点)执行一次
0 0 * * FRI
每周五的午夜(0 点)执行一次
0 0 * * 5
每周五的午夜(0 点)执行一次
0 8-17 * * *
每天的上午 8 点到下午 5 点每小时执行一次
0 12 * * MON
每周一的中午(12 点)执行一次
0 0 15 * *
每个月的第 15 天午夜(0 点)执行一次
0 0 * * 3
每周三的午夜(0 点)执行一次
0 8-17 * * *
每天的上午 8 点到下午 5 点每小时执行一次
0 0 * * 1-5
每个工作日的午夜(0 点)执行一次
0 0 1 * FRI
每个月的第一个星期五午夜(0 点)执行一次
0 0 1,15 * *
每个月的第 1 和第 15 天午夜(0 点)执行一次
0 0 15 1 *
每年的 1 月 15 日午夜(0 点)执行一次
0 0 * * 7
每周日的午夜(0 点)执行一次
0 0 * * 5
每周五的午夜(0 点)执行一次
*/30 * * * *
每隔半小时执行一次
0 10-18/2 * * *
上午10点到下午6点,每隔两小时执行一次
操作注意事项
1、建议写命令的全路径[针对源码软件的命令]
2、%默认识别为命令的结束符,需要转义,\%
  • 需求1:每分钟创建测试文件
    • 需求2:每分钟同步一次时间

      四、性能查看工具

      1、TOP

      选项
      • d <秒数>:指定 top 命令的刷新时间间隔,单位为秒。
      • n <次数>:指定 top 命令运行的次数后自动退出。
      • p <进程ID>:仅显示指定进程ID的信息。
      • u <用户名>:仅显示指定用户名的进程信息。
      • H:在进程信息中显示线程详细信息。
      • i:不显示闲置(idle)或无用的进程。
      • b:以批处理(batch)模式运行,直接将结果输出到文件。
      • c:显示完整的命令行而不截断。
      • S:累计显示进程的 CPU 使用时间。
      • 动态显示进程
        • M:按内存占比,倒序显示进程
          P :按CPU占比,倒序显示进程
      任务队列信息
      09:10:54 — 当前系统时间 up 1 days, 23:08 — 系统已经运行了1天23小时8分钟(在这期间系统没有重启过的吆!) 2 users — 当前有2个用户登录系统 load average: 0.00, 0.01, 0.05 — load average后面的三个数分别是1分钟、5分钟、15分钟的负载情况。 load average数据是每隔5秒钟检查一次活跃的进程数,然后按特定算法计算出的数值。如果这个数除以逻辑CPU的数量,结果高于5的时候就表明系统在超负荷运转了。
      负载值 ≤ CPU数量 * 2,正常
      查看系统负载
      Tasks — 任务(进程)
      系统现在共有206个进程,其中处于运行中的有1个,107个在休眠(sleep),stoped状态的有1个,zombie状态(僵尸)的有0个。
      CPU状态信息
      缩写
      全称
      含义
      数值
      us
      user
      用户空间程序占用 CPU 百分比
      0.0%
      sy
      system
      内核空间程序占用 CPU 百分比
      0.0%
      ni
      nice
      低优先级进程占用 CPU 百分比
      0.0%
      id
      idle
      CPU 空闲时间百分比
      100.0%
      指标
      全称
      含义
      数值
      wa
      I/O Wait
      CPU 等待 I/O 操作的时间百分比
      0.0%
      hi
      Hardware IRQ
      处理硬件中断的时间百分比
      0.0%
      si
      Software IRQ
      处理软件中断的时间百分比
      0.0%
      st
      Steal Time
      虚拟化环境中被其他虚拟机占用的时间
      0.0%
      查看CPU数量
      💡
      按1 可以分别显示每个cpu的占比
      内存状态
      995672 total — 物理内存总量(32GB) 214672 used — 使用中的内存总量(14GB) 184536 free — 空闲内存总量(18GB) 596464 buffers — 缓存的内存量 (169M)
      swap交换分区信息
      104872 total — 交换区总量(32GB) 0k used — 使用的交换区总量(0K) 1048572 free — 空闲交换区总量(32GB) 3612636k cached — 缓冲的交换区总量(3.6GB)
      💡
      cache:缓存,提升数据读性能 buffer:缓冲,提升数据写性能
      进程信息
      • PID:进程的标识符。
      • USER:运行进程的用户名。
      • PR(优先级):进程的优先级。
      • NI(Nice值):进程的优先级调整值。
      • VIRT(虚拟内存):进程使用的虚拟内存大小。
      • RES(常驻内存):进程实际使用的物理内存大小。
      • SHR(共享内存):进程共享的内存大小。
      • %CPU:进程占用 CPU 的使用率。
      • %MEM:进程占用内存的使用率。
      • TIME+:进程的累计 CPU 时间。
      • COMMAND :进程名称(命令名/命令行)

      五、性能监控工具vmstat

      核心功能 内存监控:显示物理内存和交换空间的使用情况 CPU 使用率:展示用户进程、系统进程和空闲时间的占比 进程状态:报告运行中、等待和阻塞的进程数量 I/O 统计:提供块设备读写操作的详细信息
      选项
      参数
      说明
      -a
      显示活跃和非活跃内存
      -d
      显示磁盘统计信息
      -p
      显示指定磁盘分区的统计信息
      -s
      显示内存相关统计信息的汇总
      -m
      显示 slab 信息
      -t
      在输出中增加时间戳
      -S
      指定单位显示(k/K/m/M,分别代表 1000/1024/1000000/1048576)
      性能参数
      1. 进程信息 procs r: 运行队列中的进程数量 b: 等待 I/O 的进程数量
      1. 内存信息 memory swpd: 使用的虚拟内存大小(KB) free: 空闲的物理内存大小(KB) buff: 用作缓冲区的内存大小(KB) cache: 用作缓存的内存大小(KB)
      1. 交换分区信息 swap si: 每秒从磁盘读入交换区的内存大小(KB/s) so: 每秒写入磁盘的交换区内存大小(KB/s)
      1. I/O 信息 io bi: 每秒从块设备接收的块数(blocks/s) bo: 每秒发送到块设备的块数(blocks/s)
      1. 系统信息 system in: 每秒中断数(包括时钟中断) cs: 每秒上下文切换次数
      1. CPU 使用率 cpu us: 用户进程占用 CPU 时间百分比 sy: 系统进程占用 CPU 时间百分比 id: 空闲 CPU 时间百分比 wa: 等待 I/O 的 CPU 时间百分比 st: 被虚拟机偷取的时间百分比

      1、安装stress

      2、测试CPU使用率

      3、模拟sync()将内存中的数据同步到硬盘

      4、测试硬盘IO

      5、测试内存分配

      6、Linux系统运行模式

      Linux系统运行模式:CentOS6.x/5.x

      1、运行模式

      运行级别
      描述
      典型用途
      0
      关机
      系统关机状态
      1
      单用户模式
      系统维护/root权限
      2
      多用户模式(无NFS)
      基本多用户模式
      3
      完整多用户模式
      标准命令行界面
      4
      保留
      用户自定义
      5
      图形界面模式
      带GUI的多用户模式
      6
      重启
      系统重启

      2、查看系统运行模式

      • 临时切换
      现代Linux系统中的init演变
      notion image
      设置默认运行级别
      Loading...