zoukankan      html  css  js  c++  java
  • Linux 内存监控

    centos6 init进程是系统中的第一个进程,PID永远为1

    查看系统在中静态进程的统计信息

    命令: ps

    格式: ps [可选项]

    • ax: 显示所有的进程信息
    • -u: 使用以用户为主的格式输出进程信息
    • -e: select all processes 显示系统内的进程信息
    • -l: 使用长格式显示进程信息
    • -f: full 使用完整的格式显示进程信息

    补充: ps -eo pid,args,psr 可以查看系统上进程的 pid 命令参数 已经占用的哪个cpu

    ps aux命令

    [root@ecs-t6-large-2-linux-20190824103606 tmp]# ps aux
    USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
    root         1  0.0  0.1 125568  3984 ?        Ss   Sep04   0:05 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
    root         2  0.0  0.0      0     0 ?        S    Sep04   0:00 [kthreadd]
    root         3  0.0  0.0      0     0 ?        S    Sep04   0:00 [ksoftirqd/0]
    
    解析
    USER: 进程所属的用户
    PID: 进程id
    %CPU: 进程占用CPU的百分比
    %MEM: 进程占用内存的百分比
    VSZ:  进程使用的虚拟内存量
    RSS:  进程占用的物理内存容量
    TTY: 进程在哪个终端上运行
    STAT: 进程状态
    START: 进程启动时间
    TIME: 进程实际占用cpu的时间
    COMMAND: 命令名称和参数
    

    ps -elf命令

    [root@ecs-t6-large-2-linux-20190824103606 tmp]# ps -elf
    F S UID        PID  PPID  C PRI  NI ADDR SZ WCHAN  STIME TTY          TIME CMD
    4 S root         1     0  0  80   0 - 31392 ep_pol Sep04 ?        00:00:05 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
    1 S root         2     0  0  80   0 -     0 kthrea Sep04 ?        00:00:00 [kthreadd]
    1 S root         3     2  0  80   0 -     0 smpboo Sep04 ?        00:00:00 [ksoftirqd/0]
    1 S root         5     2  0  60 -20 -     0 worker Sep04 ?        00:00:00 [kworker/0:0H]
    
    
    F : 进程的flag, 4代表使用者, super user
    S : 进程的用户
    PPID : 父进程
    C: cpu的利用率
    PRI : Priority  优先级
    NI : Nice
    PRI/NI : 进程被CPU执行的优先级, 值越小, 越容易被执行
    ADDR: 进程内存的地址
    SZ: 占用的内存大小
    WCHAN: 是否正在运作
    CMD: 命令名称和参数
    

    查看动态的进程排名信息

    top命令

    • P:按%CPU排序
    • M:按%MEM排序
    • 1: 多核的话, 按1,可以显示出全部CPU

    空格:马上刷新

    默认每三秒就刷新一次

    每隔一秒刷新一次

    top -d 1  
    

    top 字段解析

    top - 20:31:56 up 10 days,  5:03,  1 user,  load average: 0.00, 0.01, 0.05
     当前时间      系统运行的时间    在线人数       系统负载 : 任务队列的平均长度     
    # 使用w 或 uptime 可以查看到同样的信息
    
    
    Tasks:  81 total,   1 running,  80 sleeping,   0 stopped,   0 zombie
    %Cpu(s):  3.2 us,  0.0 sy,  0.0 ni, 96.8 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
    total 进程总数81   正在运行1个进程  80个在休眠  0个停止了  0个僵尸进程数
    3.2 us : 用户空间占用cpu百分比3.2
    0.0 sy : 内核空间占用cpu的百分百
    0.0 ni : 用户空间内改变过优先级的进程占用cpu的百分比
    96.8 id: 空闲的cpu百分比
    0.0 wa: 等待输入输出的进程占用cpu 的百分比
    0.0 hi: 硬件cpu占用百分比
    0.0 si: 软中断占用cpu百分比
    0.0 st: 虚拟机占有cpu百分比
    
    
    KiB Mem :  3880020 total,   601516 free,  1553552 used,  1724952 buff/cache
    KiB Swap:        0 total,        0 free,        0 used.  2045092 avail Mem 
    
    Mem 内存 总共3880020k 物理内存容量  空闲内存容量=601516  已经使用:used=1553552 缓存=1724952
    Swap: 交换区总量0 
    
      PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND        
        1 root      20   0  125568   3984   2628 S   0.0  0.1   0:05.14 systemd     
        
    PID: 进程id
    USER: 优先级
    PR: 优先级
    NI: 负数表示高优先级, 正数表示低优先级
    VIRT: 进程使用的虚拟内存数
    RES: 进程使用的未被换出的物理内存大小
    SHR: 共享内存量
    S: 进程状态
    %CPU: 使用的CPU百分比
    @MEN: 使用的物理内存百分比
    TIME+ : 使用的CPU时间总计
    COMMAND :  命令名
    

    加入nice值后, PRI(新) = PRI(老) + nice

    • root ,可以设置的范围是 [-20 19]
    • 普通用户 ,可以设置的范围是 [0 19]

    以树型结构显示各进程间的关系

    命令: pstree

    [root@ecs-t6-large-2-linux-20190824103606 tmp]# pstree
    systemd─┬─NetworkManager─┬─dhclient
            │                └─2*[{NetworkManager}]
            ├─agetty
            ├─atd
            ├─auditd───{auditd}
            ├─crond
            ├─dbus-daemon
            ├─dockerd-current─┬─docker-containe───10*[{docker-containe}]
            │                 └─10*[{dockerd-current}]
            ├─irqbalance
            ├─java───49*[{java}]
            ├─lvmetad
            ├─master─┬─pickup
            │        └─qmgr
            ├─ntpd
            ├─polkitd───6*[{polkitd}]
            ├─python
            ├─rsyslogd───2*[{rsyslogd}]
            ├─sshd───sshd───bash───pstree
            ├─systemd-journal
            ├─systemd-logind
            ├─systemd-udevd
            ├─tuned───4*[{tuned}]
            └─wrapper─┬─java───14*[{java}]
                      └─{wrapper}
    

    进程优先级设置

    • niceness:表示进程可被执行的优先级的修正数值 ,可手工修改,与priority有关

    优先级有正负之分(-20 ~ 19)

    加入nice值后 PRI(新) = PRI(老) + nice

    root可以设置nice值范围(-20 ~ 19)

    普通用户可以设置nice值范围(0 ~ 19)

    • 用nice命令新的nice(新开启的进程)

    以新的nice来启动命令

    nice -10 vi &  设置nice值为10
    nice --10 vi & 设置nice值为-10
    
    • 用renice命令设置新nice(已经存在的进程)
    renice 10 15132   设置nice值为10
    renice -10 15132  设置nice值为-10
    renice命令。renice -n 2 -p 3432。-n,后面是优先级的值;-p,是进程号。
    
    • 用top命令修改进程的优先级
    先输入r,然后输入pid,最后输入优先级
    

    后台运行

    需要在命令行后添加&符号

    如何让 jar包后台运行?

    nohup java -jar xxx.jar &
    

    退出 exit

    信号 kill

    kill命令用来发送信号, 是进程间通信机制中唯一的异步通信机制

    进程接收到信号后,采取其他动作,常用它杀死进程

    信号值 符号 行为
    2 sigint (interrupt) ctrl + c
    9 sigkill (强制杀死进程) 请求终止,不能忽略
    15 sigterm ( terminate终止) 请求终止 默认值
    20 sigtstp (stop, 挂起进程,放到后台执行) ctrl + z

    强制杀死进程

    kill -9 pid
    

    有时候直接 kill pid 却杀不掉这个进程, 说明他屏蔽了默认值

    杀死终端

    实现强制下线用户

    pkill [选项]

    • -u: 根据进程所属的用户名,杀死进程
    • -t: 根据用户所在的终端 TTY杀死进程
    [root@localhost ~]# w | grep -v "root"
    14:10:10 up  6:08,  4 users,  load average: 0.00, 0.01, 0.00
    USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
    teacher  tty1     -                14:04    5:34   0.16s  0.16s -bash
    hack      pts/1    173.17.17.174    14:05    4:32   0.17s  0.17s -bash
    [root@localhost ~]# pkill -9 -t pts/1
    [root@localhost ~]# w | grep -v "root"
     14:12:22 up  6:10,  3 users,  load average: 0.00, 0.00, 0.00
    USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
    teacher  tty1     -                14:04    7:46   0.16s  0.16s -bash
    

    显示物理内存和交换空间的使用情况

    命令: free

    -m: 用MB的形式显示内存信息
    -h: human readable

    [root@ecs-t6-large-2-linux-20190824103606 ~]# free -h
                  total        used        free      shared  buff/cache   available
    Mem:           3.7G        1.4G        636M        8.6M        1.6G        2.0G
    Swap:            0B          0B          0B
    

    从用户的角度来说,可用的空间就是 free + buff/cache
    buff/cache 会随着系统负载的增大而减小, 释放掉缓存的空间,更多的IO直接针对磁盘操作,系统会变慢

    内存监控

    • 系统内存信息在这个文件记录 /proc/meminfo

    点击查看对这个文件所有字段的解释

    释放内存

    /proc是一个特殊文件系统,我们可以通过对它的读写操作,来作为与kernel实体间进行通信的一种手段.也就是说可以通过修改/proc中的文件,来对当前kernel的行为做出调整.那么我们可以通过调整/proc/sys/vm/drop_caches来释放内存

    往 /proc/sys/vm/drop_caches 分别写入1, 2, 3

    页面缓存(page cache)可以包含磁盘块的任何内存映射
    echo 1 > /proc/sys/vm/drop_caches;
    
    inode是表示文件的数据结构
    echo 2 > /proc/sys/vm/drop_caches;
    
    dentries是表示目录的数据结构 。
    echo  3  > /proc/sys/vm/drop_caches.
    
  • 相关阅读:
    Orchard:如何生成模块和生成一个Content Part
    马云2011年邮件
    asp.net页面编码问题
    创建一个三D立体感的主页
    25个网页设计实例
    设计一个简洁的个人网站
    新浪微博产品交互改进[转]
    设计一个暗色调简洁漂亮的主页
    用HTML5 画LOGO
    成功企业站设计思路
  • 原文地址:https://www.cnblogs.com/ZhuChangwu/p/11520324.html
Copyright © 2011-2022 走看看