通常情況下,ping 命令會(huì)預(yù)安裝在大多數(shù) Linux 系統(tǒng)中。但是也有一些例外情況,比如安裝的是最小版本的 Ubuntu,或者是在 Docker 容器中運(yùn)行 Ubuntu,這種情況下,ping 命令有可能會(huì)找不到...

通常情況下,ping 命令會(huì)預(yù)安裝在大多數(shù) Linux 系統(tǒng)中。但是也有一些例外情況,比如安裝的是最小版本的 Ubuntu,或者是在 Docker 容器中運(yùn)行 Ubuntu,這種情況下,ping 命令有可能會(huì)找不到,即如果嘗試運(yùn)行它,會(huì)看到 ping not found 的報(bào)錯(cuò):?
root@182b38f8w4c9:/# ping www.baidu.com
bash: ping: command not found
這就相當(dāng)于在 arm 或者單片機(jī)中安裝 jre,某些 jdk 模塊會(huì)找不到一樣。
不過這還不是最糟糕的事情。找不到 ping 命令的話,那就安裝好了,但是當(dāng)你嘗試安裝 ping,又報(bào)出另外一個(gè)錯(cuò)誤:Unable to locate package ping:?
root@182b38f8w4c9:/# apt install ping
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package ping
這是怎么回事?Ubuntu 中不能使用 ping 嗎?很顯然這是不可能的。接下來我們來詳細(xì)看一下。
在 Ubuntu 中安裝 ping
之所以會(huì)出現(xiàn)上面的問題,是因?yàn)?ping 命令本身不是一個(gè)包(package),它只是 iputils 包的一部分。所以當(dāng)你嘗試安裝名為 ping 的包時(shí),會(huì)報(bào)錯(cuò)找不到。
作為 iputils 的一部分,ping 命令的包名稱為 iputils-ping,這才是我們需要安裝的包。
首先,通過以 root 身份運(yùn)行此命令來更新本地包緩存(如果不是root,請(qǐng)使用sudo):
然后再安裝 iputils-ping 工具包:

現(xiàn)在,再次運(yùn)行 ping 命令:?
root@182b38f8w4c9:/# ping itsfoss.com
PING itsfoss.com (104.26.10.68) 56(84) bytes of data.
64 bytes from 104.26.10.68 (104.26.10.68): icmp_seq=1 ttl=56 time=25.1 ms
64 bytes from 104.26.10.68 (104.26.10.68): icmp_seq=2 ttl=56 time=49.6 ms
64 bytes from 104.26.10.68 (104.26.10.68): icmp_seq=3 ttl=56 time=34.8 ms
64 bytes from 104.26.10.68 (104.26.10.68): icmp_seq=4 ttl=56 time=38.9 ms
^C
--- itsfoss.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3003ms
rtt min/avg/max/mdev = 25.125/37.095/49.590/8.773 ms

另外,如果你是在 Docker 容器中運(yùn)行的,那么如上安裝只是臨時(shí)的,還應(yīng)該在 Dockerfile 做相應(yīng)修改以使配置永久生效。