五個(gè)你應(yīng)該知道的 Linux 服務(wù)器命令
在 Linux 服務(wù)器上管理和導(dǎo)航的能力是一項(xiàng)基本技能,它永遠(yuǎn)不會完全過時(shí)。即使您嘗試完全轉(zhuǎn)向“無服務(wù)器”世界,也總會有一臺實(shí)際的服務(wù)器在運(yùn)行代碼。那臺服務(wù)器很可能也在運(yùn)行 Linux,因?yàn)槌^ 90% 的生產(chǎn)服務(wù)器都在使用它。
了解如何操作 Linux 服務(wù)器將使您能夠更快地排除問題并更全面地了解軟件生命周期。這確實(shí)是一組基本技能,使構(gòu)建軟件(特別是后端)變得更加容易。
在本文中,我們將介紹一些基本的 Linux 命令,您需要掌握這些命令才能成功。
1、ip
ip命令是一種高度靈活的網(wǎng)絡(luò)工具。僅使用此命令就可以在系統(tǒng)上完成很多工作。您可以添加新路由以將流量發(fā)送到不同的接口。您可以禁用或啟用整個(gè)網(wǎng)絡(luò)堆棧?;蛘吣梢灾猾@取基本的IP地址信息。
ip命令是超級靈活的。
讓我們看幾個(gè)基本的使用示例。這是您查找系統(tǒng)上每個(gè)連接的網(wǎng)絡(luò)接口的IP地址信息的方法:
linuxmi@linuxmi:~/www.linuxmi.com$ ip ad
這是完整的ip地址命令的簡寫。這將顯示類似于以下內(nèi)容的內(nèi)容:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 00:0c:29:24:32:63 brd ff:ff:ff:ff:ff:ff
altname enp2s1
inet 192.168.174.132/24 brd 192.168.174.255 scope global dynamic noprefixroute ens33
valid_lft 1665sec preferred_lft 1665sec
inet6 fe80::36fe:8da1:1b6b:a2c3/64 scope link noprefixroute
valid_lft forever preferred_lft forever
正如你在上面的輸出中所看到的,這臺機(jī)器只有兩個(gè)網(wǎng)絡(luò)接口。一個(gè)是回環(huán)接口,另一個(gè)是主接口,分配了一個(gè)IP地址。主接口分配了192.168.174.132的IP地址,并具有一個(gè)/24子網(wǎng)。
這個(gè)命令對于診斷IP地址問題或僅弄清楚哪個(gè)接口是哪個(gè)非常有幫助。
現(xiàn)在,讓我們看看如何使用ip做出一些路由決策。在這個(gè)例子中,我們正在向路由表中添加一個(gè)新的靜態(tài)路由:
ip route add 1.2.3.4/31 dev eth0
在這里,我們使用ip route add命令添加了一個(gè)新路由。這個(gè)命令接受許多參數(shù),具體形式取決于您想如何路由流量。在這種情況下,我們選擇將任何目標(biāo)地址為1.2.3.4/32的流量路由到整個(gè)網(wǎng)絡(luò)設(shè)備。在這種情況下,設(shè)備是網(wǎng)絡(luò)接口eth0。現(xiàn)在,當(dāng)發(fā)送到1.2.3.4的任何數(shù)據(jù)包時(shí),它們將使用eth0。
如果您只想查看現(xiàn)有的路由表,可以運(yùn)行:
linuxmi@linuxmi:~/www.linuxmi.com$ ip route
ip route 在處理復(fù)雜網(wǎng)絡(luò)時(shí),這是非常重要的命令。如果您需要從您的主機(jī)路由流量到遠(yuǎn)程網(wǎng)絡(luò)上的另一個(gè)主機(jī)或通過VPN,您可能需要開始添加一些靜態(tài)路由。
ip命令在內(nèi)部提供了更多功能。查看完整的手冊頁以了解它所提供的所有功能。
2、tail
tail 命令可能看起來過于簡單,但不要忽視它。在處理大文本文件時(shí),tail 命令非常重要。這些文件可以是日志、交易記錄或任何產(chǎn)生文本行的東西。
使用 tail,我們不僅可以查看巨大文件的余下部分,還可以實(shí)時(shí)跟蹤它的新添加內(nèi)容。使用以下命令,您可以打開一個(gè)文件并按其發(fā)生的順序進(jìn)行跟蹤:
tail /path/to/log/file
這對于監(jiān)視訪問或錯(cuò)誤日志非常有用。對于 Web 服務(wù)器尤其如此。如果您在訪問某個(gè)路徑時(shí)正在尋找特定的錯(cuò)誤,跟蹤錯(cuò)誤日志的輸出可能會更快地解決您的問題。
如果您想減少冗長,還可以從文件末尾返回特定數(shù)量的行。使用 -n 標(biāo)志可以指定要在輸出中接收多少行。
tail 還有一些更智能的選項(xiàng),如 PID 跟蹤和定界符調(diào)整。查看完整的 man 頁面獲取更多信息。
3、nc
nc 或者稱為 Netcat 工具是一款簡單而實(shí)用的故障排除工具。使用此程序,您可以打開套接字,建立網(wǎng)絡(luò)連接并通過網(wǎng)絡(luò)發(fā)送數(shù)據(jù)。它非常易于使用。
假設(shè)您想在特定端口上偵聽一些傳入的流量。您只需要使用以下命令運(yùn)行 nc 來處理 TCP 或 UDP 協(xié)議:
# TCP
nc -l 50000
# UDP
nc -u -l 50000
這將在您指定的端口上打開一個(gè)監(jiān)聽服務(wù)器。在這種情況下,我們選擇了端口 50000。一旦服務(wù)器啟動,您就不會看到任何內(nèi)容,但可以使用…沒錯(cuò),更多的 nc 命令來測試它。
保持監(jiān)聽運(yùn)行,并在另一個(gè)窗口使用以下命令向其發(fā)送一些數(shù)據(jù):
# TCP
echo "hello,www.linuxmi.com" | nc localhost 50000
# UDP
echo "hello,www.linuxmi.com" | nc -u localhost 50000
你應(yīng)該會在監(jiān)聽窗口看到一個(gè)漂亮的“hello,www.linuxmi.com”。如下圖:
說明它工作了!
但這有什么用處呢?非常多。你可以解決套接字連接問題,調(diào)查原始傳入流量中的負(fù)載,或者只是在網(wǎng)絡(luò)上發(fā)送基本數(shù)據(jù)和對象。
Netcat 甚至支持使用 TLS 建立安全連接。你可以指定各種額外的證書參數(shù)。如果你正在處理任何類型的網(wǎng)絡(luò)協(xié)議,熟悉 nc 肯定會節(jié)省你一些麻煩。
官方 Netcat 頁面在這里。
相關(guān):在 Linux 中使用 netcat 命令掃描端口 https://www.linuxmi.com/linux-netcat.html
4、which
服務(wù)器通常表現(xiàn)良好,但有時(shí)會安裝不應(yīng)該安裝的東西。它可能是其他用戶、配置管理軟件或者你在鍵盤上出錯(cuò),但錯(cuò)誤的東西確實(shí)被安裝了。這意味著需要查找確切位置,但有時(shí)候這并不容易。
謝天謝地,在 Linux 中我們有 which 工具。這有助于我們確定正在運(yùn)行的程序的“which”版本。是不是一個(gè)聰明的名字?
假設(shè)您安裝了多個(gè)不同版本的相同程序或語言。您不確定它是從哪個(gè)位置運(yùn)行的。它可能在 /usr/bin 中,也可能在 /usr/local/bin 中。不要浪費(fèi)時(shí)間手動查找,只需使用 which 找出它:
linuxmi@linuxmi:~/www.linuxmi.com$ which echo
/usr/bin/echo
正如你所看到的,我們詢問了正在使用的 echo 版本,并得到了該可執(zhí)行文件的當(dāng)前路徑。當(dāng)然,我們不太可能“安裝”不同版本的 echo,但是對于諸如編程語言和解釋器之類的東西來說,這樣做可能非常有用。在某些服務(wù)器上,通常會使用多個(gè)版本。
使用 which 快速弄清楚,然后回到使用正確的版本。
5、dig
DNS 有時(shí)可能是一個(gè)大救星,有時(shí)也可能是個(gè)麻煩的小鬼。由于 DNS 問題造成了很多廣泛的停機(jī),很難相信這樣一個(gè)看似簡單的服務(wù)會造成如此多的破壞,但這種情況時(shí)常發(fā)生。
了解 DNS 記錄背后的內(nèi)容非常重要。更重要的是,要知道如何跟蹤錯(cuò)誤的記錄。幸運(yùn)的是,在 Linux 上有一個(gè)非常好的工具。它就是 dig 程序。
使用dig,你可以以多種方式查詢DNS服務(wù)器獲取各種類型的記錄。你還可以看到DNS請求通過DNS記錄和服務(wù)器的層次結(jié)構(gòu)到達(dá)你的全路徑。
讓我們嘗試使用microsoft.com這個(gè)簡單的例子。這將說明單個(gè)記錄并不總是看起來那么簡單:
linuxmi@linuxmi:~/www.linuxmi.com$ dig microsoft.com
讓我們看看我們得到了什么:
在這里,我們可以看到 dig 提供給我們的豐富信息。我們可以快速地看到不止一個(gè) A 記錄,而是有 4 個(gè)!這意味著每次我們訪問 microsoft.com時(shí),實(shí)際上要從不同的IP地址列表中選擇。公司通常這樣做來平衡多個(gè)主機(jī)之間的請求,或者有 CDN 參與時(shí)。
我們還可以檢查基本的響應(yīng)時(shí)間和返回的任何其他選項(xiàng)的統(tǒng)計(jì)信息。如果你想深入了解 DNS 的情況,你就得挖下去。