Linux運維基礎之ping命令詳解

Linux運維基礎之ping命令詳解

在網路管理和計算機診斷工具中,ping 命令是最基本、使用最廣泛的工具之一。ping 命令是幾乎每個作業系統都有的命令列工具,是網路工程師、系統管理員甚至好奇的技術愛好者的重要診斷工具。

ping 命令向指定的 IP 地址或主機傳送小資料包,並期待收到回覆。通過這種方式,它可以幫助使用者確定網路裝置是否可以訪問,並提供有關網路響應時間和可靠性的寶貴資訊。無論你是在排查連線問題、監控網路效能,還是剛剛開始網路管理之旅,ping 命令都是你必須掌握的。

ping 命令的一般語法:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
ping [IP-ADDRESS]
ping [IP-ADDRESS]
ping [IP-ADDRESS]

1. 指定資料包數量

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
ping -c [number] [IP-Address]
ping -c [number] [IP-Address]
ping -c [number] [IP-Address]

使用 -c 選項可讓 ping 命令在傳送一定數量的資料包後自動停止。

示例:

使用 -c 5 選項執行 ping 命令向 IP 地址 127.0.0.1 傳送 5 個資料包時,輸出結果類似於下面的內容:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.045 ms
64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.058 ms
64 bytes from 127.0.0.1: icmp_seq=3 ttl=64 time=0.056 ms
64 bytes from 127.0.0.1: icmp_seq=4 ttl=64 time=0.059 ms
64 bytes from 127.0.0.1: icmp_seq=5 ttl=64 time=0.057 ms
--- 127.0.0.1 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 3999ms
rtt min/avg/max/mdev = 0.045/0.055/0.059/0.006 ms
PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data. 64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.045 ms 64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.058 ms 64 bytes from 127.0.0.1: icmp_seq=3 ttl=64 time=0.056 ms 64 bytes from 127.0.0.1: icmp_seq=4 ttl=64 time=0.059 ms 64 bytes from 127.0.0.1: icmp_seq=5 ttl=64 time=0.057 ms --- 127.0.0.1 ping statistics --- 5 packets transmitted, 5 received, 0% packet loss, time 3999ms rtt min/avg/max/mdev = 0.045/0.055/0.059/0.006 ms
PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.045 ms
64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.058 ms
64 bytes from 127.0.0.1: icmp_seq=3 ttl=64 time=0.056 ms
64 bytes from 127.0.0.1: icmp_seq=4 ttl=64 time=0.059 ms
64 bytes from 127.0.0.1: icmp_seq=5 ttl=64 time=0.057 ms

--- 127.0.0.1 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 3999ms
rtt min/avg/max/mdev = 0.045/0.055/0.059/0.006 ms

2. 檢查 Localhost 網路

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
ping localhost
ping localhost
ping localhost

如果在連線遠端計算機或網站時遇到問題,請 ping 本地主機以確保已連線。

示例:

使用 localhost 執行 ping 命令時,基本上就是在 ping 自己的計算機。下面是你可能看到的輸出示例:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
PING localhost (127.0.0.1) 56(84) bytes of data.
64 bytes from localhost (127.0.0.1): icmp_seq=1 ttl=64 time=0.033 ms
64 bytes from localhost (127.0.0.1): icmp_seq=2 ttl=64 time=0.031 ms
64 bytes from localhost (127.0.0.1): icmp_seq=3 ttl=64 time=0.031 ms
64 bytes from localhost (127.0.0.1): icmp_seq=4 ttl=64 time=0.030 ms
--- localhost ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 2998ms
rtt min/avg/max/mdev = 0.030/0.031/0.033/0.001 ms
PING localhost (127.0.0.1) 56(84) bytes of data. 64 bytes from localhost (127.0.0.1): icmp_seq=1 ttl=64 time=0.033 ms 64 bytes from localhost (127.0.0.1): icmp_seq=2 ttl=64 time=0.031 ms 64 bytes from localhost (127.0.0.1): icmp_seq=3 ttl=64 time=0.031 ms 64 bytes from localhost (127.0.0.1): icmp_seq=4 ttl=64 time=0.030 ms --- localhost ping statistics --- 4 packets transmitted, 4 received, 0% packet loss, time 2998ms rtt min/avg/max/mdev = 0.030/0.031/0.033/0.001 ms
PING localhost (127.0.0.1) 56(84) bytes of data.
64 bytes from localhost (127.0.0.1): icmp_seq=1 ttl=64 time=0.033 ms
64 bytes from localhost (127.0.0.1): icmp_seq=2 ttl=64 time=0.031 ms
64 bytes from localhost (127.0.0.1): icmp_seq=3 ttl=64 time=0.031 ms
64 bytes from localhost (127.0.0.1): icmp_seq=4 ttl=64 time=0.030 ms

