• Linux ❀ ps进程操作与僵尸进程解决方法


    1. 僵尸进程概述

    简述

    • 在Linux系统中若子进程退出,父进程会使用 waitwaitpid 函数进行回收子进程的资源,并获得子进程的终止状态。
      但如果父进程先于子进程结束,则子进程成为孤儿进程。孤儿进程将被 init进程(进程号为1)领养,并由 init 进程对孤儿进程完成状态收集工作。而如果子进程先于父进程退出,同时父进程太忙了,无瑕回收子进程的资源,子进程残留资源(PCB)存放于内核中,变成僵尸(Zombie)进程。

    解决方法

    • 僵尸进程其实已经就是退出的进程,因此无法再利用kill命令杀死僵尸进程。僵尸进程的罪魁祸首是父进程没有回收它的资源,那我们可以想办法它其它进程去回收僵尸进程的资源,这个进程就是 init 进程。因此我们可以直接杀死父进程,init 进程就会很善良地把那些僵尸进程领养过来,并合理的回收它们的资源,那些僵尸进程就得到了妥善的处理了

    2. ps - 系统进程操作

    ps:(process status):显示当前进程的状态.

    USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
    
    • 1

    表头解释

    • USER: 行程拥有者
    • PID: pid
    • %CPU: 占用的 CPU 使用率
    • %MEM: 占用的记忆体使用率
    • VSZ: 占用的虚拟记忆体大小
    • RSS: 占用的记忆体大小
    • TTY: 终端的次要装置号码 (minor device number of tty)
    • STAT: 该行程的状态:
      • D: 无法中断的休眠状态 (通常 IO 的进程)
      • R: 正在执行中
      • S: 静止状态
      • T: 暂停执行
      • Z: 不存在但暂时无法消除 - 僵尸进程判断标准
      • W: 没有足够的记忆体分页可分配
      • <: 高优先序的行程
      • N: 低优先序的行程
      • L: 有记忆体分页分配并锁在记忆体内 (实时系统或捱A I/O)
    • START: 行程开始时间
    • TIME: 执行的时间
    • CMD:所执行的指令

    3. 僵尸进程处理方法

    # 寻找僵尸进程
    $ ps -A -ostat,ppid,pid,cmd | grep -e '^[Zz]'
    # stat 显示进程状态
    # ppid 显示父进程ID
    # pid 显示进程ID
    # cmd 显示启动进程的命令
    
    # 寻找进程
    $ ps -ef | grep $pid
    # 寻找父进程
    $ ps -ef | grep $ppid
    # 寻找对应的cmd,找到对应的进程服务进行释放进程操作
    $ kill -9 $ppid
    # 或者
    $ pkill $ppid
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
  • 相关阅读:
    Node.js实现WebSocket
    useCallBack
    基于数组结构刷题
    凸面镜反射场景无监督域适应语义分割的一些问题
    必问207道java架构和大数据面试题及答案
    短视频账号矩阵系统源码/技术源码分享/技术搭建架构
    C++ 基础知识 ∈ C++ 编程笔记
    监控硬盘容量计算
    文件上传表单的 HTML 页面+PHP
    Perl时间处理函数用法介绍
  • 原文地址:https://blog.csdn.net/qq_42197548/article/details/133133769