2023-03-22监控和管理Linux进程

列出进程

  • 进程是已启动的可执行程序的运行中实例,进程由以下组成部分
    -- 已分配内存的地址空间
    -- 安全属性,包括所有权凭据和特权
    -- 程序代码的一个或多个执行线程
    -- 进程状态
  • 进程的环境包括
    -- 本地和全局变量
    -- 当前调度的上下文selinux
    -- 分配的系统资源,如文件描述符(fd)和网络端口
  • 现有的(父)进程复制自己的地址空间(fork)来创建一个新的(子)进程结构,每个新进程分配由唯一进程ID(PID),满足跟踪和安全性之需。
  • PID和父进程ID(PPID)是新进程环境的元素
  • 任何进程都可以创建子进程
  • 所有进程都是一个系统进程的后代
  • RHEL7之后,第一个系统进程是systemd
image.png
  • 使用ps命令显示一次所有进程
~]# ps aux
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.3 193576  6700 ?        Ss   Apr21   1:19 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root         2  0.0  0.0      0     0 ?        S    Apr21   0:00 [kthreadd]
root         4  0.0  0.0      0     0 ?        S<   Apr21   0:00 [kworker/0:0H]
root         5  0.0  0.0      0     0 ?        S    Apr21   0:00 [kworker/u4:0]
root         6  0.0  0.0      0     0 ?        S    Apr21   0:00 [ksoftirqd/0]
root         7  0.0  0.0      0     0 ?        S    Apr21   0:00 [migration/0]
  • 使用top动态显示进程
~]# top
top - 01:53:01 up 5 days,  1:11,  1 user,  load average: 0.00, 0.01, 0.05
Tasks:  99 total,   3 running,  96 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.2 us,  0.0 sy,  0.0 ni, 99.7 id,  0.0 wa,  0.0 hi,  0.2 si,  0.0 st
KiB Mem :  1881984 total,  1230000 free,   266992 used,   384992 buff/cache
KiB Swap:  2097148 total,  2097148 free,        0 used.  1410580 avail Mem

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
 2993 root      20   0       0      0      0 R   0.3  0.0   0:07.06 kworker/1:1
27490 root      20   0  162084   2216   1552 R   0.3  0.1   0:00.02 top
    1 root      20   0  193576   6700   4180 S   0.0  0.4   1:19.85 systemd
    2 root      20   0       0      0      0 S   0.0  0.0   0:00.01 kthreadd

控制作业

  • 作业控制是shell的一种功能,允许单个shell实例运行和管理多个命令
  • 作业与在shell提示符中输入的每个管道相关联
  • 一次只能有一个作业从测定窗口中读取和键盘生成的信号
  • 每个终端是其自身的会话,并且可以具有一个前台进程和任意数量的独立后台进程,一个作业只能属于一个会话
  • 在后台运行作业
    -- 在命令后端附加&即可
    -- 使用jobs查看当前会话的后台作业
    -- ps j查看所有用户的后台作业
    -- fg %JOB恢复后台作业到前台
    -- bg %JOB恢复后台作业为运行
[root@serverb ~]# sleep 1000 &  #后台运行作业
[1] 28057
[root@serverb ~]# jobs  #查看当前会话的后台作业
[1]+  Running                 sleep 1000 &
[root@serverb ~]# fg %1  #恢复后台作业到前台
sleep 1000
^Z        #ctrl+z暂停进程
[1]+  Stopped                 sleep 1000
[root@serverb ~]# jobs
[1]+  Stopped                 sleep 1000
[root@serverb ~]# bg %1  #恢复暂停进程到运行
[1]+ sleep 1000 &
[root@serverb ~]# fg %1
sleep 1000

中断进程

  • 使用信号控制进程
image.png
[root@serverb ~]# ps aux | grep sleep
root     29833  0.0  0.0 108056   356 pts/1    S    02:39   0:00 sleep 1000
root     29837  0.0  0.0 108056   356 pts/1    S    02:39   0:00 sleep 2000
root     29841  0.0  0.0 108056   356 pts/1    S    02:40   0:00 sleep 3000
root     29858  0.0  0.0 112812   980 pts/0    S+   02:40   0:00 grep --color=auto sleep
[root@serverb ~]# kill 29833
[root@serverb ~]# ps aux | grep sleep
root     29837  0.0  0.0 108056   356 pts/1    S    02:39   0:00 sleep 2000
root     29841  0.0  0.0 108056   356 pts/1    S    02:40   0:00 sleep 3000
root     29879  0.0  0.0 112812   976 pts/0    R+   02:40   0:00 grep --color=auto sleep
[root@serverb ~]# kill -9 29837
[root@serverb ~]# ps aux | grep sleep
root     29841  0.0  0.0 108056   356 pts/1    S    02:40   0:00 sleep 3000
root     29896  0.0  0.0 112812   980 pts/0    S+   02:41   0:00 grep --color=auto sleep
[root@serverb ~]# kill -SIGTERM 29841
[root@serverb ~]# ps aux | grep sleep
root     29925  0.0  0.0 112812   976 pts/0    S+   02:41   0:00 grep --color=auto sleep
[root@serverb ~]# jobs
[1]   Terminated              sleep 1000
[2]-  Killed                  sleep 2000
[3]+  Terminated              sleep 3000