--- localhost ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 2998ms
rtt min/avg/max/mdev = 0.030/0.031/0.033/0.001 ms

3. 只在有限的時間內傳送 ping

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
ping -i [number] [IP-Address]
ping -i [number] [IP-Address]
ping -i [number] [IP-Address]

-i 選項設定每個資料包傳送前的超時間隔(以秒為單位)。

示例:

命令 ping -i 5 127.0.0.1 將每隔 5 秒向環回地址 127.0.0.1 傳送一次 ICMP Echo Request 資料包。下面是輸出示例:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.035 ms
64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.040 ms
64 bytes from 127.0.0.1: icmp_seq=3 ttl=64 time=0.038 ms
64 bytes from 127.0.0.1: icmp_seq=4 ttl=64 time=0.039 ms
--- 127.0.0.1 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 15005ms
rtt min/avg/max/mdev = 0.035/0.038/0.040/0.007 ms
PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data. 64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.035 ms 64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.040 ms 64 bytes from 127.0.0.1: icmp_seq=3 ttl=64 time=0.038 ms 64 bytes from 127.0.0.1: icmp_seq=4 ttl=64 time=0.039 ms --- 127.0.0.1 ping statistics --- 4 packets transmitted, 4 received, 0% packet loss, time 15005ms rtt min/avg/max/mdev = 0.035/0.038/0.040/0.007 ms
PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.035 ms
64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.040 ms
64 bytes from 127.0.0.1: icmp_seq=3 ttl=64 time=0.038 ms
64 bytes from 127.0.0.1: icmp_seq=4 ttl=64 time=0.039 ms
--- 127.0.0.1 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 15005ms
rtt min/avg/max/mdev = 0.035/0.038/0.040/0.007 ms

在此示例中,每個請求都在不到一毫秒的時間內得到回覆,沒有丟失任何資料包。輸出結果可能因系統配置和當前系統負載而異。

4. 對目標主機進行泛洪 ping

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
ping -f [IP-address]
ping -f [IP-address]
ping -f [IP-address]

-f 選項將以儘可能快的速度傳送資料包。這會導致網路泛洪,因此常被稱為 “泛洪 ping”。它主要用於壓力測試,應謹慎使用。

由於資料包是以最快速度傳送的,因此可能不會像普通 ping 那樣有詳細的輸出。取而代之的是一連串的點,在傳送和接收資料包時可能會列印出空格。

示例:

典型的輸出結果可能是這樣的:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.
..........................................................^C
--- 127.0.0.1 ping statistics ---
468751 packets transmitted, 468750 received, 0% packet loss, time 330ms
rtt min/avg/max/mdev = 0.025/0.035/0.139/0.002 ms, pipe 2, ipg/ewma 0.182/0.037 ms
PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data. ..........................................................^C --- 127.0.0.1 ping statistics --- 468751 packets transmitted, 468750 received, 0% packet loss, time 330ms rtt min/avg/max/mdev = 0.025/0.035/0.139/0.002 ms, pipe 2, ipg/ewma 0.182/0.037 ms
PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.
..........................................................^C
--- 127.0.0.1 ping statistics ---
468751 packets transmitted, 468750 received, 0% packet loss, time 330ms
rtt min/avg/max/mdev = 0.025/0.035/0.139/0.002 ms, pipe 2, ipg/ewma 0.182/0.037 ms

注意,上面的 ^C 代表按 Ctrl + C 來停止命令。需要注意的是,flood 選項需要 root 許可權,因此如果你不是 root 使用者,可能需要使用 sudo 執行此命令。

5. 更改 ping 資料包大小

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
ping -s [number] [IP-Address]
ping -s [number] [IP-Address]
ping -s [number] [IP-Address]

使用 -s 選項增加預設資料包大小,可以傳送輕型和重型資料包。

示例:

