zoukankan      html  css  js  c++  java
  • 十、系统监控


    一、进程


    1、进程的含义
    程序运行时,进入内存,就叫进程
    程序是静态的,消耗磁盘空间
    进程是动态的,是cpu资源和内存

    2、查看进程
    a 显示所有包括终端的进程
    x 显示所有包括不连接终端的进程(如守护进程)
    u 显示进程所有者的信息
    p 显示指定进程 ID 的信息
    -e 显示所有进程
    -f 显示进程的父进程
    -l 以长列表的方式显示信息
    -o 属性,… 显示定制的信
    ps
    ps aux
    top
    -elf
    ps efx -o %cpu 查看某些特定信息
    ps efx -o pid,%cpu


    3、RHEL6 第一个进程init
    RHEL7 第一个进程systemd

    4、进程的状态
    PID :进程的id
    STAT :表示进程的状态
    D 不能中断的进程(通常为IO)
    R 正在运行中的进程
    S 已经中断的进程,通常情况下,系统中大部分进程都是这个状态
    T 已经停止或者暂停的进程,如果我们正在运行一个命令,比如说 sleep 10 如果我们按一下ctrl -z 让他暂停,那么我们用ps查看就会显示T这个状态
    W 这个好像是说,从内核2.6xx 以后,表示为没有足够的内存页分配
    X 已经死掉的进程(这个好像从来不会出现)
    Z 僵尸进程,杀不掉,打不死的垃圾进程,占系统一小点资源,不过没有关系。如果太多,就有问题了。一般不会出现。
    < 高优先级进程
    N 低优先级进程
    L 在内存中被锁了内存分页
    s 主进程
    l 多线程进程
    + 代表在前台运行的进程
    TIME 进程实际运行的时间
    COMMAND 进程运行了什么命令

    5、top
    动态查看系统进程,默认top每3s刷新一次
    M 按内存排序
    P 按cpu排序
    r renice进程的nice值
    k 杀掉进程
    每隔1s刷新1次
    top -d 1
    z 改变颜色
    看其他cpu状态(看其他core) 按0,1,2,3
    top -bn1 非动态打印系统资源


    6、杀进程,发信号
    kill -15 pid 整洁的关闭
    kill -9 pid 直接杀掉进程

    前台转到后台 ctrl+z 将进程转入后台,并停止
    jobs 查看后台的任务
    后台运行
    bg %任务号 在后台运行
    fg %任务号 调到前台运行

    杀掉后台的任务
    kill -信号 %任务号
    默认kill发出15号信号


    7、pstree查看进程树
    pgrep 进程搜索
    选项:
    pgrep –U root
    pgrep–G redhat
    eg:pgrep -u -t u1
    pgrep -u u1 -l -t tty2


    kill -9 3213
    killall杀死进程树
    eg:killall -9 sshd

    8、进程优先级
    优先级=优先的系数+nice
    不同进程的优先系数不一样,由内核绝对系数
    一般进程的优先级 20
    用户可以调节nice值
    nice -20到19(数值越大级别越低)
    nice -n -20 程序 (没有运行的程序)
    renice -n -20 pid号(已经运行的进程)
    RH442调优讲修改系数
    chrt
    普通用户只能向正数调,相当于越调越慢

    在top中修改nice
    r --- pid --- nice值


    二、系统状态


    1、w查看当前系统的负载和登录系统的用户 uptime是第一行
    15:23:46 up 3:34, 2 users, load average: 0.03, 0.05, 0.00
    当前时间 系统登录时间 登录用户数 平均负载 1分钟 5内分钟 15分钟
    平均负载数小于cpu数量,说明当前服务器没有压力

    2、cat /proc/cpuinfo
    grep -c 'processor' /proc/cpuinfo

    3、vmstat 监控系统的状态
    w查看的是系统整体上的负载,通过看那个数值可以知道当前系统有没有压力,但是具体是哪里(CPU, 内存,磁盘等)有压力就无法判断了。通过 vmstat 就可以知道具体是哪里有压力

    [root@localhost ~]# vmstat
    procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
    r b swpd free buff cache si so bi bo in cs us sy id wa st
    0 0 512 5392 37460 213276 0 0 100 549 153 59 1 4 93 1 0


    1)procs 显示进程相关信息

    r :表示运行和等待cpu时间片的进程数,如果长期大于服务器cpu的个数,则说明cpu不够用了;

    b :表示等待资源的进程数,比如等待I/O, 内存等,这列的值如果长时间大于1,则需要关注一下了;

    2)memory 内存相关信息

    swpd :表示切换到交换分区中的内存数量 ;

    free :当前空闲的内存数量;

    buff :缓冲大小,(即将写入磁盘的);

    cache :缓存大小,(从磁盘中读取的);

    3)swap 内存交换情况

    si :由交换区写入到内存的数据量;

    so :由内存写入到交换区的数据量;

    4)io 磁盘使用情况

    bi :从块设备读取数据的量(读磁盘);

    bo: 从块设备写入数据的量(写磁盘);

    5)system 显示采集间隔内发生的中断次数

    in :表示在某一时间间隔中观测到的每秒设备中断数;

    cs :表示每秒产生的上下文切换次数;

    6)CPU 显示cpu的使用状态

    us :显示了用户下所花费 cpu 时间的百分比;

    sy :显示系统花费cpu时间百分比;

    id :表示cpu处于空闲状态的时间百分比;

    wa :表示I/O等待所占用cpu时间百分比;

    st :表示被偷走的cpu所占百分比(一般都为0,不用关注);


    关注r列,b列,和wa列,三列代表的含义在上边说得已经很清楚。IO部分的bi以及bo也是要经常参考的对象。如果磁盘io压力很大时,这两列的数值会比较高。另外当si, so两列的数值比较高,并且在不断变化时,说明内存不够了,内存中的数据频繁交换到交换分区中,这往往对系统性能影响极大。

    vmstat 1 每隔1秒打印一次状态,一直打印,Ctrl + c 结束
    vmstat 1 5 每隔一秒钟打印一次状态,共打印5次

    4、sar监控系统状态
    sar 命令很强大,它可以监控系统所有资源状态,比如平均负载、网卡流量、磁盘状态、内存使用等等。它不同于其他系统状态监控工具的地方在于,它可以打印历史信息,可以显示当天从零点开始到当前时刻的系统状态信息。如果您系统没有安装这个命令,请使用 yum install -y sysstat 命令安装。初次使用sar命令会报错,那是因为sar工具还没有生成相应的数据库文件(时时监控就不会了,因为不用去查询那个库文件)。它的数据库文件在 “/var/log/sa/” 目录下,默认保存一个月。
    1)查看网卡流量 sar -n DEV
    2)查看历史负载 sar -q

    5、free查看内存使用状况
    [root@localhost ~]# free
    total used free shared buffers cached
    Mem: 326616 137332 189284 0 34480 73336
    -/+ buffers/cache: 29516 297100
    Swap: 2097144 1144 2096000


    当前系统内存总大小为326616(单位是k)已经使用137332, 剩余189284. 其实真正剩余并不是这个189284, 而是第二行的297100, 真正使用的也是第二行的29516, 这是因为系统初始化时,就已经分配出很大一部分内存给缓存,这部分缓存用来随时提供给程序使用,如果程序不用,那这部分内存就空闲。所以,查看内存使用多少,剩余多少请看第二行的数据。另外我们还可以加-m 或者-g选项分别以M或G为单位打印内存使用状况:


    5、netstat 查看网络状况
    netstat -lnp 打印当前系统启动哪些端口
    netstat -an 打印网络连接状况

    6、抓包工具tcpdump
    安装tcpdump命令:yum install -y tcpdump
    tcpdump -nn -i eth0

    在linux下给在线用户发消息
    write 用户名
    mesg n 不接受消息 (下线)
    mesg y 接受消息 (上线)

  • 相关阅读:
    第七周作业
    第六周作业
    第五周作业
    第四周作业
    第三周作业
    第二周作业
    第一周作业
    老鼠与盈利
    币值转换
    2015 USP-ICMC gym 100733 J. Summer Wars
  • 原文地址:https://www.cnblogs.com/xmdjb/p/10949455.html
Copyright © 2011-2022 走看看