網(wǎng)站服務器到期查詢純注冊app拉新平臺
ping
:檢測網(wǎng)絡聯(lián)通- 1. ping 的基本功能
- 2. ping 的工作原理
- 3. ping 的常見用法
- 4. ping 的輸出解釋
- 5. ping 的應用場景
- 6. 注意事項
netstat
:查看網(wǎng)絡狀態(tài)- 1. netstat 的基本功能
- 2. 常見用法
- 3. 示例
- 4. 輸出字段解釋
- 5. netstat 的替代工具
- 6. 注意事項
xargs
:將數(shù)據(jù)轉(zhuǎn)換為其他命令的命令行參數(shù)- 1. xargs 的基本功能
- 2. 常見用法
- 3. 示例
pidof
:根據(jù)名字查找并返回進程PID- 1. pidof 的基本功能
- 2. 常見用法
- 3. 示例
- 4. 輸出解釋
- 5. 使用場景
- 6. 注意事項
watch
:動態(tài)刷新的數(shù)字監(jiān)控- 1. watch 的基本功能
- 2. 常見用法
- 3. 示例
- 4. 輸出解釋
- 5. 使用場景
- 6. 注意事項
ping
:檢測網(wǎng)絡聯(lián)通
ping
是一種常用的網(wǎng)絡診斷工具,用于測試主機之間的連通性以及測量網(wǎng)絡延遲。通過發(fā)送 ICMP(Internet Control Message Protocol)回聲請求(Echo Request)消息到目標主機,并等待其返回 ICMP 回聲應答(Echo Reply),可以判斷目標主機是否可達,并評估網(wǎng)絡性能。
以下是關(guān)于 ping
命令的詳細講解:
1. ping 的基本功能
- 測試連通性:驗證本地主機與目標主機之間的網(wǎng)絡連接是否正常。
- 測量延遲:計算從發(fā)送請求到接收響應的時間(通常以毫秒為單位),反映網(wǎng)絡的速度和穩(wěn)定性。
- 檢測丟包率:統(tǒng)計在一定時間內(nèi)發(fā)送的請求中有多少未收到響應,從而判斷網(wǎng)絡質(zhì)量。
2. ping 的工作原理
-
發(fā)送 ICMP 請求:
- 本地主機向目標主機發(fā)送一個 ICMP Echo Request 消息。
- 這個消息包含一個唯一的標識符和序列號,用于區(qū)分不同的請求。
-
接收 ICMP 應答:
- 如果目標主機正常運行且網(wǎng)絡暢通,它會返回一個 ICMP Echo Reply 消息。
- 本地主機會記錄從發(fā)送請求到接收應答的時間差,即往返時間(RTT,Round-Trip Time)。
-
統(tǒng)計結(jié)果:
- 根據(jù)多次請求的結(jié)果,計算平均延遲、最大延遲、最小延遲以及丟包率。
3. ping 的常見用法
(1) 基本語法
ping [選項] 目標地址
- 目標地址:可以是域名(如
www.example.com
)或IP地址(如192.168.1.1
)。
可以輸入自己服務器的域名或虛擬機的IP地址
(2) 常見選項
選項 | 描述 |
---|---|
-c <次數(shù)> | 指定發(fā)送的ICMP請求次數(shù)(例如:ping -c 4 www.example.com )。 |
-i <間隔> | 設置兩次請求之間的時間間隔(秒)。 |
-t <TTL> | 設置數(shù)據(jù)包的生存時間(Time To Live,TTL)。 |
-s <大小> | 設置發(fā)送的數(shù)據(jù)包大小(字節(jié))。 |
-W <超時> | 設置等待響應的超時時間(秒)。 |
(3) 示例
-
發(fā)送4次請求:
ping -c 4 www.example.com
-
指定數(shù)據(jù)包大小為1024字節(jié):
ping -s 1024 www.example.com
-
設置每次請求間隔為2秒:
ping -i 2 www.example.com
4. ping 的輸出解釋
以下是一個典型的 ping
輸出示例:
PING www.example.com (93.184.216.34): 56 data bytes
64 bytes from 93.184.216.34: icmp_seq=0 ttl=56 time=12.3 ms
64 bytes from 93.184.216.34: icmp_seq=1 ttl=56 time=11.8 ms
64 bytes from 93.184.216.34: icmp_seq=2 ttl=56 time=12.1 ms
64 bytes from 93.184.216.34: icmp_seq=3 ttl=56 time=11.9 ms--- www.example.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3003ms
rtt min/avg/max/mdev = 11.800/12.025/12.300/0.200 ms
字段說明
-
PING
行:- 顯示目標地址及其解析后的IP地址。
- 數(shù)據(jù)包大小默認為56字節(jié)(加上ICMP頭部后總共64字節(jié))。
-
每次請求的響應:
64 bytes
:表示接收到的回顯應答數(shù)據(jù)包大小。icmp_seq=<序號>
:表示該數(shù)據(jù)包的序列號。ttl=<值>
:表示數(shù)據(jù)包的生存時間(TTL,Time To Live),反映了路由跳數(shù)。time=<值>
:表示往返時間(RTT,Round-Trip Time),單位為毫秒。
-
統(tǒng)計信息:
packets transmitted
:發(fā)送的總數(shù)據(jù)包數(shù)。received
:接收到的總數(shù)據(jù)包數(shù)。packet loss
:丟包率(百分比)。time
:整個測試過程的持續(xù)時間。rtt min/avg/max/mdev
:往返時間的最小值、平均值、最大值以及標準偏差。
5. ping 的應用場景
(1) 測試網(wǎng)絡連通性
- 使用
ping
可以快速檢查本地主機與目標主機之間的網(wǎng)絡是否連通。 - 如果無法收到任何響應,可能是因為目標主機不可達、網(wǎng)絡中斷或目標主機禁用了ICMP響應。
(2) 測量網(wǎng)絡延遲
- 通過觀察
ping
輸出中的time
值,可以評估網(wǎng)絡的速度和穩(wěn)定性。 - 較低的延遲通常意味著更好的網(wǎng)絡性能。
(3) 檢測丟包率
- 如果部分請求沒有收到響應,可能是網(wǎng)絡擁塞或不穩(wěn)定。
- 高丟包率可能表明網(wǎng)絡質(zhì)量較差。
(4) 調(diào)試網(wǎng)絡問題
- 結(jié)合其他工具(如
traceroute
或mtr
),可以定位網(wǎng)絡故障的具體位置。
6. 注意事項
(1) 目標主機可能禁用ICMP
- 某些主機或防火墻可能會禁用ICMP協(xié)議,導致即使網(wǎng)絡正常也無法收到響應。
(2) 網(wǎng)絡延遲的影響因素
- 網(wǎng)絡延遲可能受到多種因素的影響,包括物理距離、路由器數(shù)量、帶寬限制等。
(3) 數(shù)據(jù)包大小的影響
- 發(fā)送較大的數(shù)據(jù)包可能會暴露網(wǎng)絡中的帶寬瓶頸或MTU(Maximum Transmission Unit)問題。
(4) 不同平臺的實現(xiàn)差異
- Windows 和 Linux 的
ping
命令在默認行為上可能略有不同(例如,默認數(shù)據(jù)包大小)。
netstat
:查看網(wǎng)絡狀態(tài)
我們在寫一些網(wǎng)絡服務時,如寫 udp Server
/ tcp Server
,我們有時需要查看這些網(wǎng)絡服務是否啟動以及其他狀態(tài)信息,如果直接使用 ps
命令,只能查看到一些偏向進程方面的,因此我們推薦 netstat
:
netstat
是一個用于顯示網(wǎng)絡連接、路由表、接口統(tǒng)計信息、偽裝連接和多播成員的命令行工具。它是網(wǎng)絡管理員和開發(fā)人員常用的工具之一,可以幫助診斷網(wǎng)絡問題、監(jiān)控網(wǎng)絡狀態(tài)以及分析系統(tǒng)上的活動連接。
以下是關(guān)于 netstat
的詳細介紹:
1. netstat 的基本功能
netstat
提供了以下主要功能:
- 顯示活動的網(wǎng)絡連接:列出當前系統(tǒng)的TCP/UDP連接。
- 顯示路由表信息:查看系統(tǒng)的IP路由表。
- 顯示接口統(tǒng)計信息:顯示網(wǎng)絡接口的流量統(tǒng)計信息。
- 顯示監(jiān)聽端口:列出正在監(jiān)聽的端口及其對應的服務或進程。
- 顯示網(wǎng)絡協(xié)議統(tǒng)計信息:提供TCP、UDP、ICMP等協(xié)議的統(tǒng)計數(shù)據(jù)。
2. 常見用法
(1) 基本語法
netstat [選項]
(2) 常見選項
注意:在使用時,這些選項的前后順序無所謂,沒有規(guī)定
選項 | 描述 |
---|---|
-a | 即 all ,顯示所有連接和偵聽端口(包括TCP和UDP)。 |
-t | 即 tcp ,僅顯示TCP連接。 |
-u | 即 udp ,僅顯示UDP連接。 |
-n | 即 number ,以數(shù)字形式顯示地址和端口號(不進行DNS解析)。 |
-l | 僅顯示處于監(jiān)聽狀態(tài)的連接。 |
-p | 即 process ,顯示與每個連接關(guān)聯(lián)的進程ID(需要root權(quán)限)。 |
-r | 顯示內(nèi)核路由表。 |
-i | 顯示網(wǎng)絡接口的統(tǒng)計信息。 |
-s | 顯示每個協(xié)議的統(tǒng)計信息(如TCP、UDP等)。 |
2. 常見用法
(1) 顯示所有連接和偵聽端口
netstat -a
- 輸出中會包含所有的TCP和UDP連接,包括已建立的連接和正在監(jiān)聽的端口。
(2) 顯示所有TCP連接
netstat -at
- 只顯示TCP協(xié)議相關(guān)的連接。
(3) 顯示所有UDP連接
netstat -au
- 只顯示UDP協(xié)議相關(guān)的連接。
(4) 顯示監(jiān)聽端口
netstat -ln
- 使用
-l
選項只顯示處于監(jiān)聽狀態(tài)的端口,-n
選項避免DNS解析,加快輸出速度。
(5) 顯示與進程關(guān)聯(lián)的連接
sudo netstat -ntp
-n
:以數(shù)字形式顯示地址和端口號。-t
:僅顯示TCP連接。-p
:顯示與每個連接關(guān)聯(lián)的進程ID和名稱。- 需要使用
sudo
提升權(quán)限,因為普通用戶無法訪問某些進程信息。
(6) 顯示路由表
netstat -r
- 輸出系統(tǒng)的IP路由表,類似于
route
或ip route
命令。
(7) 顯示網(wǎng)絡接口統(tǒng)計信息
netstat -i
- 列出所有網(wǎng)絡接口的流量統(tǒng)計信息,包括接收和發(fā)送的數(shù)據(jù)包數(shù)量、錯誤數(shù)等。
(8) 顯示協(xié)議統(tǒng)計信息
netstat -s
- 提供TCP、UDP、ICMP等協(xié)議的詳細統(tǒng)計信息,例如已建立的連接數(shù)、丟棄的數(shù)據(jù)包數(shù)等。
3. 示例
以下是一個典型的 netstat
輸出示例:
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 1234/sshd
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 1235/cupsd
udp 0 0 0.0.0.0:68 0.0.0.0:* 1236/dhclient
4. 輸出字段解釋
- Proto:協(xié)議類型(TCP或UDP)。
- Recv-Q:接收隊列中的數(shù)據(jù)包數(shù)量。
- Send-Q:發(fā)送隊列中的數(shù)據(jù)包數(shù)量。
- Local Address:本地地址和端口。
- Foreign Address:遠程地址和端口。
- State:連接狀態(tài)(僅適用于TCP,例如
LISTEN
、ESTABLISHED
等)。 - PID/Program name:與該連接關(guān)聯(lián)的進程ID和程序名稱(需使用
-p
選項)。
5. netstat 的替代工具
在現(xiàn)代Linux系統(tǒng)中,netstat
已逐漸被更高效的工具(如 ss
和 ip
)取代:
ss
:功能類似netstat
,但性能更高,推薦使用。ip
:用于管理和顯示網(wǎng)絡接口、路由表等信息。
例如,使用 ss
查看監(jiān)聽端口:
ss -tnlp
6. 注意事項
(1) 權(quán)限問題
-
某些選項(如
-p
)需要 root 權(quán)限才能查看進程信息。比如下圖,有些條目缺失了一些信息,只有我們自己啟動的
./server
有 -
如果沒有權(quán)限,可以嘗試使用
sudo
提升權(quán)限。如下圖,使用
sudo
提權(quán)后,所有信息都展示出來了
(2) 性能問題
- 在高并發(fā)環(huán)境下,
netstat
的性能可能不如ss
,因為它需要讀取大量的內(nèi)核數(shù)據(jù)。
(3) 替代工具
- 在較新的 Linux 發(fā)行版中,
netstat
可能已被廢棄或不再默認安裝??梢允褂?ss
或ip
命令作為替代。
xargs
:將數(shù)據(jù)轉(zhuǎn)換為其他命令的命令行參數(shù)
xargs
是一個功能強大的命令行工具,用于從標準輸入(stdin)讀取數(shù)據(jù),并將其作為參數(shù)傳遞給其他命令執(zhí)行。它可以幫助用戶將管道或文件中的數(shù)據(jù)轉(zhuǎn)換為命令行參數(shù),從而實現(xiàn)批量處理任務。
以下是關(guān)于 xargs
的詳細講解:
1. xargs 的基本功能
- 從標準輸入讀取數(shù)據(jù):
xargs
從標準輸入中讀取數(shù)據(jù),通常是通過管道或其他命令的輸出。 - 構(gòu)建命令行參數(shù):將讀取到的數(shù)據(jù)轉(zhuǎn)換為命令行參數(shù),并傳遞給指定的命令。
- 批量執(zhí)行命令:支持對多個輸入項逐一或分批執(zhí)行命令。
2. 常見用法
(1) 基本語法
command | xargs [選項] [命令]
command
:生成輸入數(shù)據(jù)的命令。xargs
:將輸入數(shù)據(jù)轉(zhuǎn)換為命令行參數(shù)。[選項]
:控制xargs
的行為。[命令]
:接收參數(shù)并執(zhí)行的命令。
3. 示例
(1) 基本用法
echo "file1 file2 file3" | xargs ls
-
將
file1 file2 file3
作為參數(shù)傳遞給ls
命令,等價于:ls file1 file2 file3
pidof
:根據(jù)名字查找并返回進程PID
pidof
是一個用于查找正在運行的進程的 PID(Process ID)的命令行工具。它根據(jù)指定的進程名稱返回與該名稱匹配的進程的 PID 列表。pidof
是系統(tǒng)管理員和開發(fā)人員常用的工具之一,尤其在需要動態(tài)獲取某個服務或程序的 PID 時非常方便。
以下是關(guān)于 pidof
的詳細講解:
1. pidof 的基本功能
- 查找進程 ID:根據(jù)進程名稱返回對應的 PID。
- 支持多個匹配項:如果存在多個同名進程,
pidof
會返回所有匹配的 PID。 - 簡單易用:語法簡單,適合腳本中使用。
2. 常見用法
(1) 基本語法
pidof [選項] 進程名稱
(2) 常見選項
選項 | 描述 |
---|---|
-s | 只返回一個 PID(即使有多個匹配的進程)。 |
-x | 匹配腳本或可執(zhí)行文件(不僅限于二進制程序)。 |
-o PID,... | 排除指定的 PID 或特殊符號(如 $$ 表示當前 shell 的 PID)。 |
3. 示例
(1) 查找特定進程的 PID
pidof sshd
-
如果
sshd
正在運行,輸出可能是:1234 1235
-
這表示有兩個
sshd
進程正在運行,其 PID 分別為1234
和1235
。
(2) 只返回一個 PID
pidof -s sshd
-
即使有多個
sshd
進程,也只返回其中一個 PID,例如:1234
(3) 匹配腳本或可執(zhí)行文件
pidof -x myscript.sh
- 如果
myscript.sh
是一個正在運行的腳本,pidof
會返回其 PID。
(4) 排除特定 PID
pidof -o $$ bash
$$
表示當前 shell 的 PID。此命令會列出所有正在運行的bash
進程的 PID,但排除當前 shell 的 PID。
4. 輸出解釋
pidof
的輸出是一個由空格分隔的 PID 列表。如果沒有找到匹配的進程,則不會有任何輸出。
例如:
$ pidof nginx
1234 1235 1236
這表示有三個 nginx
進程正在運行,其 PID 分別為 1234
、1235
和 1236
。
5. 使用場景
(1) 動態(tài)獲取 PID
在編寫腳本時,可以使用 pidof
獲取某個服務的 PID 并進行進一步操作。例如:
PID=$(pidof mysqld)
if [ -n "$PID" ]; thenecho "MySQL is running with PID $PID"
elseecho "MySQL is not running"
fi
(2) 結(jié)合其他工具
可以將 pidof
的輸出與其他工具結(jié)合使用。例如:
-
使用
kill
發(fā)送信號:有兩種寫法// 方法一: kill $(pidof nginx)// 方法二: 通過管道 pidof nginx | xargs kill -9
-
使用
ps
獲取更多進程信息:ps -p $(pidof sshd)
(3) 監(jiān)控進程狀態(tài)
通過定期檢查某個進程是否存在,可以實現(xiàn)簡單的進程監(jiān)控功能。
6. 注意事項
**(1) 進程名稱匹配 **
pidof
根據(jù)進程名稱進行匹配,因此可能會出現(xiàn)誤匹配的情況。例如,pidof http
可能會匹配到httpd
或其他包含http
的進程。- 如果需要更精確的匹配,建議結(jié)合
pgrep
或ps
使用。
(2) 權(quán)限問題
- 如果當前用戶沒有權(quán)限訪問某些進程的信息,
pidof
可能無法返回這些進程的 PID。
(3) 替代工具
- 在某些情況下,
pgrep
是一個更強大的替代工具,因為它可以根據(jù)更多的條件(如用戶、命令行參數(shù)等)進行過濾。
watch
:動態(tài)刷新的數(shù)字監(jiān)控
watch
是一個非常實用的命令行工具,用于定期執(zhí)行其他命令并將輸出顯示在終端中。它可以幫助用戶實時監(jiān)控系統(tǒng)狀態(tài)、進程運行情況或其他動態(tài)變化的信息。通過 watch
,你可以以固定的時間間隔重復執(zhí)行某個命令,并觀察其結(jié)果的變化。
以下是關(guān)于 watch
的詳細講解:
1. watch 的基本功能
- 定期執(zhí)行命令:按照指定的時間間隔(默認為2秒)重復執(zhí)行某個命令。
- 高亮變化:可以高亮顯示輸出中發(fā)生變化的部分,便于快速發(fā)現(xiàn)差異。
- 全屏顯示:將命令的輸出完整地顯示在終端中,類似于一個動態(tài)更新的窗口。
2. 常見用法
(1) 基本語法
watch [選項] 命令
(2) 常見選項
選項 | 描述 |
---|---|
-n <秒> | 設置刷新時間間隔(默認為2秒)。 |
-d 或 --difference | 高亮顯示輸出中的變化部分。 |
-t 或 --no-title | 禁用頂部標題欄(顯示命令和時間信息)。 |
-b 或 --beep | 如果輸出發(fā)生變化,則發(fā)出蜂鳴聲。 |
-g 或 --chgexit | 當輸出發(fā)生變化時立即退出。 |
3. 示例
(1) 默認使用
watch df -h
- 每隔2秒執(zhí)行一次
df -h
命令,顯示磁盤使用情況。
(2) 自定義刷新時間
watch -n 5 free -m
- 每隔5秒執(zhí)行一次
free -m
命令,顯示內(nèi)存使用情況。
(3) 高亮顯示變化
watch -d uptime
- 每隔2秒執(zhí)行一次
uptime
命令,并高亮顯示輸出中發(fā)生變化的部分。
(4) 禁用標題欄
watch -t date
- 每隔2秒執(zhí)行一次
date
命令,并禁用頂部標題欄。
(5) 輸出變化時發(fā)出蜂鳴聲
watch -b ls
- 每隔2秒執(zhí)行一次
ls
命令,如果目錄內(nèi)容發(fā)生變化,則發(fā)出蜂鳴聲。
(6) 輸出變化時立即退出
watch -g ps aux | grep sshd
- 每隔2秒檢查是否有
sshd
進程,如果輸出發(fā)生變化(例如進程啟動或停止),則立即退出。
4. 輸出解釋
watch
的輸出通常包括以下部分:
- 頂部標題欄:顯示命令、當前時間以及刷新間隔。
- 命令輸出:每次執(zhí)行命令的輸出結(jié)果。
- 高亮部分:如果啟用了
-d
選項,輸出中發(fā)生變化的部分會被高亮顯示。
例如:
Every 2.0s: df -h Tue Feb 28 10:00:00 2023Filesystem Size Used Avail Use% Mounted on
udev 7.8G 0 7.8G 0% /dev
tmpfs 1.6G 2.1M 1.6G 1% /run
/dev/sda1 50G 12G 36G 25% /
...
5. 使用場景
(1) 監(jiān)控系統(tǒng)資源
- 使用
watch
可以方便地監(jiān)控系統(tǒng)資源的使用情況,例如:- 內(nèi)存使用:
watch free -m
- CPU負載:
watch top
- 磁盤空間:
watch df -h
- 內(nèi)存使用:
(2) 監(jiān)控網(wǎng)絡連接
- 查看活動的網(wǎng)絡連接:
watch netstat -tuln
- 查看路由表變化:
watch route -n
(3) 監(jiān)控文件或目錄變化
- 查看某個目錄的內(nèi)容變化:
watch ls -l /path/to/directory
- 查看日志文件的變化:
watch tail -n 10 /var/log/syslog
(4) 監(jiān)控服務狀態(tài)
- 查看某個服務的狀態(tài):
watch systemctl status sshd
- 查看某個端口的監(jiān)聽狀態(tài):
watch lsof -i :80
6. 注意事項
(1) 終止 watch
- 按下
Ctrl+C
可以終止watch
的運行。
(2) 命令輸出的限制
watch
的輸出會根據(jù)終端窗口的大小自動調(diào)整,因此不適合處理非常大的輸出。
(3) 高亮功能的限制
-d
選項只能高亮顯示文本內(nèi)容的變化,無法檢測到格式或顏色的變化。
(4) 替代工具
-
如果需要更復雜的監(jiān)控功能,可以考慮使用
while
循環(huán)結(jié)合sleep
,例如:while true; do clear; df -h; sleep 5; done