linux日常管理

    1. w 查看系统的负载

[root@dong-Linux ~]# w
 15:50:55 up 21 min,  2 users,  load average: 0.00, 0.26, 0.74
USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
dong     tty1     :0               15:33   20:52  16.33s  0.20s pam: gdm-passwo
root     pts/0    192.168.18.1     15:36    0.00s  0.28s  0.01s w

        上面第一行的数据显示的信息从左到右分别是:系统时间,系统已运行时间,当前登陆的用户数,系统1min,5min,15min的平均负载

        第二行是:当前有哪些用户,从哪种方式登陆的,登陆地址,IDLE:空闲了多长时间,JCPU:该终端(tty)连接的所有进程占用的时间,PCPU:当前进程所占用的时间,WHAT:正在运行进程的命令行

    2.vmstat 监控系统的状态

[root@dong-Linux ~]# 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   1744  89532   8320 238060    0    1   225    77  710  954  1  3 86  9  0

    上面的w只是能知道系统有没有压力,但是具体是哪些参数(CPU,内存,磁盘等)有压力呢,这个就需要vmstat了。

    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两列的数值比较高,并且在不断变化时,说明内存不够了,内存中的数据频繁交换到交换分区中,这往往对系统性能影响极大。

    3.top 显示进程所占系统的资源

top - 16:09:03 up 39 min,  2 users,  load average: 0.00, 0.05, 0.28
Tasks: 158 total,   1 running, 157 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.0%us,  0.3%sy,  0.0%ni, 99.7%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:    510784k total,   421872k used,    88912k free,     8416k buffers
Swap:  1048568k total,     1744k used,  1046824k free,   238332k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
 1268 root      20   0 38864 3252 2972 S  0.7  0.6   0:14.80 vmtoolsd
 2757 root      20   0  2704 1144  880 R  0.7  0.2   0:00.10 top
 2457 dong      20   0 74540  21m  16m S  0.3  4.3   0:24.49 vmtoolsd
    1 root      20   0  2900 1244 1104 S  0.0  0.2   0:01.49 init
    2 root      20   0     0    0    0 S  0.0  0.0   0:00.00 kthreadd
    3 root      RT   0     0    0    0 S  0.0  0.0   0:00.00 migration/0
    4 root      20   0     0    0    0 S  0.0  0.0   0:00.05 ksoftirqd/0
    5 root      RT   0     0    0    0 S  0.0  0.0   0:00.00 migration/0
    6 root      RT   0     0    0    0 S  0.0  0.0   0:16.50 watchdog/0
    7 root      20   0     0    0    0 S  0.0  0.0   0:01.43 events/0
    8 root      20   0     0    0    0 S  0.0  0.0   0:00.00 cgroup
    9 root      20   0     0    0    0 S  0.0  0.0   0:00.00 khelper
   10 root      20   0     0    0    0 S  0.0  0.0   0:00.00 netns
   11 root      20   0     0    0    0 S  0.0  0.0   0:00.00 async/mgr
   12 root      20   0     0    0    0 S  0.0  0.0   0:00.00 pm
   13 root      20   0     0    0    0 S  0.0  0.0   0:00.02 sync_supers
················//下面省略

    这个命令能动态打印系统进程所占的资源的情况,默认是没隔3秒钟打印一次,这个命令显示的内容非常丰富,包括系统负载,进程数,cpu和内存的使用情况等,在最后,列出某个进程的详细信息,可以关注我们自己想要关注的信息

    4.sar 监控系统状态

[root@dong-Linux ~]# sar
Linux 2.6.32-431.el6.i686 (dong-Linux)  2015年08月27日  _i686_  (1 CPU)

15时30分20秒       LINUX RESTART

15时40分02秒     CPU     %user     %nice   %system   %iowait    %steal     %idle
15时50分01秒     all      0.59      0.00      3.38      1.38      0.00     94.65
16时00分02秒     all      1.55      0.00      1.35      2.56      0.00     94.54
16时10分01秒     all      0.10      0.00      0.20      0.18      0.00     99.51
平均时间:     all      0.74      0.00      1.59      1.36      0.00     96.31

    sar这个命令很强大,可以监到所有的资源状态,包括负载,网卡流量,磁盘状态,内存使用等,它不仅可以记录当前的资源状态情况,还有历史情况,它的数据记录在/var/log/sa/下面,你可以查看历史的情况,默认只记录一个月的情况,这个命令太强大,列举几个常用的

[root@dong-Linux ~]# sar -n DEV
Linux 2.6.32-431.el6.i686 (dong-Linux)  2015年08月27日  _i686_  (1 CPU)

