进程管理...

一、进程概述和ps管理进程

  1. 进程的定义和功能

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

    • 组成部分:

      • 已分配的内存地址空间

      • PID

      • 程序代码

      • 进程状态

    • 进程管理包括:进程调度、中断处理(插队)、信号、进程优先级(分配时间长短)、进程切换、进程状态、进程内存等

    • 进程生命周期

      • 父进程:复制自己的地址空间创建新的(子)进程结构

        每个新进程分配一个PID

        PID和PPID是子进程环境的元素,任何进程均可创建子进程

        所有进程均为第一个进程的后代(C6:init C7:systemd)

      • 僵尸进程:不执行代码,同时占用内存地址空间

        进程接收到终止信号到结束所有任务有段时间间隔

        进程执行完代码后,向父进程发送相关终止报告

        正常情况下父进程接收到报告,会移除所有子进程的数据结构

        若父进程未收到子进程退出信号或尚未响应,子进程成僵尸

        kill不能杀死僵尸进程(你无法杀死一个死人)

        杀死父进程可能会带走子进程(砍了死灵法师骷髅可能会散架)

        父进程PPID为1的僵尸进程需重启解决

      • 线程:进程中的执行单位,在同一进程中与其他线程并行运行

        线程之间可共享资源,如内存、地址空间、打开文件等

      • 上下文切换(即进程切换):运行哪个进程,切换哪个进程的代码

        CPU运行期间进程信息存储在CPU的寄存器和高速缓存中

        执行的进程被加载到寄存器内的数据为上下文(运行A,寄存器中存A的上下文)

        CPU运行过程中先存储 运行进程 的上下文

        将下个运行进程的上下文恢复到寄存器,即为上下文切换

        每次切换均需刷新寄存器和cache,切换过多会导致性能下降

      • 中断处理

        优先级最高的任务之一

        通常由I/O产生,如网络接口、键盘、控制器等

        中断信号到内核时,内核须切换到新进程来处理中断

        此时发生上下文切换,中断过多性能下降

        • 硬中断:硬件产生,需快速响应(磁盘I/O、键盘、鼠标中断等)

        • 软中断:用来处理可推迟的任务(TCP/IP、SCSI操作等)

  2. 进程属性

    • PID:唯一标识,除systemd一般不固定

    • PPID:父进程PID

    • 启动进程的用户UID和所属组GID

    • 进程状态:运行、休眠、僵尸

    • 进程优先级

    • 进程所连接终端名

    • 进程资源占用:如内存、CPU占用比例

  1. ps查看进程工具

    1. ps aux

      • a:显示和当前终端关联的所有进程

      • u:基于用户格式显示

      • x:显示所有进程,不以终端区分

      USERPID%CPU%MEMVSZ(KB)RSS(KB)TTYSTATSTARTTIMECOMMAND
      启动进程用户PID进程占用CPU百分比占用内存百分比占用虚拟内存大小占用物理内存大小终端进程状态进程启动时间进程使用CPU时间程序指令
      • STAT进程5种基本状态

        • R:正在运行或在运行队列

        • S:休眠状态,可被某些信号唤醒

        • T:停止状态(如Ctrl + Z)

        • Z:僵尸进程

        • D:不可中断,通常在I/O过程中

        附加字母:

        • <:进程运行在高优先级

        • N:进程运行在低优先级

        • L: 进程有页面锁定在物理内存中(不可放到swap中运行)

        • s: 控制进程,可向子进程发送信号

        • l: 多线程进程

        • +:进程在前台运行

      • [command]:内核态进程,运行在内核中内存地址空间

        PS:内存地址空间分为内核运行空间(K)和用户运行空间(U)

    2. ps -ef

      • -e:显示所有进程

      • -f: 显示完整格式输出

      输出包含信息:

      • PPID:父进程PID

      • C:CPU利用率

      • 剩余aux中都有

    3. free [-k/m/g/h]:默认单位KB,总体使用情况

      totalusedfreesharedbuff/cacheavailable
      Mem总量已用空闲进程共享内存缓冲/缓存内存 内存耗尽时释放可用空间
      Swap总量已用空闲

      free + buff/cache未必等于available:系统本身保留部分空间 或 buff不可全部使用

