知識點
- w ,vmstat ,top ,sar ,nload ,iostst ,free ,ps ,netstat ,tcpdump ,ifdown ,ifup
w命令 能夠查看系統負載linux
[root@localhost ~]# w 20:58:32 up 13 min, 1 user, load average: 0.00, 0.02, 0.05 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT root pts/0 192.168.139.1 20:47 0.00s 0.04s 0.00s w
主要關注load average這個點,其中後面的數字分別表明1分鐘、5分鐘、15分鐘的負載。 那負載的值爲多少才合適呢!經過cat /proc/cpuinfo查看ios
[root@localhost ~]# cat /proc/cpuinfo processor : 0 vendor_id : GenuineIntel cpu family : 6 model : 58 model name : Intel(R) Core(TM) i5-3470 CPU @ 3.20GHz
若是你的processor爲0,表明只有一顆cpu,因此最佳的負載值就是1。 若是是7則最佳的負載值就是8。windows
vmstat命令緩存
用w查看發現load高於processor,就可使用vmstat找到瓶頸在哪裏。服務器
[root@localhost ~]# vmstat 1 5 //1表明1秒 5表明5次 procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 2 0 0 768784 2076 133844 0 0 19 3 55 56 0 0 99 0 0 0 0 0 768768 2076 133844 0 0 0 0 43 39 0 1 99 0 0 0 0 0 768768 2076 133844 0 0 0 0 50 42 0 0 100 0 0 0 0 0 768768 2076 133844 0 0 0 0 40 34 0 0 100 0 0 0 0 0 768768 2076 133844 0 0 0 0 48 39 0 0 100 0 0
其中r列表示有多少個進程處於run的狀態。b列表示進程被卡死等待的狀態。swpd表示使用虛擬內存的數值,內存不夠時會變大,因此0爲最佳。free是空閒的內存,buff是緩衝(cpu經過內存寫數據到磁盤上),cache是緩存(cpu經過內存從磁盤讀取數據)。。。。網絡
top命令多線程
top - display Linux processesdom
使用vmstat查看以後使用top命令能夠顯示linux的進程。查看具體是哪一個進程有問題!top是動態顯示系統進程的。像windows裏的任務管理器ssh
[root@localhost ~]# top top - 22:37:59 up 1:52, 1 user, load average: 0.00, 0.01, 0.05 Tasks: 83 total, 1 running, 82 sleeping, 0 stopped, 0 zombie %Cpu(s): 0.3 us, 0.3 sy, 0.0 ni, 99.3 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st KiB Mem : 999696 total, 762352 free, 95532 used, 141812 buff/cache KiB Swap: 2097148 total, 2097148 free, 0 used. 741948 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 520 root 20 0 305296 6248 4872 S 0.7 0.6 0:22.25 vmtoolsd 948 root 20 0 0 0 0 S 0.3 0.0 0:21.03 kworker/0:0 1 root 20 0 128164 6808 4044 S 0.0 0.7 0:03.01 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.17 ksoftirqd/0 5 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0H .....
- 按M 按內存排行
- 按P 按cpu排行
- 按1 互相切換cpu
- -bn1 靜態顯示
- -c 顯示具體的命令
經過觀察發現top命令基本包含了w、vmstat的基本內容。==懶人神器==tcp
然而使用top -c能夠查看具體哪一個命令。
[root@localhost ~]# top -c top - 22:39:49 up 1:54, 1 user, load average: 0.00, 0.01, 0.05 Tasks: 83 total, 1 running, 82 sleeping, 0 stopped, 0 zombie %Cpu(s): 0.3 us, 0.3 sy, 0.0 ni, 99.3 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st KiB Mem : 999696 total, 762336 free, 95532 used, 141828 buff/cache KiB Swap: 2097148 total, 2097148 free, 0 used. 741932 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 520 root 20 0 305296 6248 4872 S 0.3 0.6 0:22.61 /usr/bin/vmtoolsd 948 root 20 0 0 0 0 S 0.3 0.0 0:21.38 [kworker/0:0] 1 root 20 0 128164 6808 4044 S 0.0 0.7 0:03.01 /usr/lib/systemd/systemd --switched-root --s+ 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.17 [ksoftirqd/0] 5 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 [kworker/0:0H] 6 root 20 0 0 0 0 S 0.0 0.0 0:00.05 [kworker/u256:0] 7 root rt 0 0 0 0 S 0.0 0.0 0:00.00 [migration/0]
sar命令
查看網卡流量,先安裝yum install -y sysstat
[root@localhost ~]# sar -n DEV 1 3 Linux 3.10.0-693.el7.x86_64 (localhost.localdomain) 2018年11月29日 _x86_64_ (1 CPU) 23時00分16秒 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s 23時00分17秒 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 23時00分17秒 ens33 1.02 1.02 0.06 0.20 0.00 0.00 0.00 23時00分17秒 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s 23時00分18秒 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 23時00分18秒 ens33 1.00 1.00 0.06 0.40 0.00 0.00 0.00 23時00分18秒 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s 23時00分19秒 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 23時00分19秒 ens33 1.02 1.02 0.06 0.41 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 平均時間: ens33 1.01 1.01 0.06 0.34 0.00 0.00 0.00
我的感受sar最大的用處在於他會監控網卡流量,而後將數據保存到/var/log/sa/saXX。 天天保存一份,最多保存一個月。若是哪天懷疑服務器流量不正常的時候,能夠調出歷史數據進行比對。使用命令 sar -f /var/log/sa/saXX 若是是sarXX則能夠直接cat。
nload命令
nload也是查看網卡流量的命令,我的感受用nload看網卡流量比sar要舒服。首先也許要安裝 yum install -y nload
使用左右按鈕能夠切換網卡!
iostat命令
cpu和內存查看完了,如今來看看磁盤。iostat查看磁盤使用命令。
關鍵的注意點在%util,該參數暗示了設備的繁忙程度 。通常地,若是該參數是100%表示設備已經接近滿負荷運行了。因此越小越好!
iotop也能夠查看磁盤的使用狀況,並且他能夠具體到進程!
free命令
查看內存使用狀況
[root@localhost ~]# free total used free shared buff/cache available Mem: 999696 97424 587652 6808 314620 716584 Swap: 2097148 0 2097148
哇靠 top裏基本上都有的。
ps命令
ps - report a snapshot of the current processes 靜態顯示任務管理器。
[root@localhost ~]# ps -aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.6 128164 6816 ? Ss 20:45 0:03 /usr/lib/systemd/systemd --switched-root --system --deserialize 21 root 2 0.0 0.0 0 0 ? S 20:45 0:00 [kthreadd] root 3 0.0 0.0 0 0 ? S 20:45 0:00 [ksoftirqd/0] root 5 0.0 0.0 0 0 ? S< 20:45 0:00 [kworker/0:0H] root 6 0.0 0.0 0 0 ? S 20:45 0:00 [kworker/u256:0] root 7 0.0 0.0 0 0 ? S 20:45 0:00 [migration/0] root 8 0.0 0.0 0 0 ? S 20:45 0:00 [rcu_bh] root 9 0.0 0.0 0 0 ? R 20:45 0:01 [rcu_sched] root 10 0.0 0.0 0 0 ? S 20:45 0:00 [watchdog/0] root 12 0.0 0.0 0 0 ? S 20:45 0:00 [kdevtmpfs] root 13 0.0 0.0 0 0 ? S< 20:45 0:00 [netns] root 14 0.0 0.0 0 0 ? S 20:45 0:00 [khungtaskd] root 15 0.0 0.0 0 0 ? S< 20:45 0:00 [writeback] root 16 0.0 0.0 0 0 ? S< 20:45 0:00 [kintegrityd] root 17 0.0 0.0 0 0 ? S< 20:45 0:00 [bioset] root 18 0.0 0.0 0 0 ? S< 20:45 0:00 [kblockd] root 19 0.0 0.0 0 0 ? S< 20:45 0:00 [md] root 25 0.0 0.0 0 0 ? S 20:45 0:00 [kswapd0] ....
而後看到哪一個進程不爽,可使用kill xx(PID號)將其結束掉。也能夠配合管道符 ‘\’使用。好比 ==ps aux | grep ngix== 查看ngix是否有啓動!最後是STAT列的含義了
- D 表示不能中斷的進程
- R 表示run狀態的進程
- S sleep的進程
- T 暫停
- Z 殭屍
- < 高優先級
- N 低優先級
- L 內存中被鎖了內存分頁
- s 主進程
- L 多線程進程
-
- 前臺進程
netstat命令
查看網絡狀態。我的感受用到最多的就是能夠查看哪些端口有開放。
- -lnp 查看監聽端口
- -an 查看網絡鏈接情況
- -lntp 只查看tcp的鏈接
[root@localhost ~]# netstat -ltnp 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 807/sshd tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 890/master tcp6 0 0 :::22 :::* LISTEN 807/sshd tcp6 0 0 ::1:25 :::* LISTEN 890/master
統計各個狀態的鏈接數: ==netstat -an | awk '/^tcp/ {++sta[$NF]} END {for(key in sta) print key,"\t",sta[key]}'==
tcpdump命令
抓包命令,一個很實用的命令。先安裝 yum install -y tcpdump。舉例2個用法,本身觸類旁通。
++tcpdump -nn -i ens33++
++tcpdump -nn not port 22 and host 192.168.0.100++
++tcpdump -nn -c 100 -w 1.cap++ //這個要配合 tcpdump -r 1.cap使用!
還有一個在windows裏被普遍使用的抓包工具wireshark。yum install -y wireshark。
==tshark -n -t a -R http.request -T fields -e "frame.time" -e "ip.src" -e "http.host" -e "http.request.method" -e "http.request.uri"==
ifdown ens33 && ifup ens33 //重啓網卡,down掉立刻再up。
mii-tool ens33 || ethtool ens33 //查看網口是否有網線鏈接
hostnamectl set-hostname xxoo //設置hostname,配置文件 /etc/hostname
DNS的配置文件 /etc/resolv.conf
本地host文件 /etc/hosts
w、vmstat、free 記top就好
sar 主要作監控
nload 很棒的查看網絡流量工具
iostst 上面幾個要麼看cpu要麼看內存MEM,這個就看磁盤
ps 有不少STAT
netstat 主要查看端口
tcpdump 抓包工具
ifdown ens33 && ifup ens33 重啓網卡神命令
mii-tool、ethtool 查看是否有連網線detect link
hostnamectl set-hostname xxoo 設置hostname