zoukankan      html  css  js  c++  java
  • Linux进阶之进程管理

    本节内容

    1、进程管理

    2ps

    3uptime

    4top

    5ss -tnl------ lsof -i :22




    一、 进程管理的概念

    程序:二进制文件,静态 /bin/date/usr/sbin/sshd 

    进程:是程序运行的过程,动态,有生命周期及运行状态。

    下图所示的是进程的生命周期:

    描述如下:

    父进程复制自己的地址空间(fork  [fɔ:k] 分叉)创建一个新的(子)进程结构。每个新进程分配一个唯一的进程 IDPID),满足跟踪安全性之需。PID 和父进程 IDPPID)是子进程环境的元素,任何进程都可以创建子进程,所有进程都是第一个系统进程的后代。

    centos56PID1的进程是:init  

    centos7 PID1的进程是:systemd

    进程类型:

    僵尸进程:一个进程使用fork创建子进程,如果子进程退出,而父进程并没有调用waitwaitpid获取子进程的状态信息,那么子进程的进程描述符仍然保存在系统中。这种进程称之为僵尸进程。

    用自己的话表达:父进程退出了,子进程没有退出,那么这些子进程就没有父进程来管理了,就变成僵尸进程。

     交互进程:是由一个shell启动的进程。交互进程既可以在前台运行,也可以在后台运行;

    批量处理进程:这种进程和终端没联系,是个进程序列;

    守护进程:在Linux系统启动时启动的进程,并在后台运行;

    超级守护进程:系统启动时由一个统一的守护进程xinet来负责管理一些进程,当相应请求到来时需要通过xinet的转接才可以唤醒被xinet管理的进程。

    二、进程的属性 

    进程IDPID):是唯一的数值,用来区分进程

    进程状态:状态分为运行Rrunning、休眠Ssleep、僵尸Zzombie

    三、使用ps查看进程工具

    1ps查看进程工具

    1:常用的参数:

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

    u:基于用户的格式显示(U: 显示某用户ID所有的进程)

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

              另一种ps查看进程的方法:ps -ef (查看内容简洁) 

    [root@renyz ~]# ps aux

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

    root          1  0.0  0.4 125568  4080 ?        Ss   09:04   0:05 /usr/lib/systemd/syste

    root          2  0.0  0.0      0     0 ?        S    09:04   0:00 [kthreadd]

    root          3  0.0  0.0      0     0 ?        S    09:04   0:00 [ksoftirqd/0]

    root          5  0.0  0.0      0     0 ?        S<   09:04   0:00 [kworker/0:0H]

    root          7  0.0  0.0      0     0 ?        S    09:04   0:00 [migration/0]

    root          8  0.0  0.0      0     0 ?        S    09:04   0:00 [rcu_bh]

    root          9  0.0  0.0      0     0 ?        R    09:04   0:01 [rcu_sched]

    备注:

    最后一列[xxxx] 使用方括号括起来的进程是内核态的进程。没有括起来的是用户态进程。

    2、上面的参数输出每列含意

    USER:启动这些进程的用户

    PID:进程的ID

    %CPU:进程占用的CPU百分比; 

    %MEM:占用内存的百分比; 

    VSZ:进程占用的虚拟内存大小(单位:KB 

    RSS:进程占用的物理内存大小(单位:KB 

    STAT:该程序目前的状态,Linux进程有5种基本状态:

    R :该程序目前正在运作,或者是可被运作;

    S :该程序目前正在睡眠当中,但可被某些讯号(signal) 唤醒。

    T :该程序目前正在侦测或者是停止了;

    :该程序应该已经终止,但是其父程序却无法正常的终止他,造成 zombie (疆尸) 程序的状态

    :不可中断状态.  

    5个基本状态后,还可以加一些字母,比如:SsR+等,它们含意如下:

          <:表示进程运行在高优先级上

          N:表示进程运行在低优先级上

          L:表示进程有页面锁定在内存中

          s:表示进程是控制进程

           l:表示进程是多线程的

          +:表示当前进程运行在前台

    START:该 process 被触发启动的时间;

    TIME :该 process 实际使用 CPU 运作的时间。

    COMMAND:该程序的实际指令

    四、uptime查看系统负载

    [root@renyz ~]# uptime

     18:33:55 up  9:29,  1 user,  load average: 0.00, 0.01, 0.05

    弹出消息含意如下:

    当前时间 系统运行时间 当前登录用户 系统负载1分钟,5分钟,15分钟的平均负载

    那么什么是系统平均负载呢? 系统平均负载是指在特定时间间隔内运行队列中的平均进程数。

    如果每个CPU内核的当前活动进程数不大于3的话,那么系统的性能是良好的。如果每个CPU内核的任务数大于5,那么这台机器的性能有严重问题。

    如果你的linux主机是1个双核CPU的话,当Load Average 6的时候说明机器已经被充分使用了。

    五、top命令 

    top - 18:36:39 up  9:31,  1 user,  load average: 0.00, 0.01, 0.05

    Tasks: 160 total,   2 running, 158 sleeping,   0 stopped,   0 zombie

    %Cpu(s):  0.3 us,  0.7 sy,  0.0 ni, 99.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st

    KiB Mem :   995896 total,    75692 free,   392760 used,   527444 buff/cache

    KiB Swap:  2097148 total,  2097148 free,        0 used.   349284 avail Mem

       PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND           

         1 root      20   0  125568   4080   2612 S  0.0  0.4   0:05.21 systemd           

         2 root      20   0       0      0      0 S  0.0  0.0   0:00.01 kthreadd          

         3 root      20   0       0      0      0 S  0.0  0.0   0:00.75 ksoftirqd/0       

         5 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 kworker/0:0H      

         7 root      rt   0       0      0      0 S  0.0  0.0   0:00.00 migration/0       

         8 root      20   0       0      0      0 S  0.0  0.0   0:00.00 rcu_bh            

         9 root      20   0       0      0      0 R  0.0  0.0   0:01.44 rcu_sched         

        10 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 lru-add-drain

    1行:系统时间、运行时间、登录终端数、系统负载(三个数值分别为1分钟、5分钟、15分钟内的平均值,数值越小意味着负载越低)。

    2行:进程总数、运行中的进程数、睡眠中的进程数、停止的进程数、僵死的进程数。

    3行:用户占用资源百分比、系统内核占用资源百分比、改变过优先级的进程资源百分比、空闲的资源百分比等。其中数据均为CPU数据并以百分比格式显示,例如“97.1 id”意味着有97.1%CPU处理器资源处于空闲。

    4行:物理内存总量、内存使用量、内存空闲量、作为内核缓存的内存量。

    5行:虚拟内存总量、虚拟内存使用量、虚拟内存空闲量、已被提前加载的内存量。

    6行:

    PID — 进程id

    USER — 进程所有者

    PR — 进程优先级

    NI — nice值。负值表示高优先级,正值表示低优先级

    VIRT — 进程使用的虚拟内存总量,单位kbVIRT=SWAP+RES

    RES — 进程使用的、未被换出的物理内存大小,单位kbRES=CODE+DATA

    SHR — 共享内存大小,单位kb

    S — 进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程

    %CPU — 上次更新到现在的CPU时间占用百分比

    %MEM — 进程使用的物理内存百分比

    TIME+ — 进程使用的CPU时间总计,单位1/100

    COMMAND — 进程名称(命令名/命令行)

    六、lsof命令

    lsof命令用于查看你进程打开的文件,打开文件的进程,进程打开的端口(TCPUDP)

    -i<条件>:列出符合条件的进程。(46、协议、:端口、 @ip

    [root@renyz ~]# ss -tnl  #lsof配合ss命令使用

    State      Recv-Q Send-Q Local Address:Port               Peer Address:Port             

    LISTEN     0      128              *:22                           *:*                  

    LISTEN     0      128             :::22                          :::*                 

    LISTEN     0      128            ::1:631                         :::*                 

    LISTEN     0      100            ::1:25                          :::*                 

    [root@renyz ~]# lsof -i :22

    COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME

    sshd    6973 root    3u  IPv4  44072      0t0  TCP *:ssh (LISTEN)

    sshd    6973 root    4u  IPv6  44081      0t0  TCP *:ssh (LISTEN)

  • 相关阅读:
    二叉树逻辑结构重点
    循环链表
    数据结构 单链表
    《深入理解计算机系统》第7章:重定位PC相对引用的理解
    一个关于空指针的思考
    简单解决python安装中的Unable to find vcvarsall.bat问题
    解决python本地离线安装requests问题
    使用共享内存和信号量模拟实现多进程会话
    使用openssl演练数字签名
    简单了解C语言内嵌汇编
  • 原文地址:https://www.cnblogs.com/renyz/p/11218776.html
Copyright © 2011-2022 走看看