15时30分20秒       LINUX RESTART

15时40分02秒     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
15时50分01秒        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
15时50分01秒      eth0    672.12    671.70    100.19     63.08      0.00      0.00      0.00
16时00分02秒        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
16时00分02秒      eth0     15.51     10.33     19.59      0.55      0.00      0.00      0.00
16时10分01秒        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
16时10分01秒      eth0      0.15      0.17      0.02      0.12      0.00      0.00      0.00
平均时间:        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
平均时间:      eth0    216.71    214.84     38.12     20.07      0.00      0.00      0.00

    IFACE表示设备名称,rxpck/s 表示每秒进入收取的包的数量,txpck/s 表示每秒发送出去的包的数量,rxbyt/s 表示每秒收取的数据量(单位Byte),txbyt/s表示每秒发送的数据量。如果有一天您所管理的服务器丢包非常严重,那么您就应该看一看这个网卡流量是否异常了,如果rxpck/s 那一列的数值大于4000,或者rxbyt/s那列大于5,000,000则很有可能是被攻击了,正常的服务器网卡流量不会高于这么多,除非是您自己在拷贝数据。上面的命令是查看网卡流量历史的,如何时时查看网卡流量呢?

[root@dong-Linux ~]# sar -n DEV 1 5
Linux 2.6.32-431.el6.i686 (dong-Linux)  2015年08月27日  _i686_  (1 CPU)

16时23分28秒     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
16时23分29秒        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
16时23分29秒      eth0      0.00      0.00      0.00      0.00      0.00      0.00      0.00

16时23分29秒     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
16时23分30秒        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
16时23分30秒      eth0      1.01      1.01      0.06      0.40      0.00      0.00      0.00

16时23分30秒     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
16时23分31秒        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
16时23分31秒      eth0      1.00      1.00      0.06      0.40      0.00      0.00      0.00

16时23分31秒     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
16时23分32秒        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
16时23分32秒      eth0      1.01      1.01      0.06      0.40      0.00      0.00      0.00

16时23分32秒     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
16时23分33秒        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
16时23分33秒      eth0      1.01      1.01      0.06      0.40      0.00      0.00      0.00

平均时间:     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
平均时间:        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
平均时间:      eth0      0.80      0.80      0.05      0.32      0.00      0.00      0.00

    查看历史流量信息

[root@dong-Linux ~]# sar -n DEV -f /var/log/sa/sa
sa21   sa22   sa23   sa24   sa25   sa26   sa27   sa28   sa30   sar21  sar22
[root@dong-Linux ~]# sar -n DEV -f /var/log/sa/sa21
Linux 2.6.32-431.el6.i686 (dong-Linux)  2015年08月21日  _i686_  (1 CPU)

10时50分00秒       LINUX RESTART

11时00分01秒     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
11时10分01秒        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
11时10分01秒      eth0      8.88      5.50     11.27      0.29      0.00      0.00      0.00
11时20分01秒        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
11时20分01秒      eth0      0.14      0.10      0.01      0.01      0.00      0.00      0.00
11时30分01秒        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
11时30分01秒      eth0    166.93     55.32    212.27      3.34      0.00      0.00      0.00
11时40分02秒        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
11时40分02秒      eth0      5.56      3.00      6.94      0.17      0.00      0.00      0.00
..............

    查看历史负载 sar -q

[root@dong-Linux ~]# sar -q
Linux 2.6.32-431.el6.i686 (dong-Linux)  2015年08月27日  _i686_  (1 CPU)

15时30分20秒       LINUX RESTART

15时40分02秒   runq-sz  plist-sz   ldavg-1   ldavg-5  ldavg-15
15时50分01秒         0       253      0.01      0.31      0.79
16时00分02秒         0       252      1.06      0.36      0.54
16时10分01秒         0       254      0.00      0.04      0.26
16时20分01秒         0       253      0.00      0.00      0.12
平均时间:         0       253      0.27      0.18      0.43


    5.free 查看内存使用情况

[root@dong-Linux ~]# free
             total       used       free     shared    buffers     cached
Mem:        510784     422484      88300          0       9004     238504
-/+ buffers/cache:     174976     335808
Swap:      1048568       1744    1046824

    上面分别表示内存总来能够,已经使用量,空闲量,后面是共享的空间,缓存和cache等,另外用-m  -g用单位表示这些信息

    6.ps查看系统进程

    windows可以打开任务管理器查看有哪些程序在运行,linux下用ps这个命令就可以了,价格参数ps aux

