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
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,686评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,668评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,160评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,736评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,847评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,043评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,129评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,872评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,318评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,645评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,777评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,470评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,126评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,861评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,095评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,589评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,687评论 2 351

推荐阅读更多精彩内容

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