• Linux---进程管理


    进程管理负责管理和控制所有的动态过程和资源;文件系统负责管理所有的静态信息和资源。Linux进程分为两大类:系统进程和用户进程

    1. 进程的属性

    Linux内核中一些重要的进程信息包括:

    • 进程的内存地址
    • 进程当前的状态
    • 进程正在使用的资源
    • 进程的优先级
    • 进程的属主

    进程的几个常用参数:

    • PID: 进程号
    • PPID:父进程PID
    • UID:真实用户ID (进程创建者的用户ID号)
    • GID:真实组ID(进程创建者所属组的ID号)
    • 谦让度和优先级:优先级高的进程更早被处理。谦让度和优先级是一对相反的概念,高谦让度意味着低优先级,允许用户设置谦让度

    2. 监视进程 ps

     ps aux 用于显示当前系统上运行的所有进程的信息

    wangzhengchao@ubuntu:~$ ps aux
    USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
    root         1  0.0  0.1 185428  4836 ?        Ss   08:42   0:01 /sbin/init splash
    root         2  0.0  0.0      0     0 ?        S    08:42   0:00 [kthreadd]
    root         4  0.0  0.0      0     0 ?        I<   08:42   0:00 [kworker/0:0H]
    root         6  0.0  0.0      0     0 ?        I<   08:42   0:00 [mm_percpu_wq]
    root         7  0.0  0.0      0     0 ?        S    08:42   0:00 [ksoftirqd/0]
    ...
    guest-p+ 31092  0.0  0.1 448660  7840 ?        Sl   12:56   0:02 /usr/lib/x86_64-linux-gnu/deja-dup/deja-dup
    wangzhe+ 31178  0.0  0.9 1624952 38048 ?       Sl   13:01   0:00 /usr/lib/firefox/firefox -contentproc -chil
    root     31357  0.0  0.0      0     0 ?        I    13:06   0:00 [kworker/3:1]
    wangzhe+ 31422  0.1  0.8 638968 31984 ?        Sl   13:08   0:08 /usr/lib/gnome-terminal/gnome-terminal-serv
    wangzhe+ 31428  0.0  0.1  29748  5120 pts/22   Ss   13:08   0:00 bash

    各字段含义:

    USER 进程创建者的用户名
    PID  
    进程的ID
    %CPU  
    进程占用的CPU百分比
    %MEM 
    占用内存的百分比
    VSZ    
    该进程使用的虚拟内存量(KB)
    RSS    
    内存中页的数量
    TTY    
    进程所在终端的ID号
    START  
    该进程的启动时间
    TIME     
    该进程实际使用CPU的时间
    COMMAND 
    命令的名称和参数
    STAT 状态位:
    D 休眠状态(不可唤醒)
    R 正在运行中
    S 休眠状态(可唤醒)
    T 停止或被追踪;
    Z 僵尸进程;

    附加标志位:
    < 优先级高的进程
    N 优先级较低的进程
    L 有些页被锁进内存
    s 进程的领导者(在它之下有子进程

     ps lax 用可以提供父进程ID(PPID)以及谦让度(NI)

    wangzhengchao@ubuntu:~$ ps lax
    F   UID   PID  PPID PRI  NI    VSZ   RSS WCHAN  STAT TTY        TIME COMMAND
    4     0     1     0  20   0 185428  4836 -      Ss   ?          0:01 /sbin/init splash
    1     0     2     0  20   0      0     0 -      S    ?          0:00 [kthreadd]
    1     0     4     2   0 -20      0     0 -      I<   ?          0:00 [kworker/0:0H]
    ...
    5     0 31357     2  20   0      0     0 -      I    ?          0:00 [kworker/3:1]
    0  1000 31422  1143  20   0 638968 31984 poll_s Sl   ?          0:09 /usr/lib/gnome-terminal/gnome-terminal-
    0  1000 31428 31422  20   0  29748  5120 wait   Ss   pts/22     0:00 bash

    3. 及时跟踪进程信息 top

     top 命令能够及时跟踪进程信息,并在默认情况下,每10s更新一次,使用CPU最多的程序会排在最前面,q退出监视。

    wangzhengchao@ubuntu:~$ top
    
    top - 14:49:37 up  6:06,  4 users,  load average: 0.28, 0.37, 0.49
    Tasks: 424 total,   1 running, 369 sleeping,   0 stopped,   0 zombie
    %Cpu(s):  1.0 us,  0.8 sy,  0.0 ni, 98.2 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
    KiB Mem :  3939428 total,   266684 free,  2710988 used,   961756 buff/cache
    KiB Swap:  3998716 total,  3320572 free,   678144 used.   421936 avail Mem 
    
      PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                                 
     1006 root      20   0  417636  77624  58456 S   2.3  2.0   9:02.20 Xorg                                    
    26117 wangzhe+  20   0 2072900 261272  97860 S   2.3  6.6   8:45.22 Web Content                             
     2406 wangzhe+  20   0 2714196 281312  89740 S   1.7  7.1  19:02.00 firefox                                 
    31422 wangzhe+  20   0  638968  32092  21088 S   1.7  0.8   0:11.80 gnome-terminal-                         
        8 root      20   0       0      0      0 I   0.3  0.0   0:32.33 rcu_sched 

    4. 查看占用文件的进程 lsof

     lsof filename  用于查看占用文件filename的进程,若省略filename则显示所有打开文件的进程

    5. 向进程发出信号 kill

     kill [-signal] pid  表示向进程号为pid的进程发送signal信号

    常用的信号:

    信号编号 信号名 描述 执行操作(默认)
    0 EXIT 程序退出时收到的信号 终止
    1 HUP 挂起 终止
    2 INT 中断 终止
    3 QUIT 退出 终止
    9 KILL 杀死 终止
    11 SEGV 段错误 终止
    15 TERM 软件终止 终止

    注意:

    • 普通用户只能终止自己的进程,root用户可以终止任何进程。
    • kill 命令不一定能够终止一个进程。kill只是向进程发出信号,但是进程可以选择封锁或者忽略。但是使用指令 sudo kill -KILL pid 一般可以保证终止进程。
  • 相关阅读:
    第四届蓝桥杯JavaC组国(决)赛真题
    第四届蓝桥杯JavaC组国(决)赛真题
    第四届蓝桥杯JavaC组国(决)赛真题
    第四届蓝桥杯C++B组国(决)赛真题
    第四届蓝桥杯C++B组国(决)赛真题
    第四届蓝桥杯C++B组国(决)赛真题
    第四届蓝桥杯C++B组国(决)赛真题
    Qt 动画快速入门(一)
    越败越战,愈挫愈勇(人生就像心电图,一帆风顺,你就挂了!)
    CSS 编码中超级有用的工具集合
  • 原文地址:https://www.cnblogs.com/iwangzhengchao/p/9909303.html
Copyright © 2020-2023  润新知