[root@dong-Linux ~]# ps aux
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.2   2900  1244 ?        Ss   15:29   0:01 /sbin/init
root         2  0.0  0.0      0     0 ?        S    15:29   0:00 [kthreadd]
root         3  0.0  0.0      0     0 ?        S    15:29   0:00 [migration/0]
root         4  0.0  0.0      0     0 ?        S    15:29   0:00 [ksoftirqd/0]
root         5  0.0  0.0      0     0 ?        S    15:29   0:00 [migration/0]
root         6  0.4  0.0      0     0 ?        S    15:29   0:16 [watchdog/0]
root         7  0.0  0.0      0     0 ?        S    15:29   0:01 [events/0]
root         8  0.0  0.0      0     0 ?        S    15:29   0:00 [cgroup]
root         9  0.0  0.0      0     0 ?        S    15:29   0:00 [khelper]
root        10  0.0  0.0      0     0 ?        S    15:29   0:00 [netns]
root        11  0.0  0.0      0     0 ?        S    15:29   0:00 [async/mgr]
root        12  0.0  0.0      0     0 ?        S    15:29   0:00 [pm]
root        13  0.0  0.0      0     0 ?        S    15:29   0:00 [sync_supers]
root        14  0.0  0.0      0     0 ?        S    15:29   0:00 [bdi-default]
root        15  0.0  0.0      0     0 ?        S    15:29   0:00 [kintegrityd/0]
root        16  0.0  0.0      0     0 ?        S    15:29   0:02 [kblockd/0]
root        17  0.0  0.0      0     0 ?        S    15:29   0:00 [kacpid]
root        18  0.0  0.0      0     0 ?        S    15:29   0:00 [kacpi_notify
.................

    下面是一些参数的介绍

    PID :进程的id,这个id很有用,在linux中内核管理进程就得靠pid来识别和管理某一个程,比如我想终止某一个进程,则用 ‘kill  进程的pid 有时并不能杀掉,则需要加一个-9选项了 kill  -9  进程pid

    STAT :表示进程的状态,进程状态分为以下几种(不要求记住,但要了解)

    D 不能中断的进程(通常为IO)

    R 正在运行中的进程

    S 已经中断的进程,通常情况下,系统中大部分进程都是这个状态

    T 已经停止或者暂停的进程,如果我们正在运行一个命令,比如说 sleep 10 如果我们按一下ctrl -z 让他暂停,那么我们用ps查看就会显示T这个状态

    W 这个好像是说,从内核2.6xx 以后,表示为没有足够的内存页分配

    X 已经死掉的进程(这个好像从来不会出现)

    Z 僵尸进程,杀不掉,打不死的垃圾进程,占系统一小点资源,不过没有关系。如果太多,就有问题了。一般不会出现。

    < 高优先级进程

    N 低优先级进程

    L 在内存中被锁了内存分页

    s 主进程

    l 多线程进程

    + 代表在前台运行的进程

     7.netstat查看网络状态

[root@dong-Linux ~]# netstat -lnp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name
tcp        0      0 0.0.0.0:3306                0.0.0.0:*                   LISTEN      1986/mysqld
tcp        0      0 0.0.0.0:139                 0.0.0.0:*                   LISTEN      2654/smbd
tcp        0      0 0.0.0.0:80                  0.0.0.0:*                   LISTEN      1755/nginx
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      1801/sshd
tcp        0      0 127.0.0.1:631               0.0.0.0:*                   LISTEN      1658/cupsd
tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      2060/master
tcp        0      0 0.0.0.0:445                 0.0.0.0:*                   LISTEN      2654/smbd
tcp        0      0 :::139                      :::*                        LISTEN      2654/smbd
tcp        0      0 :::22                       :::*                        LISTEN      1801/sshd
tcp        0      0 ::1:631                     :::*                        LISTEN      1658/cupsd
tcp        0      0 ::1:25                      :::*                        LISTEN      2060/master
tcp        0      0 :::445                      :::*                        LISTEN      2654/smbd
udp        0      0 0.0.0.0:68                  0.0.0.0:*                               1655/dhclient
udp        0      0 0.0.0.0:631                 0.0.0.0:*                               1658/cupsd
Active UNIX domain sockets (only servers)
Proto RefCnt Flags       Type       State         I-Node PID/Program name    Path
unix  2      [ ACC ]     STREAM     LISTENING     9860   1624/dbus-daemon    /var/run/dbus/system_bus_socket
unix  2      [ ACC ]     STREAM     LISTENING     14333  2420/pulseaudio     /tmp/.esd-500/socket
unix  2      [ ACC ]     STREAM     LISTENING     14336  2420/pulseaudio     /home/dong/.pulse/511df0c962ff75dee38a787d00000024-runtime/native

    netstat命令用来打印网络连接状况、系统所开放端口、路由表等信息,经常配合grep命令查看相应的端口是否开启。

tcpdump 抓包工具

    有时想查看哪个网卡上都有哪些数据包,尤其是判断服务器上的流量攻击,就需要用转包工具了

[root@dong-Linux ~]# tcpdump  -nn -i eth0
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
16:46:01.118993 IP 192.168.18.129.22 > 192.168.18.1.57395: Flags [P.], seq 149208610:149208818, ack 621382697, win 675, length 208
16:46:01.119450 IP 192.168.18.1.57395 > 192.168.18.129.22: Flags [.], ack 208, win 16313, length 0
16:46:01.120777 IP 192.168.18.129.22 > 192.168.18.1.57395: Flags [P.], seq 208:496, ack 1, win 675, length 288
16:46:01.122078 IP 192.168.18.129.22 > 192.168.18.1.57395: Flags [P.], seq 496:672, ack 1, win 675, length 176
16:46:01.122369 IP 192.168.18.1.57395 > 192.168.18.129.22: Flags [.], ack 672, win 16197, length 0
16:46:01.123069 IP 192.168.18.129.22 > 192.168.18.1.57395: Flags [P.], seq 672:944, ack 1, win 675, length 272
16:46:01.124343 IP 192.168.18.129.22 > 192.168.18.1.57395: Flags [P.], seq 944:1120, ack 1, win 675, length 176
16:46:01.124607 IP 192.168.18.1.57395 > 192.168.18.129.22: Flags [.], ack 1120, win 16085, length 0
16:46:01.125790 IP 192.168.18.129.22 > 192.168.18.1.57395: Flags [P.], seq 1120:1392, ack 1, win 675, length 272
16:46:01.126866 IP 192.168.18.129.22 > 192.168.18.1.57395: Flags [P.], seq 1392:1568, ack 1, win 675, length 176
16:46:01.127321 IP 192.168.18.1.57395 > 192.168.18.129.22: Flags [.], ack 1568, win 16425, length 0
16:46:01.128115 IP 192.168.18.129.22 > 192.168.18.1.57395: Flags [P.], seq 1568:1840, ack 1, win 675, length 272
16:46:01.129352 IP 192.168.18.129.22 > 192.168.18.1.57395: Flags [P.], seq 1840:2016, ack 1, win 675, length 176
16:46:01.129607 IP 192.168.18.1.57395 > 192.168.18.129.22: Flags [.], ack 2016, win 16313, length 0
16:46:01.129814 IP 192.168.18.129.22 > 192.168.18.1.57395: Flags [P.], seq 2016:2288, ack 1, win 675, length 272
16:46:01.132027 IP 192.168.18.129.22 > 192.168.18.1.57395: Flags [P.], seq 2288:2464, ack 1, win 675, length 176
16:46:01.132305 IP 192.168.18.1.57395 > 192.168.18.129.22: Flags [.], ack 2464, win 16201, length 0
16:46:01.133073 IP 192.168.18.129.22 > 192.168.18.1.57395: Flags [P.], seq 2464:2736, ack 1, win 675, length 272
16:46:01.134331 IP 192.168.18.129.22 > 192.168.18.1.57395: Flags [P.], seq 2736:2912, ack 1, win 675, length 176
16:46:01.134616 IP 192.168.18.1.57395 > 192.168.18.129.22: Flags [.], ack 2912, win 16089, length 0
16:46:01.135647 IP 192.168.18.129.22 > 192.168.18.1.57395: Flags [P.], seq 2912:3184, ack 1, win 675, length 272
16:46:01.135870 IP 192.168.18.129.22 > 192.168.18.1.57395: Flags [P.], seq 3184:3360, ack 1, win 675, length 176
16:46:01.136240 IP 192.168.18.1.57395 > 192.168.18.129.22: Flags [.], ack 3360, win 16425, length 0
····················

    如果没有tcpdump 这个命令,需要用 yum install -y tcpdump 命令去安装一下。上例中第三列和第四列显示的信息为哪一个IP+port在连接哪一个IP+port,后面就是包的一些信息。

    其实在windows下,也有抓包的工具,叫wireshark,用这个工具分析抓取的包非常方便,不过也是需要时间去好好研究的


你可能感兴趣的:(linux日常管理)