[root@serverb ~]# jobs
[1]   Running                 sleep 3000 &
[2]-  Running                 sleep 2000 &
[3]+  Running                 sleep 1000 &
[root@serverb ~]# killall sleep
[root@serverb ~]# jobs
[1]   Terminated              sleep 3000
[2]-  Terminated              sleep 2000
[3]+  Terminated              sleep 1000

监控进程活动

  • 描述负载平均值
    -- 负载平均值是Linux内核提供的一种度量方式,它可以表示一段时间内感知的系统负载。
  • 了解Linux负载平均值计算
    -- 通过报告CPU上准备运行的进程数以及等待磁盘或网络I/O完成的进程数,Linux可以确定负载平均值
    -- 负载数基本上根据准备运行的进程数和等待I/O完成进程数而得到的;
    -- 一些unix系统仅考虑CPU的使用率或运行队列长度来指示系统负载。Linux还包括磁盘I/O和网络利用率,因为他们与CPU负载一样对系统产生重大的影响。当负载平均值很高,但CPU活动很低,请检查磁盘和网络活动。
  • uptime查看cpu的平均负载值,只显示一次
 ~]$ uptime
 10:31:01 up 5 days, 15:40,  1 user,  load average: 0.28, 0.18, 0.15
#uptime显示的是1min、5min、15min的cpu平均负载值;总的来讲cpu平均负载之只要不高于cpu总核心数就没有问题
#查看cpu总核心数
 ~]$ nproc
4
  • top工具动态查看Linux系统的进程活动状态
 ~]$ top
top - 11:30:00 up 5 days, 16:39,  1 user,  load average: 0.31, 0.21, 0.16
Tasks: 232 total,   1 running, 231 sleeping,   0 stopped,   0 zombie
%Cpu(s):  4.9 us,  7.6 sy,  0.0 ni, 87.4 id,  0.1 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  7972392 total,  3939352 free,  2201144 used,  1831896 buff/cache
KiB Swap: 16777212 total, 16777212 free,        0 used.  5282228 avail Mem

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
  851 root      20   0  396668   4244   3388 S  48.5  0.1   2209:27 accounts-daemon
 2068 gdm       20   0 3672668 123820  56112 S   0.7  1.6  14:37.83 gnome-shell
  • top命令显示结果详解
    -- 第一行:
    top:表示命令名称
    up xxx:表示系统的启动时间
    load average:表示cpu最近1min、5min、15min内的系统负载,当负载超过cpu总核数时,算是cpu过载
    -- 第二行:
    Tasks:表示系统总进程个数
    1 running:表示1个进程正在运行
    231 sleeping:表示有231个进程处于休眠状态
    0 stopped:表示有0个进程已暂停
    0 zombie:表示有0个僵停进程
    -- 第三行:
    %Cpu(s):cpu占用率
    us:用户空间占用cpu的百分比
    sy:系统空间占用cpu的百分比
    ni:用户进程的优先级
    id:空闲的cpu时间百分比
    wa:等待I/O的完成的cpu时间百分比
    hi:硬件中断
    si:软件中断
    st:被强制等待虚拟cpu的时间
    -- 第四行:物理内存的使用情况
    -- 第五行:交换分区的使用情况
  • top命令界面使用的快捷键
image.png
  • 使用htop实时监控
    htop默认RHEL没有,需要epel源安装,htop界面的相比较比top更加丰富直观
image.png
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Linux进程管理原理 Linux的进程管理,就是对硬件各资源进行分配、调度、销毁等工作,其主要部件的管理为:CP...
    魏镇坪阅读 1,371评论 0 6
  • 列出进程 目标 完成本节内容后,你能够获得系统上运行的程序的相关信息,以确定状态、资源使用和所有权,这样你就可以控...
    Hi_小熊阅读 434评论 0 1
  • 进程概念 内核的功用:进程管理、文件系统、网络功能、内存管理、驱动程序、 安全功能等 Process:运行中的程序...
    JevonWei阅读 567评论 0 0
  • 进程相关概念 内核的功能 进程管理、文件系统、网络功能、内存管理、驱动程序、安全功能等。 process 进程,正...
    夹克K阅读 1,067评论 0 1
  • Linux进程 进程(Process): 运行中的程序的一个副本进程存在生命周期,程序是一个静态的文件 Linux...
    SRE1阅读 1,052评论 0 0