iostat 在安裝sysstat的時候會自動安裝上這個命令。它和sar是同一個包php
[root@linux-128 ~]# yum install -y sysstat
[root@linux-128 ~]# iostat Linux 3.10.0-514.el7.x86_64 (linux-128) 2017年11月28日 _x86_64_ (4 CPU) avg-cpu: %user %nice %system %iowait %steal %idle 1.19 0.00 1.98 0.33 0.00 96.50 Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn sdb 1.65 10.21 0.00 1840 0 sda 31.35 1110.33 414.35 200192 74707 scd0 0.06 0.24 0.00 44 0 dm-0 0.33 2.53 0.00 456 0
iostat和sar命令差很少,後面接數字
iostat 1,1秒顯示一次;sda bk_read/s kb_wrtn/s 讀寫速度前端
[root@linux-128 ~]# iostat 1 Linux 3.10.0-514.el7.x86_64 (linux-128) 2017年11月28日 _x86_64_ (4 CPU) avg-cpu: %user %nice %system %iowait %steal %idle 0.57 0.00 0.98 0.16 0.00 98.29 Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn sdb 0.80 4.94 0.00 1840 0 sda 15.23 537.50 200.94 200192 74839 scd0 0.03 0.12 0.00 44 0 dm-0 0.16 1.22 0.00 456 0 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 sdb 0.00 0.00 0.00 0 0 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 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 sdb 0.00 0.00 0.00 0 0 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 ^C
用sar -b 也能夠查看速度些速度
mysql
[root@linux-128 ~]# iostat -x 1 Linux 3.10.0-514.el7.x86_64 (linux-128) 2017年11月28日 _x86_64_ (4 CPU) avg-cpu: %user %nice %system %iowait %steal %idle 0.25 0.00 0.44 0.08 0.00 99.23 Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util sdb 0.00 0.00 0.33 0.00 2.03 0.00 12.35 0.00 0.06 0.06 0.00 0.05 0.00 sda 0.01 0.29 5.22 1.21 226.67 83.51 96.48 0.05 7.59 2.14 31.06 0.95 0.61 scd0 0.00 0.00 0.01 0.00 0.05 0.00 8.00 0.00 1.27 1.27 0.00 1.27 0.00 dm-0 0.00 0.00 0.07 0.00 0.50 0.00 15.20 0.00 0.02 0.02 0.00 0.02 0.00 avg-cpu: %user %nice %system %iowait %steal %idle 0.00 0.00 0.00 0.00 0.00 100.00 Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util sdb 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 sda 0.00 0.00 0.00 1.98 0.00 1.49 1.50 0.00 0.50 0.00 0.50 0.50 0.10 scd0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 dm-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 avg-cpu: %user %nice %system %iowait %steal %idle 0.00 0.00 0.00 0.00 0.00 100.00 Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util sdb 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 sda 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 scd0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 dm-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
若是發現磁盤io很忙,究竟是那個進程在讀寫呢,咱們用iotop來查看。linux
[root@linux-128 ~]# yum install -y iotop
[root@linux-128 ~]#iotopios
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-r~tem --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] 11 rt/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [watchdog/1] 12 rt/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [migration/1] 13 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [ksoftirqd/1] 16 rt/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [watchdog/2] 17 rt/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [migration/2] 18 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [ksoftirqd/2] 531 be/3 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % auditd -n 20 be/0 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [kworker/2:0H] 21 rt/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [watchdog/3] 22 rt/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [migration/3] 23 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [ksoftirqd/3] 25 be/0 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [kworker/3:0H] 27 be/0 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [khelper] 28 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [kdevtmpfs] 29 be/0 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [netns] 30 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [khungtaskd]
free 單位KBsql
[root@linux-128 ~]# free total used free shared buff/cache available Mem: 1875748 115996 1453008 8748 306744 1583468 Swap: 4194300 0 4194300
free -m 單位M後端
[root@linux-128 ~]# free -m total used free shared buff/cache available Mem: 1831 113 1418 8 299 1546 Swap: 4095 0 4095
free -h 單位G緩存
[root@linux-128 ~]# free -h total used free shared buff/cache available Mem: 1.8G 113M 1.4G 8.5M 299M 1.5G Swap: 4.0G 0B 4.0G
total 是整個內存大小 total=used+free+buff/cachebash
used 使用了多少內存服務器
free 剩餘多少內存 正在剩餘的內存是第二行的free
available 正則可用的內存 available=free+剩餘buff/cache
[root@linux-128 ~]# top -bn1 top - 10:46:12 up 24 min, 1 user, load average: 0.00, 0.02, 0.05 Tasks: 108 total, 2 running, 106 sleeping, 0 stopped, 0 zombie %Cpu(s): 0.2 us, 0.3 sy, 0.0 ni, 99.4 id, 0.1 wa, 0.0 hi, 0.0 si, 0.0 st KiB Mem : 1875748 total, 1452588 free, 116272 used, 306888 buff/cache KiB Swap: 4194300 total, 4194300 free, 0 used. 1583128 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 2264 root 20 0 157584 2040 1492 R 5.9 0.1 0:00.03 top 1 root 20 0 125300 3760 2400 S 0.0 0.2 0:01.82 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.19 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.03 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 R 0.0 0.0 0:01.59 rcu_sched 10 root rt 0 0 0 0 S 0.0 0.0 0:00.03 watchdog/0 11 root rt 0 0 0 0 S 0.0 0.0 0:00.13 watchdog/1 12 root rt 0 0 0 0 S 0.0 0.0 0:00.06 migration/1 13 root 20 0 0 0 0 S 0.0 0.0 0:00.18 ksoftirqd/1 16 root rt 0 0 0 0 S 0.0 0.0 0:00.01 watchdog/2 17 root rt 0 0 0 0 S 0.0 0.0 0:00.02 migration/2 。。。
[root@linux-128 ~]# ps aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.1 0.2 125300 3760 ? Ss 10:21 0:01 /usr/lib/systemd/systemd --switched- root 2 0.0 0.0 0 0 ? S 10:21 0:00 [kthreadd] root 3 0.0 0.0 0 0 ? S 10:21 0:00 [ksoftirqd/0] 。。。。 root 2142 0.0 0.0 0 0 ? S< 10:22 0:00 [kworker/3:1H] root 2143 0.0 0.1 116016 2664 pts/0 Ss 10:22 0:00 -bash root 2217 0.0 0.0 0 0 ? S< 10:24 0:00 [kworker/1:2H] root 2232 0.0 0.0 0 0 ? S< 10:34 0:00 [kworker/3:2H] root 2246 0.0 0.0 0 0 ? S 10:37 0:00 [kworker/0:0] root 2263 0.0 0.0 0 0 ? S 10:42 0:00 [kworker/0:2] root 2285 0.0 0.0 151068 1820 pts/0 R+ 10:47 0:00 ps aux
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@linux-128 ~]# ps aux |grep -c kworker 21 [root@linux-128 ~]# ps aux |grep kworker root 5 0.0 0.0 0 0 ? S< 10:21 0:00 [kworker/0:0H] root 20 0.0 0.0 0 0 ? S< 10:21 0:00 [kworker/2:0H] root 36 0.0 0.0 0 0 ? S 10:22 0:00 [kworker/2:1] root 37 0.0 0.0 0 0 ? S 10:22 0:01 [kworker/3:1] root 55 0.0 0.0 0 0 ? S 10:22 0:00 [kworker/u128:1] root 57 0.1 0.0 0 0 ? S 10:22 0:02 [kworker/0:1] root 61 0.0 0.0 0 0 ? S 10:22 0:00 [kworker/1:1] root 256 0.0 0.0 0 0 ? S 10:22 0:00 [kworker/u128:2] root 290 0.0 0.0 0 0 ? S 10:22 0:00 [kworker/1:2] root 294 0.0 0.0 0 0 ? S 10:22 0:00 [kworker/2:3] root 295 0.0 0.0 0 0 ? S 10:22 0:00 [kworker/3:2] root 452 0.0 0.0 0 0 ? S< 10:22 0:00 [kworker/0:1H] root 736 0.0 0.0 0 0 ? S< 10:22 0:00 [kworker/1:1H] root 2075 0.0 0.0 0 0 ? S< 10:22 0:00 [kworker/2:1H] root 2142 0.0 0.0 0 0 ? S< 10:22 0:00 [kworker/3:1H] root 2217 0.0 0.0 0 0 ? S< 10:24 0:00 [kworker/1:2H] root 2232 0.0 0.0 0 0 ? S< 10:34 0:00 [kworker/3:2H] root 2263 0.0 0.0 0 0 ? S 10:42 0:00 [kworker/0:2] root 2286 0.0 0.0 0 0 ? S< 10:48 0:00 [kworker/3:0H] root 2307 0.0 0.0 0 0 ? S 10:52 0:00 [kworker/0:0]
netstat 命令是用來查看網絡鏈接狀態,系統全部開放端口,路由表等信息
[root@linux-128 ~]# 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 947/sshd tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1216/master tcp6 0 0 :::22 :::* LISTEN 947/sshd tcp6 0 0 ::1:25 :::* LISTEN 1216/master udp 0 0 127.0.0.1:323 0.0.0.0:* 553/chronyd udp6 0 0 ::1:323 :::* 553/chronyd raw6 0 0 :::58 :::* 7 587/NetworkManager Active UNIX domain sockets (only servers) Proto RefCnt Flags Type State I-Node PID/Program name Path unix 2 [ ACC ] STREAM LISTENING 18635 1216/master public/cleanup unix 2 [ ACC ] STREAM LISTENING 18638 1216/master public/qmgr unix 2 [ ACC ] STREAM LISTENING 18661 1216/master public/flush unix 2 [ ACC ] STREAM LISTENING 18676 1216/master public/showq unix 2 [ ACC ] STREAM LISTENING 10897 1/systemd /run/systemd/private unix 2 [ ACC ] SEQPACKET LISTENING 10926 1/systemd /run/udev/control unix 2 [ ACC ] STREAM LISTENING 9134 1/systemd /run/systemd/journal/stdout unix 2 [ ACC ] STREAM LISTENING 18642 1216/master private/tlsmgr unix 2 [ ACC ] STREAM LISTENING 18700 1216/master private/scache unix 2 [ ACC ] STREAM LISTENING 10949 1/systemd /run/lvm/lvmetad.socket unix 2 [ ACC ] STREAM LISTENING 10952 1/systemd /run/lvm/lvmpolld.socket unix 2 [ ACC ] STREAM LISTENING 18631 1216/master public/pickup unix 2 [ ACC ] STREAM LISTENING 18652 1216/master private/defer unix 2 [ ACC ] STREAM LISTENING 13291 1/systemd /var/run/dbus/system_bus_socket unix 2 [ ACC ] STREAM LISTENING 18655 1216/master private/trace unix 2 [ ACC ] STREAM LISTENING 18658 1216/master private/verify unix 2 [ ACC ] STREAM LISTENING 18664 1216/master private/proxymap unix 2 [ ACC ] STREAM LISTENING 18667 1216/master private/proxywrite unix 2 [ ACC ] STREAM LISTENING 18670 1216/master private/smtp unix 2 [ ACC ] STREAM LISTENING 18673 1216/master private/relay unix 2 [ ACC ] STREAM LISTENING 18679 1216/master private/error unix 2 [ ACC ] STREAM LISTENING 18682 1216/master private/retry unix 2 [ ACC ] STREAM LISTENING 18685 1216/master private/discard unix 2 [ ACC ] STREAM LISTENING 18688 1216/master private/local unix 2 [ ACC ] STREAM LISTENING 18691 1216/master private/virtual unix 2 [ ACC ] STREAM LISTENING 18694 1216/master private/lmtp unix 2 [ ACC ] STREAM LISTENING 18645 1216/master private/rewrite unix 2 [ ACC ] STREAM LISTENING 18649 1216/master private/bounce unix 2 [ ACC ] STREAM LISTENING 18697 1216/master private/anvil
查看監聽的接口後,服務端到底跟哪些客戶端進行通訊,以及客戶端跟咱們服務端通訊過程到底十一個什麼樣的狀態?
是鏈接進行數據傳輸仍是二者剛剛創建鏈接,仍是通訊完成後保持一個鏈接而正在等待:要用netstat -an 來查看
netstat -lnp 查看監聽的端口
[root@linux-128 ~]# 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 947/sshd tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1216/master tcp6 0 0 :::22 :::* LISTEN 947/sshd tcp6 0 0 ::1:25 :::* LISTEN 1216/master
[root@linux-128 ~]# 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.88.128:22 192.168.88.1:54651 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 18635 public/cleanup unix 2 [ ACC ] STREAM LISTENING 18638 public/qmgr unix 2 [ ACC ] STREAM LISTENING 18661 public/flush unix 2 [ ACC ] STREAM LISTENING 18676 public/showq unix 2 [ ACC ] STREAM LISTENING 10897 /run/systemd/private unix 2 [ ] DGRAM 9115 /run/systemd/notify unix 2 [ ] DGRAM 9117 /run/systemd/cgroups-agent unix 2 [ ACC ] SEQPACKET LISTENING 10926 /run/udev/control unix 2 [ ACC ] STREAM LISTENING 9134 /run/systemd/journal/stdout unix 5 [ ] DGRAM 9137 /run/systemd/journal/socket unix 13 [ ] DGRAM 9139 /dev/log unix 2 [ ] DGRAM 10934 /run/systemd/shutdownd unix 2 [ ACC ] STREAM LISTENING 18642 private/tlsmgr 。。。。
.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@linux-128 ~]# 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@linux-128 ~]# yum install -y tcpdump
[root@linux-128 ~]# tcpdump -nn -i ens33
第一個n就是ip以數字的形式打印出來,若是不加就會顯示主機名
第2n是端口
tcpdump -nn -i ens33 port 22
tcpdump -nn -i ens33 port 22 -c 6
[root@linux-128 ~]# tcpdump -nn -i ens33 port 22 -c 6 tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on ens33, link-type EN10MB (Ethernet), capture size 262144 bytes 11:16:43.472559 IP 192.168.88.128.22 > 192.168.88.1.54651: Flags [P.], seq 3677319136:3677319348, ack 3881493294, win 468, length 212 11:16:43.473078 IP 192.168.88.1.54651 > 192.168.88.128.22: Flags [.], ack 212, win 16425, length 0 11:16:43.473799 IP 192.168.88.128.22 > 192.168.88.1.54651: Flags [P.], seq 212:504, ack 1, win 468, length 292 11:16:43.474308 IP 192.168.88.128.22 > 192.168.88.1.54651: Flags [P.], seq 504:668, ack 1, win 468, length 164 11:16:43.474661 IP 192.168.88.1.54651 > 192.168.88.128.22: Flags [.], ack 668, win 16311, length 0 11:16:43.474922 IP 192.168.88.128.22 > 192.168.88.1.54651: Flags [P.], seq 668:832, ack 1, win 468, length 164 6 packets captured 6 packets received by filter 0 packets dropped by kernel
[root@linux-128 ~]# tcpdump -nn -i ens33 port 22 -c 6 -w /tmp/1.cap tcpdump: listening on ens33, link-type EN10MB (Ethernet), capture size 262144 bytes ^C3 packets captured 4 packets received by filter 0 packets dropped by kernel
[root@linux-128 ~]# tcpdump -r /tmp/1.cap reading from file /tmp/1.cap, link-type EN10MB (Ethernet) 11:18:02.971264 IP linux-128.ssh > 192.168.88.1.54651: Flags [P.], seq 3677321812:3677321960, ack 3881494042, win 468, length 148 11:18:02.971994 IP 192.168.88.1.54651 > linux-128.ssh: Flags [.], ack 148, win 16139, length 0 11:18:10.905692 IP 192.168.88.1.54651 > linux-128.ssh: Flags [P.], seq 1:53, ack 148, win 16139, length 52
若是沒有須要先安裝一下 yum install -y wireshark
[root@linux-128 ~]# yum install -y wireshark