iostat 在安裝sysstat的時候會自動安裝上這個命令。它和sar是同一個包php
[root@yong-02 ~]# yum install -y sysstat
[root@yong-02 ~]# iostat Linux 3.10.0-693.el7.x86_64 (yong-02) 2018年05月07日 _x86_64_ (1 CPU) avg-cpu: %user %nice %system %iowait %steal %idle 6.22 0.00 6.70 2.76 0.00 84.33 Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn sda 15.21 360.51 95.85 187493 49847 scd0 0.03 1.98 0.00 1028 0 dm-0 13.01 340.49 91.91 177078 47798
iostat和sar命令差很少,後面接數字
iostat 2,2秒顯示一次;sda bk_read/s kb_wrtn/s 讀寫速度前端
[root@yong-02 ~]# iostat 2 Linux 3.10.0-693.el7.x86_64 (yong-02) 2018年05月07日 _x86_64_ (1 CPU) avg-cpu: %user %nice %system %iowait %steal %idle 5.84 0.00 6.30 2.59 0.00 85.28 Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn sda 14.48 338.31 94.29 187509 52263 scd0 0.03 1.85 0.00 1028 0 dm-0 12.43 319.52 90.57 177094 50198 avg-cpu: %user %nice %system %iowait %steal %idle 0.00 0.00 0.00 0.00 0.00 100.00 Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn sda 0.00 0.00 0.00 0 0 scd0 0.00 0.00 0.00 0 0 dm-0 0.00 0.00 0.00 0 0
用sar -b 也能夠查看讀寫速度mysql
[root@yong-02 ~]# iostat -x 1 Linux 3.10.0-693.el7.x86_64 (yong-02) 2018年05月07日 _x86_64_ (1 CPU) avg-cpu: %user %nice %system %iowait %steal %idle 3.40 0.00 3.69 1.48 0.00 91.43 Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util sda 0.00 0.16 6.96 1.38 193.64 54.31 59.47 0.30 36.44 17.84 130.61 7.56 6.31 scd0 0.00 0.00 0.02 0.00 1.06 0.00 114.22 0.00 5.22 5.22 0.00 4.11 0.01 dm-0 0.00 0.00 6.17 1.00 182.89 52.18 65.57 0.31 43.67 18.61 198.89 8.00 5.73 avg-cpu: %user %nice %system %iowait %steal %idle 0.00 0.00 0.00 0.00 0.00 100.00
若是發現磁盤io很忙,究竟是那個進程在讀寫呢,咱們用iotop來查看。linux
[root@yong-02 ~]# yum install -y iotop
[root@yong-02 ~]# iotop Total DISK READ : 0.00 B/s | Total DISK WRITE : 0.00 B/s Actual DISK READ: 0.00 B/s | Actual DISK WRITE: 0.00 B/s TID PRIO USER DISK READ DISK WRITE SWAPIN IO> COMMAND 1 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % systemd --switched-root --system --deserialize 21 2 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [kthreadd] 3 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [ksoftirqd/0] 5 be/0 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [kworker/0:0H] 7 rt/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [migration/0] 8 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [rcu_bh] 9 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [rcu_sched] 10 rt/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [watchdog/0] 12 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [kdevtmpfs] 13 be/0 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [netns] 14 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [khungtaskd] 15 be/0 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [writeback] 16 be/0 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [kintegrityd] 17 be/0 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [bioset] 18 be/0 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [kblockd] 19 be/0 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [md] 532 be/0 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [xfs-log/sda1] 533 be/0 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [xfs-eofblocks/s] 534 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [xfsaild/sda1] 25 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [kswapd0] 26 be/5 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [ksmd] 27 be/7 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [khugepaged]
free 單位KBios
[root@yong-02 ~]# free total used free shared buff/cache available Mem: 1008152 122500 622348 6884 263304 710160 Swap: 2097148 0 2097148
free -m 單位Msql
[root@yong-02 ~]# free -m total used free shared buff/cache available Mem: 984 119 607 6 257 693 Swap: 2047 0 2047
free -h 單位G後端
[root@yong-02 ~]# free -h total used free shared buff/cache available Mem: 984M 119M 607M 6.7M 257M 693M Swap: 2.0G 0B 2.0G
total 是整個內存大小 total=used+free+buff/cache緩存
used 使用了多少內存服務器
free 剩餘多少內存 正則剩餘的內存是第二行的free網絡
available 正則可用的內存 available=free+剩餘buff/cache
[root@yong-02 ~]# top -bn1 top - 20:40:10 up 1:04, 1 user, load average: 0.03, 0.02, 0.05 Tasks: 91 total, 1 running, 90 sleeping, 0 stopped, 0 zombie %Cpu(s): 5.6 us, 11.1 sy, 0.0 ni, 83.3 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st KiB Mem : 1008152 total, 601044 free, 130932 used, 276176 buff/cache KiB Swap: 2097148 total, 2097148 free, 0 used. 695940 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 1 root 20 0 128164 6820 4060 S 0.0 0.7 0:08.53 systemd 2 root 20 0 0 0 0 S 0.0 0.0 0:00.01 kthreadd 3 root 20 0 0 0 0 S 0.0 0.0 0:00.82 ksoftirqd/0 5 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0H 7 root rt 0 0 0 0 S 0.0 0.0 0:00.00 migration/0 8 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_bh 9 root 20 0 0 0 0 S 0.0 0.0 0:04.10 rcu_sched 10 root rt 0 0 0 0 S 0.0 0.0 0:00.07 watchdog/0 12 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kdevtmpfs 13 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 netns 14 root 20 0 0 0 0 S 0.0 0.0 0:00.00 khungtaskd 15 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 writeback 16 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kintegrityd 17 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 bioset 18 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kblockd 19 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 md 。。。
[root@yong-02 ~]# ps aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.2 0.6 128164 6820 ? Ss 19:35 0:08 /usr/lib/systemd/systemd --switched-root --system --deserialize root 2 0.0 0.0 0 0 ? S 19:35 0:00 [kthreadd] root 3 0.0 0.0 0 0 ? S 19:35 0:00 [ksoftirqd/0] root 5 0.0 0.0 0 0 ? S< 19:35 0:00 [kworker/0:0H] root 7 0.0 0.0 0 0 ? S 19:35 0:00 [migration/0] root 8 0.0 0.0 0 0 ? S 19:35 0:00 [rcu_bh] root 9 0.1 0.0 0 0 ? R 19:35 0:04 [rcu_sched] root 10 0.0 0.0 0 0 ? S 19:35 0:00 [watchdog/0] root 12 0.0 0.0 0 0 ? S 19:35 0:00 [kdevtmpfs] root 13 0.0 0.0 0 0 ? S< 19:35 0:00 [netns] root 14 0.0 0.0 0 0 ? S 19:35 0:00 [khungtaskd] root 15 0.0 0.0 0 0 ? S< 19:35 0:00 [writeback] root 16 0.0 0.0 0 0 ? S< 19:35 0:00 [kintegrityd] root 17 0.0 0.0 0 0 ? S< 19:35 0:00 [bioset] root 18 0.0 0.0 0 0 ? S< 19:35 0:00 [kblockd] root 19 0.0 0.0 0 0 ? S< 19:35 0:00 [md] root 25 0.0 0.0 0 0 ? S 19:35 0:00 [kswapd0] root 26 0.0 0.0 0 0 ? SN 19:35 0:00 [ksmd] 。。。。
[root@yong-02 ~]# 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 - 32041 ep_pol 19:35 ? 00:00:08 /usr/lib/systemd/systemd --switched-root --system --d 1 S root 2 0 0 80 0 - 0 kthrea 19:35 ? 00:00:00 [kthreadd] 1 S root 3 2 0 80 0 - 0 smpboo 19:35 ? 00:00:00 [ksoftirqd/0] 1 S root 5 2 0 60 -20 - 0 worker 19:35 ? 00:00:00 [kworker/0:0H] 1 S root 7 2 0 -40 - - 0 smpboo 19:35 ? 00:00:00 [migration/0] 1 S root 8 2 0 80 0 - 0 rcu_gp 19:35 ? 00:00:00 [rcu_bh] 1 R root 9 2 0 80 0 - 0 - 19:35 ? 00:00:04 [rcu_sched] 5 S root 10 2 0 -40 - - 0 smpboo 19:35 ? 00:00:00 [watchdog/0] 5 S root 12 2 0 80 0 - 0 devtmp 19:35 ? 00:00:00 [kdevtmpfs] 1 S root 13 2 0 60 -20 - 0 rescue 19:35 ? 00:00:00 [netns] 1 S root 14 2 0 80 0 - 0 watchd 19:35 ? 00:00:00 [khungtaskd] 1 S root 15 2 0 60 -20 - 0 rescue 19:35 ? 00:00:00 [writeback] 1 S root 16 2 0 60 -20 - 0 rescue 19:35 ? 00:00:00 [kintegrityd] 1 S root 17 2 0 60 -20 - 0 rescue 19:35 ? 00:00:00 [bioset] 1 S root 18 2 0 60 -20 - 0 rescue 19:35 ? 00:00:00 [kblockd] 1 S root 19 2 0 60 -20 - 0 rescue 19:35 ? 00:00:00 [md]
USER 用戶
PID 進程標誌數,/proc文件裏面有跟pid相同名字的目錄;進程的id,這個id頗有用,在linux中內核管理進程就得靠pid來識別和管理某一個程,好比我想終止某一個進程,則用 ‘kill 進程的pid 有時並不能殺掉,則須要加一個-9選項了 kill -9 進程pid
某個進程有問題,我想知道它是那個目錄下的?(pid都在proc這個目錄下,每個pid就是一個目錄)
ls /proc/進程ID/ %cpu 佔用cpu百分比
%mem 佔用內存百分比
VSZ 虛擬內存大小
RSS 真正內存大小
TTY 從哪裏啓動,pts/0 當前終端
STAT 進程的狀態 S 表示休眠sleep
s 主進程,父進程
< 高優先級,優先獲得cpu的資源
N 低優先級
[root@yong-02 ~]# ps aux |grep -c kworker 10 [root@yong-02 ~]# ps aux |grep kworker root 5 0.0 0.0 0 0 ? S< 19:35 0:00 [kworker/0:0H] root 37 0.0 0.0 0 0 ? S 19:35 0:00 [kworker/u128:1] root 278 0.0 0.0 0 0 ? S 19:35 0:00 [kworker/u128:2] root 292 0.0 0.0 0 0 ? S< 19:35 0:00 [kworker/0:1H] root 545 0.0 0.0 0 0 ? S< 19:36 0:00 [kworker/u129:0] root 549 0.0 0.0 0 0 ? S< 19:36 0:00 [kworker/u129:2] root 1217 0.0 0.0 0 0 ? S 20:35 0:00 [kworker/0:1] root 1298 0.1 0.0 0 0 ? S 20:39 0:00 [kworker/0:3] root 1311 0.1 0.0 0 0 ? S 20:44 0:00 [kworker/0:0] root 1315 0.0 0.0 112676 980 pts/0 R+ 20:45 0:00 grep --color=auto kworker
netstat 命令是用來查看網絡鏈接狀態,系統全部開放端口,路由表等信息
[root@yong-02 ~]# 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:22 0.0.0.0:* LISTEN 990/sshd tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1094/master tcp6 0 0 :::22 :::* LISTEN 990/sshd tcp6 0 0 ::1:25 :::* LISTEN 1094/master udp 0 0 127.0.0.1:323 0.0.0.0:* 657/chronyd udp6 0 0 ::1:323 :::* 657/chronyd raw6 0 0 :::58 :::* 7 684/NetworkManager Active UNIX domain sockets (only servers) Proto RefCnt Flags Type State I-Node PID/Program name Path unix 2 [ ACC ] STREAM LISTENING 12287 1/systemd /run/lvm/lvmetad.socket unix 2 [ ACC ] STREAM LISTENING 7715 1/systemd /run/systemd/journal/stdout unix 2 [ ACC ] STREAM LISTENING 12085 1/systemd /run/systemd/private unix 2 [ ACC ] STREAM LISTENING 19024 1094/master public/pickup unix 2 [ ACC ] STREAM LISTENING 14937 1/systemd /var/run/dbus/system_bus_socket unix 2 [ ACC ] STREAM LISTENING 19028 1094/master public/cleanup unix 2 [ ACC ] STREAM LISTENING 19031 1094/master public/qmgr unix 2 [ ACC ] STREAM LISTENING 19053 1094/master public/flush unix 2 [ ACC ] STREAM LISTENING 19068 1094/master public/showq unix 2 [ ACC ] STREAM LISTENING 19035 1094/master private/tlsmgr …………
查看監聽的接口後,服務端到底跟哪些客戶端進行通訊,以及客戶端跟咱們服務端通訊過程到底十一個什麼樣的狀態?
是鏈接進行數據傳輸仍是二者剛剛創建鏈接,仍是通訊完成後保持一個鏈接而正在等待:要用netstat -an 來查看
netstat -lntp 查看監聽tcp的端口
[root@yong-02 ~]# netstat -lntp 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:22 0.0.0.0:* LISTEN 990/sshd tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1094/master tcp6 0 0 :::22 :::* LISTEN 990/sshd tcp6 0 0 ::1:25 :::* LISTEN 1094/master
[root@yong-02 ~]# netstat -an tcp IP Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN tcp 0 52 192.168.180.135:22 192.168.180.1:56906 ESTABLISHED tcp6 0 0 :::22 :::* LISTEN tcp6 0 0 ::1:25 :::* LISTEN udp 0 0 127.0.0.1:323 0.0.0.0:* udp6 0 0 ::1:323 :::* raw6 0 0 :::58 :::* 7 Active UNIX domain sockets (servers and established) Proto RefCnt Flags Type State I-Node Path unix 2 [ ACC ] STREAM LISTENING 12287 /run/lvm/lvmetad.socket unix 2 [ ] DGRAM 7699 /run/systemd/notify unix 2 [ ] DGRAM 7701 /run/systemd/cgroups-agent unix 2 [ ] DGRAM 15898 /var/run/chrony/chronyd.sock unix 2 [ ACC ] STREAM LISTENING 7715 /run/systemd/journal/stdout unix 5 [ ] DGRAM 7718 /run/systemd/journal/socket unix 14 [ ] DGRAM 7720 /dev/log unix 2 [ ACC ] STREAM LISTENING 12085 /run/systemd/private unix 2 [ ACC ] STREAM LISTENING 19024 public/pickup unix 2 [ ACC ] STREAM LISTENING 14937 /var/run/dbus/system_bus_socket unix 2 [ ACC ] STREAM LISTENING 19028 public/cleanup unix 2 [ ACC ] STREAM LISTENING 19031 public/qmgr unix 2 [ ACC ] STREAM LISTENING 19053 public/flush …………
.sock linux,unix 中特有的文件,能夠通信
Path 狀態
TIME_WAIT 傳輸完成 連接保持着
ESTABLTSHED 已經創建連接正在通信
FIN_WAIT2 狀態詳情,可參考【TCP/IP 三次握手】
netstat -an |grep 112.112.69.86:80 查看80端口 併發狀態
netstat -an |grep 112.112.69.86:80 |grep -ic estab 統計連接(ESTABLTSHED)正在通信的連接總數 (前端 靜態網頁 2到3萬 後端 有php mysql等 2000到3000 左右
[root@yong-02 ~]# netstat -an | awk '/^tcp/ {++sta[$NF]} END {for(key in sta) print key,"\t",sta[key]}' LISTEN 4 ESTABLISHED 1
若是沒有這個工具須要安裝一下;yum install -y tcpdump
[root@yong-02 ~]# yum install tcpdump
[root@yong-02 ~]# tcpdump -nn -i ens33
第一個n就是ip以數字的形式打印出來,若是不加就會顯示主機名
第2n是端口
tcpdump -nn -i ens33 port 22 指定22端口
tcpdump -nn -i ens33 port 22 -c 10 抓10個包
[root@yong-02 ~]# tcpdump -nn -i ens33 port 22 -c 10 tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on ens33, link-type EN10MB (Ethernet), capture size 262144 bytes 21:36:02.536663 IP 192.168.180.135.22 > 192.168.180.1.56906: Flags [P.], seq 1439628768:1439628964, ack 2081619192, win 264, length 196 21:36:02.536990 IP 192.168.180.1.56906 > 192.168.180.135.22: Flags [.], ack 196, win 2050, length 0 21:36:02.537623 IP 192.168.180.135.22 > 192.168.180.1.56906: Flags [P.], seq 196:472, ack 1, win 264, length 276 21:36:02.537939 IP 192.168.180.135.22 > 192.168.180.1.56906: Flags [P.], seq 472:636, ack 1, win 264, length 164 21:36:02.538046 IP 192.168.180.1.56906 > 192.168.180.135.22: Flags [.], ack 636, win 2049, length 0 21:36:02.538223 IP 192.168.180.135.22 > 192.168.180.1.56906: Flags [P.], seq 636:896, ack 1, win 264, length 260 21:36:02.538424 IP 192.168.180.135.22 > 192.168.180.1.56906: Flags [P.], seq 896:1060, ack 1, win 264, length 164 21:36:02.538591 IP 192.168.180.1.56906 > 192.168.180.135.22: Flags [.], ack 1060, win 2047, length 0 21:36:02.538762 IP 192.168.180.135.22 > 192.168.180.1.56906: Flags [P.], seq 1060:1320, ack 1, win 264, length 260 21:36:02.538997 IP 192.168.180.135.22 > 192.168.180.1.56906: Flags [P.], seq 1320:1484, ack 1, win 264, length 164 10 packets captured 11 packets received by filter 0 packets dropped by kernel
[root@yong-02 ~]# tcpdump -nn -i ens33 port 22 -c 10 -w /tmp/a.cap tcpdump: listening on ens33, link-type EN10MB (Ethernet), capture size 262144 bytes 10 packets captured 10 packets received by filter 0 packets dropped by kernel
[root@yong-02 ~]# tcpdump -r /tmp/a.cap reading from file /tmp/a.cap, link-type EN10MB (Ethernet) 21:37:05.911668 IP yong-02.ssh > 192.168.180.1.56906: Flags [P.], seq 1439631392:1439631524, ack 2081620060, win 264, length 132 21:37:05.911849 IP 192.168.180.1.56906 > yong-02.ssh: Flags [.], ack 132, win 2048, length 0 21:37:19.519031 IP 192.168.180.1.56906 > yong-02.ssh: Flags [P.], seq 1:37, ack 132, win 2048, length 36 21:37:19.559309 IP yong-02.ssh > 192.168.180.1.56906: Flags [.], ack 37, win 264, length 0 21:37:21.878678 IP 192.168.180.1.60396 > yong-02.ssh: Flags [S], seq 506333761, win 64240, options [mss 1460,nop,wscale 8,nop,nop,sackOK], length 0 21:37:21.878775 IP yong-02.ssh > 192.168.180.1.60396: Flags [S.], seq 3917968579, ack 506333762, win 29200, options [mss 1460,nop,nop,sackOK,nop,wscale 7], length 0 21:37:21.878958 IP 192.168.180.1.60396 > yong-02.ssh: Flags [.], ack 1, win 2053, length 0 21:37:21.915472 IP yong-02.ssh > 192.168.180.1.60396: Flags [P.], seq 1:22, ack 1, win 229, length 21 21:37:21.956067 IP 192.168.180.1.60396 > yong-02.ssh: Flags [.], ack 22, win 2053, length 0 21:37:22.024462 IP 192.168.180.1.60396 > yong-02.ssh: Flags [P.], seq 1:50, ack 22, win 2053, length 49
若是沒有須要先安裝一下 yum install -y wireshark
[root@yong-02 ~]# yum install -y wireshark