監控系統命令 1. w命令 2. vmstat命令 3. top命令 4. sar命令 5. nload命令 6. 監控io性能 7. free命令 8. ps命令 9. netstat命令 11. Linux網絡相關命令 12. 擴展
1. w命令
w含義:用于顯示已經登陸系統的用戶列表,并顯示用戶正在執行的指令。執行這個命令可得知目前登入系統的用戶有那些人,以及他們正在執行的程序。單獨執行w命令會顯示所有的用戶,您也可指定用戶名稱,僅顯示某位用戶的相關信息。
學習如何監控系統狀態,是因為作為一個運維工程師需要了解 Linux 系統運行時的各種信息和狀態,當出現問題的時候就能夠查找出問題的所在,這樣才能對癥下藥的去解決。
相信所有的 linux 管理員最常用的命令就是這個 w 了,該命令顯示的信息還是蠻豐富的。我們最應該關注的應該是第一行中的 load average :后面的三個數值,第一個數值表示 1 分鐘內系統的平均負載值;第二個數值表示 5 分鐘內系統的平均負載值;第三個數值表示 15 分鐘系統的平均負載值。
[ root@sc
~ ] # w
12 : 45 : 05 up
1 : 50 , 2 users
, load average
: 0.00 , 0.01 , 0.05
USER TTY FROM LOGIN @
IDLE JCPU PCPU WHAT
root tty1
10 : 56 1 : 48 m
0.05 s
0.05 s
- bash
root pts
/ 0 192.168 .94 .1 10 : 57 1.00 s
0.10 s
0.00 s w第一行顯示系統的匯總信息,字段分別表示系統當前時間、系統運行時間、登陸系統用戶總數及系統平均負載信息。對于如上圖顯示的字段意義為:
12 : 45 : 05 #表示執行 w 的時間是在下午
12 點
45 分
05 秒。
up
1 : 50 #表示系統運行
1 小時
50 分。
2 users #表示當前系統登陸用戶總數為
2 。
load average
: 0.00 , 0.01 , 0.05 #與后面的數字一起表示系統在過去
1 ,
5 ,
10 分鐘內的負載程度,數值越小,系統負載越輕。從第二行開始構成一個登錄用戶信息列表,共有
8 個欄目,分別顯示各個用戶正在做的事情及該用戶所占用的系統資源:
USER #顯示登陸用戶帳號名。用戶重復登陸,該帳號也會重復出現。
TTY #用戶登陸所用的終端。
FROM #顯示用戶在何處登陸系統。
LOGIN @ #是
LOGIN AT 的意思,表示登陸進入系統的時間。
IDLE #用戶空閑時間,從用戶上一次任務結束后,開始記時。
JCPU #以終端代號來區分,表示在這段時間內,所有與該終端相關的進程任務所耗費的
CPU 時間。
PCPU #指
WHAT 域的任務執行后耗費的
CPU 時間。
WHAT #表示當前執行的任務。
查看某用戶是否登陸系統用戶很多的時候,可以在 w 后面加上某個用戶名,則會查看該用戶執行任務的情況。
使用 cat /proc/cpuinfo 此命令可查看系統的 CPU 數量,顯示的是邏輯 CPU 數量,不是物理 CPU 數量
如果CPU 數量為 0 那么數值不超過 1 是最理想,也就是說負載數值不超過 CPU 的數量是最好的,如果負載數值大于 CPU 數量的話,那么就會有進程需要進行等待。
[ root@master proc
] # lscpu
Architecture
: x86_64
CPU op
- mode ( s
) : 32 - bit
, 64 - bit
Byte Order
: Little Endian
CPU ( s
) : 1
On
- line
CPU ( s
) list
: 0
Thread ( s
) per core
: 1
Core ( s
) per socket
: 1
Socket ( s
) : 1
NUMA node ( s
) : 1
Vendor
ID : GenuineIntel
CPU family
: 6
Model
: 61
Model name
: Intel ( R ) Core ( TM ) i5
- 5257 U
CPU @
2.70 GHz
Stepping
: 4
CPU MHz
: 2699.797
BogoMIPS
: 5399.59
Hypervisor vendor
: VMware
Virtualization type
: full
L1d cache
: 32 K
L1i cache
: 32 K
L2 cache
: 256 K
L3 cache
: 3072 K
NUMA node0
CPU ( s
) : 0
Flags
: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon nopl xtopology tsc_reliable nonstop_tsc eagerfpu pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm
3 dnowprefetch ssbd ibrs ibpb stibp fsgsbase tsc_adjust bmi1 avx2 smep bmi2 invpcid rdseed adx smap xsaveopt arat spec_ctrl intel_stibp flush_l1d arch_capabilities
uptime 命令也能夠查看系統負載情況,不過查看不了用戶的登錄信息,所以大部分情況下都是用 w 命令
2. vmstat命令
vmstat介紹:可對操作系統的虛擬內存、進程、CPU活動進行監控。是對系統的整體情況進行統計,不足之處是無法對某個進程進行深入分析(綜合工具,斷定瓶頸點)。
當系統負載值偏高的時候,CPU 不夠用了,想要知道是哪些進程在使用著 CPU,可以使用 vmstat 命令查看
一般使用 vmstat 命令的時候會加個數字 1 ,表示每一秒顯示一次,動態的顯示信息也可以
也可以再加一個數字定義顯示幾次就結束,例如我只需要顯示 5 次就結束
[ root@sc
~ ] # vmstat
1 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 698288 2076 160956 0 0 13 2 32 60 0 0 100 0 0 0 0 0 698288 2076 160956 0 0 0 0 55 74 0 0 100 0 0 0 0 0 698288 2076 160956 0 0 0 0 37 53 0 1 99 0 0 0 0 0 698288 2076 160956 0 0 0 0 30 34 0 0 100 0 0 0 0 0 698288 2076 160956 0 0 0 0 31 47 0 0 100 0 0 Procs(進程):
r:(run,運行) 表示運行或等待
CPU 時間片的進程數。
b:(block,塊)表示等待資源的進程數,這個資源指的是
I / O 、內存等。Memory(內存):
swpd:當內存不夠時,系統可以拿出內存總的一部分數據臨時放到 swap 交換分區里去。如果 swpd 值一直交換時,說明交換分區和內存在頻繁的交換數據,代表內存不夠了。
free:表示當前空閑的內存數量,單位為
KB 。
buff:表示(即將寫入磁盤的)緩沖大小,單位為
KB 。
cache:表示(從磁盤中讀取的)緩存大小,單位為
KB 。swap(虛擬磁盤交換分區):
si:有多少 k 的塊數據,從 swap 進入到內存中。
so:有多少 k 的塊數據,從內存中進到 swap。
注意:如果 swpd 在頻繁變換時,這兩個值肯定也會變動。
IO (磁盤):
bi:有多少 k 的數據,從磁盤進入到內存中。
bo:有多少 k 的數據,從內存吸入到磁盤。
注意:隨機磁盤讀寫的時候,這
2 個值越大(如超出
1024 k
) ,能看到
CPU 在
IO 等待的值也會越大。system(系統):
in :表示在某一時間間隔內觀測到的每秒設備的中斷次數。
cs:表示每秒產生的上下文切換數。
注意:這兩個數值很大時,說明磁盤再頻繁的讀寫。跟
CPU 和內存比,磁盤是很慢的,如果很頻繁的讀些數據會導致 b 列的增加。因為有很多進程在等待磁盤。
CPU (以百分比表示):
us:用戶級別的,數字不會超過
100 ,百分比表示用戶的資源占用
CPU 的百分比,
如果數字大于
50 ,說明系統肯定資源不夠。
sy:系統本身的一些進程、服務、占用資源的百分比。
id:表示
CPU 處于空閑狀態的時間百分比,us
+ sy
+ id
+ wa
= st
= 100 。
wa:wait 有多少進程在等待
CPU 的百分比。
st:表示被偷走的
CPU 所占百分比(一般都為
0 ,不用關注)。
3. top命令
top含義:是Linux下常用的性能分析工具,能夠實時顯示系統中各個進程的資源占用狀況,類似于Windows的任務管理器。
top 命令可以具體查看進程使用資源情況,top 命令是三秒鐘更新一次信息,是動態顯示的
[ root@sc
~ ] # top
top
- 14 : 56 : 20 up
1 : 28 , 3 users
, load average
: 0.00 , 0.01 , 0.05
Tasks
: 99 total
, 1 running
, 98 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
KiB Mem
: 1005628 total
, 706416 free
, 138456 used
, 160756 buff
/ cache
KiB Swap
: 2097148 total
, 2097148 free
, 0 used
. 695476 avail Mem
PID USER PR NI VIRT RES SHR S % CPU % MEM TIME + COMMAND 第一行:top
- 14 : 56 : 20 up
1 : 28 , 3 users
, load average
: 0.00 , 0.01 , 0.05 14 : 56 : 20 :當前時間。
up
1 : 28 :系統已運行的時間。
3 users:當前登錄用戶的數量。
load average
: 0.00 , 0.01 , 0.05 :相應最近
1 、
5 和
15 分鐘內的平均負載。第二行:Tasks
: 99 total
, 1 running
, 98 sleeping
, 0 stopped
, 0 zombie系統現在total(共計)
99 個進程。
其中處于running(運行)中的有
1 個。
98 個在休眠(sleep)。
stoped狀態的有
0 個。
zombie狀態(僵尸)的有
0 個。第三行:
% 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 stus #
user,運行 ( 未調整優先級的
) 用戶進程的
CPU 時間
sy #system,運行內核進程的
CPU 時間
ni #niced,運行已調整優先級的用戶進程的
CPU 時間
wa #
IO wait,用于等待
IO 完成的
CPU 時間
hi #處理硬件中斷的
CPU 時間
si #處理軟件中斷的
CPU 時間
st #這個虛擬機被hypervisor偷去的
CPU 時間
(譯注:如果當前處于一個 hypervisor 下的 vm ,實際上 hypervisor 也是要消耗一部分
CPU 處理時間的)。第四行:KiB Mem
: 1005628 total
, 706416 free
, 138456 used
, 160756 buff
/ cacheMen物理內存:
1005628 k total — 物理內存總量(
1005 M)
706416 k free — 空閑內存總量(
706 M)
138456 k used — 使用中的內存總量(
138 M)
160756 k buff
/ cache — 緩存的內存量 (
106 M)第五行:KiB Swap
: 2097148 total
, 2097148 free
, 0 used
. 695476 avail MemSwap交換分區:
2097148 k total — 交換區總量(
2097 M)
2097148 k free — 空閑交換區總量(
2097 M)
0 k used — 使用的交換區總量(
0 )
695476 k avail Mem — 可用內存(
69 M)第六行:
PID USER PR NI VIRT RES SHR S % CPU % MEM TIME + COMMAND PID :進程
ID ,進程的唯一標識符
USER :進程所有者的實際用戶名。
PR :進程的調度優先級,這個字段的一些值是
'rt' ,這意味這這些進程運行在實時態。
NI :進程的 nice 值(優先級)。越小的值意味著越高的優先級。負值表示高優先級,正值表示低優先級
VIRT :進程使用的虛擬內存。進程使用的虛擬內存總量,單位kb。
VIRT = SWAP + RES RES :駐留內存大小,駐留內存是任務使用的非交換物理內存大小,進程使用的、未被換出的物理內存大小,單位kb。
RES = CODE + DATA SHR :
SHR 是進程使用的共享內存。共享內存大小,單位 kb
S :這個是進程的狀態。它有以下不同的值
: D - 不可中斷的睡眠態。
R – 運行態
S – 睡眠態
T – 被跟蹤或已停止
Z – 僵尸態
% CPU :自從上一次更新時到現在任務所使用的
CPU 時間百分比。
% MEM :進程使用的可用物理內存百分比。
TIME + :任務啟動后到現在所使用的全部
CPU 時間,精確到百分之一秒。
COMMAND :運行進程所使用的命令。進程名稱(命令名
/ 命令行)還有許多在默認情況下不會顯示的輸出,它們可以顯示進程的頁錯誤、有效組和組
ID 和其他更多的信息。
top 里按 Shift+m 使用內存使用率來排序,同樣的是由高到低
top 里按數字 1,會列出所有的邏輯 CPU 使用情況
再按 1 則切換回平均值的查看方式:
top -c 可以看到具體的進程、命令、全局的路徑
top -bn1 可以靜態地顯示,會一次性地把所有的進程信息都列出來,一般適合在寫腳本的時候使用
4. sar命令
sar介紹:監控系統狀態(外號:瑞士軍刀)。
sar 是一個非常全面的分析系統狀態的命令,sar 被稱做 Linux 系統里的“瑞士軍刀”,也即是說這個命令的功能非常的復雜和豐富,如果你的系統里沒有這個命令,則需要安裝 sysstat 包
[ root@sc
~ ] # yum install
- y sysstat
下載完使用這個命令可能會出現無法打開文件的情況,這是因為 sar 命令不加任何選項的話,會默認調用它在系統中保留的歷史文件。
/var/log/sa/ 路徑是 sar 命令生成歷史文件的目錄,sar 有一個特性會每 10 分鐘把系統的狀態保存到文件里,而這個文件就會放在這個路徑下。
現在再直接執行 sar 命令就不會報錯了:
因為在 /var/log/sa/ 路徑下已經生成了歷史文件,sa12 文件和 sar12 文件有一些區別,sa12 文件是二進制文件不能直接 cat,sar12 文件則是可以直接 cat 查看的:
[ root@sc
~ ] # ls
/ var / log
/ sa
/ sar12
sar -n DEV 查看網卡流量,用法和 vmstat 類似,后面跟1 2 表示每隔 1 秒顯示一次,顯示 2 次
[ root@sc
~ ] # sar
- n
DEV 1 2
Linux
3.10 .0 - 957. el7
. x86_64 ( sc
) 2019 年
04 月
12 日
_x86_64_ ( 1 CPU ) 17 時
23 分
06 秒
IFACE rxpck
/ s txpck
/ s rxkB
/ s txkB
/ s rxcmp
/ s txcmp
/ s rxmcst
/ s
17 時
23 分
07 秒 lo
0.00 0.00 0.00 0.00 0.00 0.00 0.00
17 時
23 分
07 秒 ens33
2.02 2.02 0.12 0.24 0.00 0.00 0.00 17 時
23 分
07 秒
IFACE rxpck
/ s txpck
/ s rxkB
/ s txkB
/ s rxcmp
/ s txcmp
/ s rxmcst
/ s
17 時
23 分
08 秒 lo
0.00 0.00 0.00 0.00 0.00 0.00 0.00
17 時
23 分
08 秒 ens33
2.00 2.00 0.16 0.46 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
2.01 2.01 0.14 0.35 0.00 0.00 0.00 第一列 #時間。
第二列 #
IFCE 網卡名字。
第三列 #rxpck
/ s 接受到的數據包,單位個數,幾千正常,上萬就不正常了。
第四列 #txpck
/ s 發送出去的數據包。
第五列 #rxkB
/ s 接收的數據量,單位
KB 。
第六列 #txkB
/ s 發送的數據量。
第七列 #rxcmp
/ s 不需要關注。
第八列 #txcmp
/ s 不需要關注。
第九列 #rxmcst
/ s 不需要關注。
sar -n DEV 命令加 -f 選項就可以選擇查看 /var/log/sa/ 路徑下的歷史文件,這個歷史文件的命令是有規律的,文件名稱的結尾是當天的日期,所以可以利用歷史文件來查看歷史網卡流量數據,有一點要注意的是這個目錄下的文件最多保留一個月就會被自動清除
如果需要查看 11 號的歷史系統負載情況:
[root@sc ~]# sar -q -f /var/log/sa/sa11
5. nload命令
nload含義:查看網卡流量。
nload 命令能夠更加直觀的查看網卡流量,nload 命令默認是沒有安裝的,需要安裝 nload 包,但是安裝 nload 包之前要安裝 epel-release 包,因為我之前已經安裝過 epel-release 包了,所以我就直接安裝 nload 包
[ root@sc
~ ] # yum install epel
- release #安裝擴展包
[ root@sc
~ ] # yum install
- y nload
第一行顯示網卡名字、
IP 、網卡其中之一,可以按右方向鍵切換網卡,按q退出。Incoming #進來帶寬。
Outgoing #出去帶寬。
curr #當前值。
Avg #平均值。
Min #最小值。
Max #最大值。
Ttl #總和。
6. 監控io性能
iostat命令
iostat含義:被用于監視系統輸入輸出設備和CPU的使用情況。它的特點是匯報磁盤活動統計情況,同時也會匯報出CPU使用情況。同vmstat一樣,iostat也有一個弱點,就是它不能對某個進程進行深入分析,僅對系統的整體情況進行分析。
磁盤的 io 是一個非常重要的指標,所以要更詳細的查看磁盤狀態,需要用到 iostat 命令,如果之前已經安裝了 sysstat 包的話,在安裝 sysstat 包時 iostat 命令就已經被安裝了。
在安裝 sysstat 包時,默認會安裝iostat 包,和 sar 在同一個包里,iostat 直接回車可以查看到當前磁盤的信息
[ root@sc
~ ] # iostat
Linux
3.10 .0 - 957. el7
. x86_64 ( sc
) 2019 年
04 月
12 日
_x86_64_ ( 1 CPU ) avg
- cpu
: % user
% nice
% system
% iowait
% steal
% idle
0.09 0.00 0.21 0.06 0.00 99.64 Device
: tps kB_read
/ s kB_wrtn
/ s kB_read kB_wrtn
scd0
0.00 0.03 0.00 1028 0
sda
0.35 7.53 3.06 243701 99062
sdb
0.01 0.29 0.00 9304 0 [ root@sc
~ ] # Device #那列則是磁盤名稱。
kB_read
/ s #表示每秒的讀取速度。
kB_wrtn
/ s #表示每秒的寫入速度。
iostat 重要的是 -x 選項,重要指標:%util 表示磁盤的使用百分比,如果這個數字很大,比如長期超過90%,說明磁盤非常忙,讀寫肯定也會很大,如果讀寫不大,但該列值很大,就說明硬盤有問題
iotop命令
iotop含義:是一個用來監視磁盤I/O使用狀況的top類工具。
iotop 命令可以看到哪個進程在頻繁讀寫磁盤,這個命令默認是沒有的,需要安裝
[ root@sc
~ ] # yum install
- y iotop
iotop 和 top 命令類似,也是動態顯示的界面,只不過 iotop 是用來查看進程對磁盤的使用率的,而 top 則是用來查看進程對 CPU 的使用率的
7. free命令
free介紹:顯示系統內存的使用情況,包括物理內存、交換內存(swap)和內核緩沖區內存。
free 是直接查看內存使用情況的命令,CentOS7 和 CentOS6 的顯示信息不一樣,CentOS7 要更直觀一些
第一行是說明。 (紅色)
第二行是內存的使用情況。 (綠色)
第三行是Swap交換分區的使用情況。 (藍色)
total #內存總大小,單位
KB 。
used #真正使用的實際內存大小。
free #剩余物理內存大小(沒有被分配,純剩余)。
shared #共享內存大小,不用關注它。
buff
/ cache #分配給 buffer(緩沖)和 cache(緩存)的內存總共有多大。
available #系統可使用內存有多大,它包含了free 和 buffer
/ cache 剩余部分。
從顯示的信息可以看到一個現象,使用大小和剩余大小的值加起來不等于內存的總大小,這是因為 Linux 操作系統會把內存分配一些出來分給 buff/cache。buff 是緩沖,CPU 計算完的數據要想存到磁盤里,會先進入到內存中,最后通過內存緩沖再存儲到磁盤里。cache 是緩存,磁盤的數據進入到 CPU 之前會先經過內存最后才到 CPU,通過內存到 CPU 這一段就是緩存。
示意圖:緩存和緩沖的區別就是數據的流向不一樣,前者是從磁盤通過內存到CPU,后者是從CPU通過內存到磁盤。
因為內存擔任一個這么重要的角色,所以Linux操作系統才預留出一些內存空間分給 buff/cache。
所以計算 total 的值的公式是:total=used+free+buff/cache
available列的值是free列加上buff/cache列的大小,表示剩余部分的內存,所以 available 才是內存真正的剩余大小。
8. ps命令
ps含義:查看系統進程。
ps aux 是靜態的,一次性把系統當前所有進程列出來
[ root@sc
~ ] # ps aux
USER PID % CPU % MEM VSZ RSS TTY STAT START TIME COMMAND
root
1 0.0 0.6 128024 6660 ? Ss
4 月
12 0 : 03 / usr
/ lib
/ systemd
/ systemd
-- switched
- root
-- system
-- deserialize
22
root
2 0.0 0.0 0 0 ? S 4 月
12 0 : 00 [ kthreadd
]
root
3 0.0 0.0 0 0 ? S 4 月
12 0 : 01 [ ksoftirqd
/ 0 ]
root
5 0.0 0.0 0 0 ? S < 4 月
12 0 : 00 [ kworker
/ 0 : 0 H
]
root
7 0.0 0.0 0 0 ? S 4 月
12 0 : 00 [ migration
/ 0 ]
root
8 0.0 0.0 0 0 ? S 4 月
12 0 : 00 [ rcu_bh
]
root
9 0.0 0.0 0 0 ? R 4 月
12 0 : 01 [ rcu_sched
]
root
10 0.0 0.0 0 0 ? S < 4 月
12 0 : 00 [ lru
- add
- drain
] 第一列: #(
USER )是進程的用戶名稱
第二列: #(
PID )是進程的
PID ,在殺進程或者系統被黑了,發現有個惡意進程,這時可以通過這個進程的
PID 找到這個進程的所在目錄,例如我要找一個
PID 為
912 的進程所在目錄:
第三列: #(
% CPU )是
CPU 占用率,
第四列: #(
% MEM )是內存占用率,
第五列: #(
VSZ )是虛擬內存,
第六列: #(
RSS )是物理內存,
第七列: #(
TTY )表示進程在哪一個
TTY 上,
第八列: #(
STAT )是需要關注的一列,表示的是進程的狀態,
第九列: #(
START )是進程的啟動時間,
第十列: #(
TIME )表示進程運行了多長時間,
第十一列: #(
COMMAND )是命令名稱,和top的最后一列是一樣的。
STAT 進程狀態說明:
D 表示不能中斷的進程,如果此狀態的進程很多那么系統負載就會比較高。
R 表示run(運行中)狀態的進程,在某一段時間內在使用著
CPU 的進程。
S 表示sleep狀態的進程,使用完
CPU 會暫停、休息一下,過一會就會激活,激活后就會繼續使用
CPU 。
T 表示暫停的進程,使用Ctrl
+ z暫停的進程。
Z 表示僵尸進程,系統運行過程中殘留的一些無用的子進程。
< 表示高優先級進程,就是能夠優先使用
CPU 的進程。
N 表示低優先級進程,與高優先級進程相反。
L 表示內存中被鎖了內存分頁。s 表示主進程。l 表示多線程進程,線程和進程不一樣,一個進程里可以有多個線程,并且線程之間的內存是可以共享的,而進程之間則是互相獨立的內存不可以共享。
+ 表示前臺進程,會顯示到終端上的進程,例如 grep、cat、less 等。
ps aux |grep 進程名稱,檢查某一個進程有沒有運行
ps -elf 類似于 ps aux,把系統進程列出來
kill 是殺死一個進程命令,配合 ps aux |grep 進程名稱查看是否執行
查看進程所在目錄 ls -l /proc/ 進程的 PID
9. netstat命令
netstat含義:查看網絡狀態。
netstat 命令是用來查看網絡狀態的,Linux 系統我們通常把它作為服務器的操作系統,服務器里有很多服務與客戶端進行交互通信,也就意味著也要有監聽端口、通信端口。那么 netstat 命令查看到的就是 tcp/ip 通信的一個狀態。
沒有端口監聽就無法和其他機器通信,要想讓其他人能夠訪問你服務器、網站,就需要有一個監聽端口。
netstat -an 可以查看系統所有的網絡連接狀況
netstat
- an
| awk
'/^tcp/ {++sta[$NF]} END {for(key in sta) print key,"\t",sta[key]}'
`` `ss- ss -an 也能夠顯示 tcp/ip 的連接狀態和 netstat 是類似的命令- 如果想查看指定的連接狀態使用 grep 過濾即可> <font color="red">注意:ss有一個缺點是不能顯示進程的名字, netsta 則可以顯示進程的名字。</font># 10. tcpdump命令- tcpdump 這個命令是用來抓包的,默認情況下這個命令是沒有的,需要安裝一下` `` javascript
[ root@sc
~ ] # yum install
- y tcpdump
使用這個命令的時候最好是加上你網卡的名稱,不然可能使用不了
在命令的選選項中,加上 -nn 選項是表示顯示 IP 地址和端口號,如果不加則會顯示主機名和進程名,第一列顯示的是當前時間,后面會有兩個 IP 地址,第一個 IP 地址是源 IP 第二個則是目標 IP, IP 地址后面跟的是數據包的相關信息,所以 tcpdump 這個命令主要就是看網絡數據的流向。
[ root@sc
~ ] # tcpdump
- nn
- i ens33 #網卡的名稱可以使用 ifconfig 來查看
使用 port 抓取指定端口的包,例如我要抓 22 端口的包
[ root@sc
~ ] # tcpdump
- nn
- i ens33 port
22
還可以使用 not port 過濾掉某個端口的包,例如我過濾掉 22 端口的
[ root@sc
~ ] # tcpdump
- nn
- i ens33 not port
22
tcpdump
: verbose output suppressed
, use
- v or
- vv
for full protocol decode
listening on ens33
, link
- type
EN10MB ( Ethernet
) , capture size
262144 bytes
01 : 51 : 14.821867 ARP , Request who
- has
192.168 .94 .128 ( 00 : 0 c
: 29 : 88 : e3
: ff
) tell
192.168 .94 .1 , length
46
01 : 51 : 14.821903 ARP , Reply
192.168 .94 .128 is
- at
00 : 0 c
: 29 : 88 : e3
: ff
, length
28
01 : 51 : 26.826767 ARP , Request who
- has
192.168 .94 .129 ( 00 : 0 c
: 29 : f3
: bc
: 79 ) tell
192.168 .94 .1 , length
46
01 : 51 : 26.828268 ARP , Reply
192.168 .94 .129 is
- at
00 : 0 c
: 29 : f3
: bc
: 79 , length
46
01 : 52 : 24.679295 ARP , Request who
- has
192.168 .94 .128 tell
192.168 .94 .1 , length
46
01 : 52 : 24.679335 ARP , Reply
192.168 .94 .128 is
- at
00 : 0 c
: 29 : 88 : e3
: ff
, length
28
01 : 52 : 27.319695 ARP , Request who
- has
192.168 .94 .129 ( 00 : 0 c
: 29 : f3
: bc
: 79 ) tell
192.168 .94 .1 , length
46
01 : 52 : 27.320462 ARP , Reply
192.168 .94 .129 is
- at
00 : 0 c
: 29 : f3
: bc
: 79 , length
46
[ root@sc
~ ] # tcpdump
- nn
- i ens33 not port
22 and host
192.168 .94 .129
tcpdump
: verbose output suppressed
, use
- v or
- vv
for full protocol decode
listening on ens33
, link
- type
EN10MB ( Ethernet
) , capture size
262144 bytes
01 : 56 : 27.321877 ARP , Request who
- has
192.168 .94 .129 ( 00 : 0 c
: 29 : f3
: bc
: 79 ) tell
192.168 .94 .1 , length
46
01 : 56 : 27.322976 ARP , Reply
192.168 .94 .129 is
- at
00 : 0 c
: 29 : f3
: bc
: 79 , length
46
加上 -c 選項可以指定抓取數據包的數量,例如指定只抓取 20 個數據包
[ root@sc
~ ] # tcpdump
- nn
- i ens33
- c
20
tcpdump
: verbose output suppressed
, use
- v or
- vv
for full protocol decode
listening on ens33
, link
- type
EN10MB ( Ethernet
) , capture size
262144 bytes
01 : 57 : 42.476368 IP 192.168 .94 .128 .22 > 192.168 .94 .1 .65183 : Flags
[ P . ] , seq
1451598397 : 1451598609 , ack
669952694 , win
294 , length
212
01 : 57 : 42.477253 IP 192.168 .94 .128 .22 > 192.168 .94 .1 .65183 : Flags
[ P . ] , seq
212 : 408 , ack
1 , win
294 , length
196
01 : 57 : 42.477835 IP 192.168 .94 .128 .22 > 192.168 .94 .1 .65183 : Flags
[ P . ] , seq
408 : 572 , ack
1 , win
294 , length
164
01 : 57 : 42.478271 IP 192.168 .94 .128 .22 > 192.168 .94 .1 .65183 : Flags
[ P . ] , seq
572 : 736 , ack
1 , win
294 , length
164
01 : 57 : 42.478629 IP 192.168 .94 .128 .22 > 192.168 .94 .1 .65183 : Flags
[ P . ] , seq
736 : 900 , ack
1 , win
294 , length
164
01 : 57 : 42.478997 IP 192.168 .94 .128 .22 > 192.168 .94 .1 .65183 : Flags
[ P . ] , seq
900 : 1064 , ack
1 , win
294 , length
164
01 : 57 : 42.480093 IP 192.168 .94 .1 .65183 > 192.168 .94 .128 .22 : Flags
[ . ] , ack
1064 , win
16425 , length
0
01 : 57 : 42.480409 IP 192.168 .94 .128 .22 > 192.168 .94 .1 .65183 : Flags
[ P . ] , seq
1064 : 1340 , ack
1 , win
294 , length
276
01 : 57 : 42.480793 IP 192.168 .94 .128 .22 > 192.168 .94 .1 .65183 : Flags
[ P . ] , seq
1340 : 1504 , ack
1 , win
294 , length
164
01 : 57 : 42.481203 IP 192.168 .94 .128 .22 > 192.168 .94 .1 .65183 : Flags
[ P . ] , seq
1504 : 1668 , ack
1 , win
294 , length
164
01 : 57 : 42.481556 IP 192.168 .94 .128 .22 > 192.168 .94 .1 .65183 : Flags
[ P . ] , seq
1668 : 1832 , ack
1 , win
294 , length
164
01 : 57 : 42.482006 IP 192.168 .94 .128 .22 > 192.168 .94 .1 .65183 : Flags
[ P . ] , seq
1832 : 1996 , ack
1 , win
294 , length
164
01 : 57 : 42.482373 IP 192.168 .94 .128 .22 > 192.168 .94 .1 .65183 : Flags
[ P . ] , seq
1996 : 2160 , ack
1 , win
294 , length
164
01 : 57 : 42.482769 IP 192.168 .94 .128 .22 > 192.168 .94 .1 .65183 : Flags
[ P . ] , seq
2160 : 2324 , ack
1 , win
294 , length
164
01 : 57 : 42.483271 IP 192.168 .94 .128 .22 > 192.168 .94 .1 .65183 : Flags
[ P . ] , seq
2324 : 2488 , ack
1 , win
294 , length
164
01 : 57 : 42.483671 IP 192.168 .94 .128 .22 > 192.168 .94 .1 .65183 : Flags
[ P . ] , seq
2488 : 2652 , ack
1 , win
294 , length
164
01 : 57 : 42.484081 IP 192.168 .94 .128 .22 > 192.168 .94 .1 .65183 : Flags
[ P . ] , seq
2652 : 2816 , ack
1 , win
294 , length
164
01 : 57 : 42.484444 IP 192.168 .94 .128 .22 > 192.168 .94 .1 .65183 : Flags
[ P . ] , seq
2816 : 2980 , ack
1 , win
294 , length
164
01 : 57 : 42.484803 IP 192.168 .94 .128 .22 > 192.168 .94 .1 .65183 : Flags
[ P . ] , seq
2980 : 3144 , ack
1 , win
294 , length
164
01 : 57 : 42.485214 IP 192.168 .94 .128 .22 > 192.168 .94 .1 .65183 : Flags
[ P . ] , seq
3144 : 3308 , ack
1 , win
294 , length
164
20 packets captured
20 packets received by filter
0 packets dropped by kernel
[ root@sc
~ ] #
加上 -w 還可以指定抓取出來的數據包存放到哪里去,例如我要放到 tmp 目錄下的 1.cap 文件中
[ root@sc
~ ] # tcpdump
- nn
- i ens33
- c
20 - w
/ tmp
/ 1. cap
tcpdump
: listening on ens33
, link
- type
EN10MB ( Ethernet
) , capture size
262144 bytes
20 packets captured
20 packets received by filter
0 packets dropped by kernel
[ root@sc
~ ] #
可以使用 file 命令查看這個文件的相關信息,不能使用 cat 直接查看,因為里面都是數據
[ root@sc
~ ] # file
/ tmp
/ 1. cap
/ tmp
/ 1. cap
: tcpdump capture
file ( little
- endian
) - version
2.4 ( Ethernet
, capture length
262144 )
[ root@sc
~ ] #
不過使用 tcpdump -r 可以看到這個文件里的數據流信息
[ root@sc
~ ] # tcpdump
- r
/ tmp
/ 1. cap
reading
from file
/ tmp
/ 1. cap
, link
- type
EN10MB ( Ethernet
)
02 : 01 : 37.118015 IP bogon
. ssh
> bogon
. 65183 : Flags
[ P . ] , seq
1451606265 : 1451606413 , ack
669956430 , win
294 , length
148
02 : 01 : 37.118590 IP bogon
. 65183 > bogon
. ssh
: Flags
[ . ] , ack
148 , win
16254 , length
0
02 : 01 : 40.827557 IP6 fe80
: : 51 f6
: 8258 : 2957 : 5e96 . dhcpv6
- client
> ff02
: : 1 : 2. dhcpv6
- server
: dhcp6 solicit
02 : 01 : 48.828244 IP6 fe80
: : 51 f6
: 8258 : 2957 : 5e96 . dhcpv6
- client
> ff02
: : 1 : 2. dhcpv6
- server
: dhcp6 solicit
02 : 02 : 04.831689 IP6 fe80
: : 51 f6
: 8258 : 2957 : 5e96 . dhcpv6
- client
> ff02
: : 1 : 2. dhcpv6
- server
: dhcp6 solicit
02 : 02 : 22.469200 IP bogon
. 65182 > bogon
. ssh
: Flags
[ P . ] , seq
947772629 : 947772681 , ack
3245656069 , win
16322 , length
52
02 : 02 : 22.470343 IP bogon
. ssh
> bogon
. 65182 : Flags
[ . ] , ack
52 , win
251 , length
0
02 : 02 : 24.809284 ARP , Request who
- has bogon tell bogon
, length
46
02 : 02 : 24.809320 ARP , Reply bogon is
- at
00 : 0 c
: 29 : 88 : e3
: ff ( oui Unknown
) , length
28
02 : 02 : 24.810123 IP bogon
. 65183 > bogon
. ssh
: Flags
[ P . ] , seq
1 : 53 , ack
148 , win
16254 , length
52
02 : 02 : 24.858609 IP bogon
. ssh
> bogon
. 65183 : Flags
[ . ] , ack
53 , win
294 , length
0
02 : 02 : 27.318646 ARP , Request who
- has
bogon ( 00 : 0 c
: 29 : f3
: bc
: 79 ( oui Unknown
) ) tell bogon
, length
46
02 : 02 : 27.319130 ARP , Reply bogon is
- at
00 : 0 c
: 29 : f3
: bc
: 79 ( oui Unknown
) , length
46
02 : 02 : 29.868627 ARP , Request who
- has bogon tell bogon
, length
28
02 : 02 : 29.869735 ARP , Reply bogon is
- at
00 : 50 : 56 : c0
: 00 : 08 ( oui Unknown
) , length
46
02 : 02 : 30.040511 IP bogon
. bootpc
> bogon
. bootps
: BOOTP / DHCP , Request
from 00 : 0 c
: 29 : 88 : e3
: ff ( oui Unknown
) , length
300
02 : 02 : 30.046275 IP bogon
. bootps
> bogon
. bootpc
: BOOTP / DHCP , Reply
, length
300
02 : 02 : 35.049728 ARP , Request who
- has bogon tell bogon
, length
28
02 : 02 : 35.050078 ARP , Reply bogon is
- at
00 : 50 : 56 : e9
: 43 : b8 ( oui Unknown
) , length
46
02 : 02 : 36.832315 IP6 fe80
: : 51 f6
: 8258 : 2957 : 5e96 . dhcpv6
- client
> ff02
: : 1 : 2. dhcpv6
- server
: dhcp6 solicit
[ root@sc
~ ] #
tshark命令
tshark 命令默認情況下這個命令是沒有的,需要安裝一個 wireshark 包, tshark 和 tcpdump 是類似的工具,也是用來抓包的
使用這個命令可以抓取監聽的 80 端口的數據包,類似于 web 的訪問日志
[ root@sc
~ ] # yum install
- y wireshark #安裝包
[ root@sc
~ ] # 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"
11. Linux網絡相關命令
ifconfig 命令在 CentOS6 是自帶有的,但是在 CentOS7 默認是沒有的,需要安裝 net-tools 這個包。
[ root@sc
~ ] # yum install
- y net
- tools
ifconfig 命令比起 ipadd 命令顯示的信息更加直觀一些
[ root@sc network
- scripts
] # ifconfig
ens33
: flags
= 4163 < UP , BROADCAST , RUNNING , MULTICAST > mtu
1500 inet
192.168 .94 .128 netmask
255.255 .255 .0 broadcast
192.168 .94 .255 inet6 fe80
: : 724 d
: 7 b85
: a037
: 156 d prefixlen
64 scopeid
0x20 < link
> ether
00 : 0 c
: 29 : 88 : e3
: ff txqueuelen
1000 ( Ethernet
) RX packets
7157 bytes
600196 ( 586.1 KiB
) RX errors
0 dropped
0 overruns
0 frame
0 TX packets
10404 bytes
11558090 ( 11.0 MiB
) TX errors
0 dropped
0 overruns
0 carrier
0 collisions
0 lo
: flags
= 73 < UP , LOOPBACK , RUNNING > mtu
65536 inet
127.0 .0 .1 netmask
255.0 .0 .0 inet6
: : 1 prefixlen
128 scopeid
0x10 < host
> loop txqueuelen
1000 ( Local Loopback
) RX packets
4 bytes
416 ( 416.0 B ) RX errors
0 dropped
0 overruns
0 frame
0 TX packets
4 bytes
416 ( 416.0 B ) TX errors
0 dropped
0 overruns
0 carrier
0 collisions
0
ifconfig 命令加上 -a 選項可以在網卡斷掉或者沒有分配 ip 的時候能夠顯示出來
[ root@sc network
- scripts
] # ifconfig
ens33
: flags
= 4163 < UP , BROADCAST , RUNNING , MULTICAST > mtu
1500 inet
192.168 .94 .128 netmask
255.255 .255 .0 broadcast
192.168 .94 .255 inet6 fe80
: : 724 d
: 7 b85
: a037
: 156 d prefixlen
64 scopeid
0x20 < link
> ether
00 : 0 c
: 29 : 88 : e3
: ff txqueuelen
1000 ( Ethernet
) RX packets
7157 bytes
600196 ( 586.1 KiB
) RX errors
0 dropped
0 overruns
0 frame
0 TX packets
10404 bytes
11558090 ( 11.0 MiB
) TX errors
0 dropped
0 overruns
0 carrier
0 collisions
0 lo
: flags
= 73 < UP , LOOPBACK , RUNNING > mtu
65536 inet
127.0 .0 .1 netmask
255.0 .0 .0 inet6
: : 1 prefixlen
128 scopeid
0x10 < host
> loop txqueuelen
1000 ( Local Loopback
) RX packets
4 bytes
416 ( 416.0 B ) RX errors
0 dropped
0 overruns
0 frame
0 TX packets
4 bytes
416 ( 416.0 B ) TX errors
0 dropped
0 overruns
0 carrier
0 collisions
0
ifdown 命令會將網卡斷掉,將網卡斷掉之后使用 ifconfig 命令就查看不到 ip 了,遠程連接的終端也會斷開。
[ root@sc network
- scripts
] # ifdown ens33
ifup 則可以將斷掉的網卡 up 回來,當針對一個網卡去進行更改的時候,需要重新啟動網卡,但是不想全部網卡都重新啟動,就需要使用到這些命令
[ root@sc network
- scripts
] # ifup ens33
如果正在使用遠程終端的情況下,不要單獨使用 ifdown 命令,因為網卡被斷掉了,遠程就無法連接了,要同時使用 ifdown 和 ifup 才行
[ root@sc network
- scripts
] # ifdown ens33
&& ifup ens33
1.使用命令:cd /etc/sysconfig/network-scripts/ 進入到 /network-scripts 目錄下,然后拷貝網卡配置文件:
2.編輯拷貝的網卡配置文件:
[ root@sc network
- scripts
] # cp ifcfg
- ens33 ifcfg
- ens33\
: 0
3.重啟網卡,并使用 ifconfig 命令查看信息:
[ root@sc network
- scripts
] # ifdown ens33
&& ifup ens33
成功斷開設備
'ens33' 。
連接已成功激活(
D - Bus 活動路徑:
/ org
/ freedesktop
/ NetworkManager
/ ActiveConnection
/ 9 )
[ root@sc network
- scripts
] # ifconfig
ens33
: flags
= 4163 < UP , BROADCAST , RUNNING , MULTICAST > mtu
1500 inet
192.168 .94 .128 netmask
255.255 .255 .0 broadcast
192.168 .94 .255 inet6 fe80
: : 724 d
: 7 b85
: a037
: 156 d prefixlen
64 scopeid
0x20 < link
> ether
00 : 0 c
: 29 : 88 : e3
: ff txqueuelen
1000 ( Ethernet
) RX packets
7739 bytes
654852 ( 639.5 KiB
) RX errors
0 dropped
0 overruns
0 frame
0 TX packets
10870 bytes
11622244 ( 11.0 MiB
) TX errors
0 dropped
0 overruns
0 carrier
0 collisions
0 ens33
: 0 : flags
= 4163 < UP , BROADCAST , RUNNING , MULTICAST > mtu
1500 inet
192.168 .94 .150 netmask
255.255 .255 .0 broadcast
192.168 .94 .255 ether
00 : 0 c
: 29 : 88 : e3
: ff txqueuelen
1000 ( Ethernet
) lo
: flags
= 73 < UP , LOOPBACK , RUNNING > mtu
65536 inet
127.0 .0 .1 netmask
255.0 .0 .0 inet6
: : 1 prefixlen
128 scopeid
0x10 < host
> loop txqueuelen
1000 ( Local Loopback
) RX packets
4 bytes
416 ( 416.0 B ) RX errors
0 dropped
0 overruns
0 frame
0 TX packets
4 bytes
416 ( 416.0 B ) TX errors
0 dropped
0 overruns
0 carrier
0 collisions
0 [ root@sc network
- scripts
] #
我們可以打開windows里 cmd 來 ping 一下這個虛擬網卡的地址,看看是否能 ping 通
是 link ok 則表示是連接狀態
[ root@sc
~ ] # mii
- tool ens33
ens33
: negotiated
1000 baseT
- FD flow
- control
, link ok
[ root@sc
~ ] #
如果 mii-tool 命令不支持的話,還可以使用 ethtool 命令查看
hostnamectl 是 CentOS7 的命令,CentOS6 不支持,這個命令可以更改主機名,主機名的配置文件在 /etc/hostname 中
[ root@sc
~ ] # hostnamectl
set - hostname aminglinux #退出重新登錄就改變過來了
[ root@sc
~ ] # hostname
aminglinux
DNS 配置文件在 /etc/resolv.conf 中,nameserver 行的 ip 地址來自于網卡配置文件,可以在 /resolv.conf 文件里臨時更改 DNS
[ root@sc
~ ] # cat
/ etc
/ resolv
. conf
# Generated by NetworkManager
nameserver
119.29 .29 .29
[ root@sc network
- scripts
] # vi
/ etc
/ sysconfig
/ network
- scripts
/ ifcfg
- ens33
可以編輯 /etc/resolv.conf 這個文件來添加新的 DNS ,但是一旦重啟網卡,配置文件里的 DNS 會覆蓋臨時添加的 DNS
[ root@sc
~ ] # vim
/ etc
/ resolv
. conf #也可以在這個配置文件里添加臨時
DNS 使用
/etc/hosts 文件是 Linux、Windows 都有的,用于指定域名訪問的 IP 地址,例如我修改 hosts 文件指定一個域名的 ip,ping 這個域名時就會訪問 192.168.85.150 IP地址,這個只在本機生效
[ root@sc
~ ] # cat
/ etc
/ hosts
127.0 .0 .1 localhost localhost
. localdomain localhost4 localhost4
. localdomain4
: : 1 localhost localhost
. localdomain localhost6 localhost6
. localdomain6
[ root@sc
~ ] # ping www
. baidu
. com
PING www
. a
. shifen
. com ( 61.135 .169 .121 ) 56 ( 84 ) bytes
of data
.
64 bytes
from 61.135 .169 .121 ( 61.135 .169 .121 ) : icmp_seq
= 1 ttl
= 128 time
= 5.42 ms
64 bytes
from 61.135 .169 .121 ( 61.135 .169 .121 ) : icmp_seq
= 2 ttl
= 128 time
= 5.49 ms
64 bytes
from 61.135 .169 .121 ( 61.135 .169 .121 ) : icmp_seq
= 3 ttl
= 128 time
= 5.09 ms
64 bytes
from 61.135 .169 .121 ( 61.135 .169 .121 ) : icmp_seq
= 4 ttl
= 128 time
= 6.14 ms
64 bytes
from 61.135 .169 .121 ( 61.135 .169 .121 ) : icmp_seq
= 5 ttl
= 128 time
= 5.29 ms
[ root@sc
~ ] # vim
/ etc
/ hosts
[ root@sc
~ ] # ping www
. sc
. com
PING www
. sc
. com ( 192.168 .85 .150 ) 56 ( 84 ) bytes
of data
.
64 bytes
from www
. sc
. com ( 192.168 .85 .150 ) : icmp_seq
= 1 ttl
= 64 time
= 0.359 ms
64 bytes
from www
. sc
. com ( 192.168 .85 .150 ) : icmp_seq
= 2 ttl
= 64 time
= 0.087 ms
64 bytes
from www
. sc
. com ( 192.168 .85 .150 ) : icmp_seq
= 3 ttl
= 64 time
= 0.086 ms
64 bytes
from www
. sc
. com ( 192.168 .85 .150 ) : icmp_seq
= 4 ttl
= 64 time
= 0.087 ms
64 bytes
from www
. sc
. com ( 192.168 .85 .150 ) : icmp_seq
= 5 ttl
= 64 time
= 0.094 ms
一個 IP 可以指定多個域名,如果有兩個同樣的域名指定了不同的 IP,以后面的那個 IP 為準
[ root@sc
~ ] # ping www
. szt
. com
PING www
. sc
. com ( 127.0 .0 .1 ) 56 ( 84 ) bytes
of data
.
64 bytes
from localhost ( 127.0 .0 .1 ) : icmp_seq
= 1 ttl
= 64 time
= 0.360 ms
64 bytes
from localhost ( 127.0 .0 .1 ) : icmp_seq
= 2 ttl
= 64 time
= 0.281 ms
64 bytes
from localhost ( 127.0 .0 .1 ) : icmp_seq
= 3 ttl
= 64 time
= 0.084 ms
64 bytes
from localhost ( 127.0 .0 .1 ) : icmp_seq
= 4 ttl
= 64 time
= 0.084 ms
64 bytes
from localhost ( 127.0 .0 .1 ) : icmp_seq
= 5 ttl
= 64 time
= 0.153 ms
64 bytes
from localhost ( 127.0 .0 .1 ) : icmp_seq
= 6 ttl
= 64 time
= 0.088 ms
64 bytes
from localhost ( 127.0 .0 .1 ) : icmp_seq
= 7 ttl
= 64 time
= 0.090 ms
64 bytes
from localhost ( 127.0 .0 .1 ) : icmp_seq
= 8 ttl
= 64 time
= 0.083 ms
12. 擴展
tcp三次握手四次揮手(重點) http://www.doc88.com/p-9913773324388.html tshark幾個用法:http://www.aminglinux.com/bbs/thread-995-1-1.html
總結
以上是生活随笔 為你收集整理的【图文教程】监控系统命令 的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔 網站內容還不錯,歡迎將生活随笔 推薦給好友。