命令 ping -s 1000 127.0.0.1 向環回地址 127.0.0.1 傳送 ICMP echo 請求,資料包大小為 1000 位元組。下面是輸出結果的示例:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
PING 127.0.0.1 (127.0.0.1) 1000(1028) bytes of data.
1008 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.050 ms
1008 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.054 ms
1008 bytes from 127.0.0.1: icmp_seq=3 ttl=64 time=0.050 ms
1008 bytes from 127.0.0.1: icmp_seq=4 ttl=64 time=0.054 ms
--- 127.0.0.1 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3071ms
rtt min/avg/max/mdev = 0.050/0.052/0.054/0.002 ms
PING 127.0.0.1 (127.0.0.1) 1000(1028) bytes of data. 1008 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.050 ms 1008 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.054 ms 1008 bytes from 127.0.0.1: icmp_seq=3 ttl=64 time=0.050 ms 1008 bytes from 127.0.0.1: icmp_seq=4 ttl=64 time=0.054 ms --- 127.0.0.1 ping statistics --- 4 packets transmitted, 4 received, 0% packet loss, time 3071ms rtt min/avg/max/mdev = 0.050/0.052/0.054/0.002 ms
PING 127.0.0.1 (127.0.0.1) 1000(1028) bytes of data.
1008 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.050 ms
1008 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.054 ms
1008 bytes from 127.0.0.1: icmp_seq=3 ttl=64 time=0.050 ms
1008 bytes from 127.0.0.1: icmp_seq=4 ttl=64 time=0.054 ms
--- 127.0.0.1 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3071ms
rtt min/avg/max/mdev = 0.050/0.052/0.054/0.002 ms

6. 只顯示摘要行

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
ping -q [IP-Address]
ping -q [IP-Address]
ping -q [IP-Address]

-q 選項輸出一行常規 ping 資訊,然後是統計資訊。

示例:

當你在環回地址 127.0.0.1 上執行帶有 -q 標誌的 ping 命令時,它會向網路主機傳送 ICMP ECHO_REQUEST 資料包。使用 -q 標誌後,命令將以 “安靜” 模式執行,僅在結束時顯示彙總統計資訊。輸出結果可能如下:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.
--- 127.0.0.1 ping statistics ---
10 packets transmitted, 10 received, 0% packet loss, time 8999ms
rtt min/avg/max/mdev = 0.045/0.057/0.082/0.012 ms
PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data. --- 127.0.0.1 ping statistics --- 10 packets transmitted, 10 received, 0% packet loss, time 8999ms rtt min/avg/max/mdev = 0.045/0.057/0.082/0.012 ms
PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.

--- 127.0.0.1 ping statistics ---
10 packets transmitted, 10 received, 0% packet loss, time 8999ms
rtt min/avg/max/mdev = 0.045/0.057/0.082/0.012 ms

7. 設定接收包的時限

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
ping -w [seconds] [IP-Address]
ping -w [seconds] [IP-Address]
ping -w [seconds] [IP-Address]

該選項會在一定時間後停止接收 ping 輸出。

示例:

當你在環回地址 127.0.0.1 上執行帶有 -w 10 選項的 ping 命令時,它會向該地址傳送 ICMP echo 請求資料包,並等待長達 10 秒的回覆。下面是你可能看到的輸出示例:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.041 ms
64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.040 ms
64 bytes from 127.0.0.1: icmp_seq=3 ttl=64 time=0.041 ms
64 bytes from 127.0.0.1: icmp_seq=4 ttl=64 time=0.038 ms
...
--- 127.0.0.1 ping statistics ---
10 packets transmitted, 10 received, 0% packet loss, time 8999ms
rtt min/avg/max/mdev = 0.038/0.041/0.045/0.002 ms
PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data. 64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.041 ms 64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.040 ms 64 bytes from 127.0.0.1: icmp_seq=3 ttl=64 time=0.041 ms 64 bytes from 127.0.0.1: icmp_seq=4 ttl=64 time=0.038 ms ... --- 127.0.0.1 ping statistics --- 10 packets transmitted, 10 received, 0% packet loss, time 8999ms rtt min/avg/max/mdev = 0.038/0.041/0.045/0.002 ms
PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.041 ms
64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.040 ms
64 bytes from 127.0.0.1: icmp_seq=3 ttl=64 time=0.041 ms
64 bytes from 127.0.0.1: icmp_seq=4 ttl=64 time=0.038 ms
...
--- 127.0.0.1 ping statistics ---
10 packets transmitted, 10 received, 0% packet loss, time 8999ms
rtt min/avg/max/mdev = 0.038/0.041/0.045/0.002 ms

更多 Linux 命令

下面羅列了最常見的一些 Linux 命令,您可以根據自己的需要查閱對應命令的詳細解析:

目錄操作 rmdir · cd · pwd · exa · ls
檔案操作 cat · cp · dd · less · touch · ln · rename · more · head
檔案系統操作 chown · mkfs · locate
網路 ping · curl · wget · iptables · mtr
搜尋和文字處理 find · grep · sed · whatis · ripgrep · fd · tldr
系統資訊和管理 env · history · top · who · htop · glances · lsof
使用者和會話管理 screen · su · sudo · open

此外,我們還整理 Linux 命令列大全,以幫助大家全面深入地學習 Linux。

評論留言