二、uptime查看系统负载——top动态管理进程

  1. uptime:查看CPU负载工具(与w命令第一行相同)

    14:01:35 up 5:36, 3 users, load average: 0.00, 0.01, 0.05

    14:01:35up 5:363 usersload average:0.00,0.01,0.05
    当前时间运行时间登录终端数系统负载:1min、5min、15min前到现在任务队列平均长度
    • CPU任务队列数为3:3个进程排队等待一个CPU资源

    • 核心数:2个CPU3个核心,系统认为6个CPU核心

      • 负载高低:load average/核心数,单核>=3则负载过高

  2. top(交互式,最全面)

    • 第一行:即uptime

    • 第二三行

      字符含义
      Task: 111total进程总数111
      1 running正在运行进程数
      110 sleeping睡眠的进程数
      0 stop停止的进程数
      0 zombie僵尸进程数
      %Cpu(s): 0.0 us系统用户进程使用CPU百分比 "s"为汇总,按"1"显示全部CPU使用率
      0.0 sy内核中进程占用CPU百分比
      0.0 ni用户进程空间内改过优先级的进程占用CPU百分比
      100.0 id空闲CPU百分比
      0.0 waCPU等待I/O完成的时间的总量
      0.0 hi硬中断占CPU百分比
      0.0 si软中断占CPU百分比
      0.0 st (steal)虚拟机占用物理机CPU时间百分比
    • 第七行

      列名含义
      PID进程ID
      USER进程所有者用户名
      PR优先级,用户不可自己调整,默认值20 rt(realtime)表示实时调整优先级
      NI(nice)优先级,用户可以自己调整,默认值0 NI值+20即为PR值,可正可负
      VIRT虚拟内存,进程申请大小
      RES物理占用内存,实际使用大小,包括共享内存
      SHR共享内存(KB),包括自身及与其他进程的共享内存 进程实际物理内存大小 = RES - SHR
      S进程状态
      %CPU上次更新到现在CPU时间占比 不同系统可能多取个相加>100%,当前版本取总体比例
      %MEM进程使用物理内存占比
      TIME+使用CPU总时长,单位0.01s
      COMMAND命令名/命令行
    • 快捷键

      • 默认3s刷新,按s修改刷新时间

      • 按 空格 立即刷新

      • q:退出

      • P:按%CPU排序

      • M:按内存排序

      • T:按时间排序

      • top -p PID:查看指定进程

      • top -u/U 用户名:查看指定用户

      • h:帮助

    • lscpu:查看CPU详细信息(socket表示实际CPU数量)

    • make -j 4:用4核进行编译

  3. fuser(根据文件目录或端口号找进程)

    • -k:默认为结束进程,也可发送信号

    • -i:结束进程前交互式确认,一般与k一起用

    • -u:进程后显示进程所属用户

    • -c:查看有哪些进程访问挂载点下文件

    • PS:进程号后有c表示执行用户正在该目录中

  4. lsof(根据进程找打开的文件)

    • -p PID:列出指定PID所打开的文件

    • -i :22:查看22端口有哪几个进程在使用

  5. ss(用于查看套接字)类似于netstat

    • -a:显示监听和建立连接的套接字

    • -t: 输出TCP套接字

    • -u:输出UDP套接字

    • -n:以端口号显示(默认显示服务名称)

    • -p:显示使用套接字的进程

三、前后台进程切换——nice进程优先级——screen后台执行命令

  1. Linux前台进程和后台进程的区别

    • 前台进程:终端中运行,执行时持续占用前台

      • 依赖终端:关闭终端则进程关闭

    • 后台进行:进程放入后台运行,不影响当前终端执行后续命令

      • 脱离终端:终端关闭不影响进程运行

        • 守护进程Daemon(httpd、sshd

  2. 前台与后台运行

    命令作用
    &写于命令之后,将其放入后台运行
    Ctrl + z将正在执行的前台命令放入后台并暂停
    jobs查看当前终端在后台运行的进程
    fg将后台命令调到前台继续运行,fg + 命令编号
    bg令后台暂停的命令继续执行,bg + 命令编号
    nohup脱离终端。nohup CMD &
  3. kill向进程发送信号

    1. kill:kill PID

      • kill -l:列出所有信号

        信号编号信号名作用
        1SIGHUP重新加载配置
        2SIGINT键盘中断 Ctrl + c
        3SIGQUIT退出
        9SIGKILL强制终止
        15SIGTERM默认终止
        18SIGCONT继续
        19SIGSTOP停止
        20SIGTSTP暂停 Ctrl + z
      • 重设ssh端口

        vim /etc/ssh/sshd_config    # 修改配置文件
        Port 2200                   # 修改端口号
        ps aux | grep ssh           # 查找ssh服务PID
        kill -1 9861(pid)           # 重新加载配置
      • kill -9:强制结束进程,会导致进程的临时文件不被删除,不优先使用

    2. killall [子选项] [信号] 进程名(结束父进程,爷爷进程成为父进程)

      • -i:交互式,y/n询问

      • killall -i sshd

    3. pkill [子选项] [信号] 进程名

      • -t -9 终端号:按终端号踢用户

  4. 进程优先级管理nice

    • 优先级范围(-20,19),数值越小越高,默认为0

    • nice n N CMD:指定程序运行优先级为n

    • renice -n N PID:改变运行程序的优先级为-n

  5. 终端复用(重复使用)工具screen,该终端上命令脱离终端

    • 用于执行大型操作防止中断

    1. screen -S test   # 新建一个叫test的会话
    2. screen -ls       # 列出当前用户所有会话
    3. screen -r test   # 回到test会话
  6. time命令:查看命令执行时间

    • time CMD

      time touch test.txt
      ​
      real    0m0.002s    # 实际时间(睡眠状态、读取文件时不占用CPU)
      user    0m0.001s    # 用户态CPU时间
      sys     0m0.000s    # 内核态CPU时间
  7. 限制普通用户开启进程数量

    • 临时生效

      • ulimit -u 15:用户限制自己最多开启15个进程

      • ulimit -u:查看自己的限制数

    • 永久生效

      • vim /etc/security/limits.d/20-nproc.conf

        *       soft    nproc     4096      # 普通用户默认4096
        root    soft    nproc     unlimited # root不限制
        ikun1   soft    nproc     15        # 限制ikun1为15个

        soft表示当前系统生效的设置值。hard表示系统能设定的最大值

        nproc为操作系统级别对每个用户创建进程数的限制

    • 压力测试工具stress

      • stress -c 20:开启20个进程

  8. htop:彩色图形化top

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值