免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
系統(tǒng)管理員應該知道的 20 條 Linux 命令


如果您的應用程序不工作,或者您希望在尋找更多信息,這 20 個命令將派上用場。

在這個全新的工具和多樣化的開發(fā)環(huán)境井噴的大環(huán)境下,任何開發(fā)者和工程師都有必要學習一些基本的系統(tǒng)管理命令。特定的命令和工具包可幫助開發(fā)者組織、排查故障并優(yōu)化他們的應用程序,而且當出現(xiàn)錯誤時,也可以為運維人員和系統(tǒng)管理員提供有價值的分類信息。

無論你是新手開發(fā)者還是希望管理自己的應用程序,下面 20 條基本的系統(tǒng)管理命令都可以幫助您更好地了解您的應用程序。它們還可以幫助解決為什么應用程序可在本地正常工作但不能在遠程主機上工作這類的系統(tǒng)故障。這些命令適用于 Linux 開發(fā)環(huán)境、容器和虛擬機。


1. curl


curl 用于傳輸一個 URL??梢允褂眠@條命令用于測試應用程序的端點或與上游服務端點的連接。curl 還可用于檢查你的應用程序是否能連接到其他服務,例如數(shù)據庫,或檢查您的服務是否處于健康的狀態(tài)。

舉個例子,假如你的應用程序拋出一個 HTTP 500 錯誤,表示無法訪問 MongoDB 數(shù)據庫:

-I 選項用于顯示頭信息,-s 選項表示使用靜默模式,不顯示錯誤和進度。檢查數(shù)據庫的端點是否正確:

那么可能是什么問題呢? 檢查您的應用程序是否可以訪問數(shù)據庫以外的其他位置:

看起來這沒問題,現(xiàn)在嘗試訪問數(shù)據庫。您的應用程序正在使用數(shù)據庫的主機名,因此請先嘗試:

這表示您的應用程序無法解析數(shù)據庫,因為數(shù)據庫的 URL 不可用或主機(容器或VM)沒有可用于解析主機名的域名服務器。


2. python -m json.tool / jq


使用 curl 后,API 調用的輸出可讀性可能較差。有時候,你希望將生成的 JSON 數(shù)據格式化輸出以查找特定的條目。Python 有一個內置的庫可幫助您實現(xiàn)這個需求。可以使用 python -m json.tool 來縮進和組織 JSON。要使用 Python 的 JSON 模塊,需要使用管道機制,將 JSON 文件的輸出作為輸入,寫入到 python -m json.tool 命令行。


要使用 Python 庫,使用 -m (module) 選項將輸出內容和 Python 庫組合成管道。

對于更高級的 JSON 解析,可以安裝 jq。jq 提供了一些從 JSON 輸入中提取特定值的選項。要像上面的 Python 模塊一樣將 JSON 輸出格式化,只需將 jq 應用到輸出即可。


3. ls


ls 用于列出目錄中的文件,系統(tǒng)管理員和開發(fā)者會經常使用這個命令。在容器空間中,這條命令可以幫助確定容器鏡像中的目錄和文件。除了查找文件,ls 還可以用于檢查權限。下面的示例中,由于權限問題,你不能運行 myapp。當你使用 ls -l 檢查權限時,你會發(fā)現(xiàn)它的權限在 -rw-r--r-- 中沒有'x',只有讀寫的權限。


4. tail


tail 顯示文件的最后一部分內容。通常情況下,你不需要瀏覽每行日志以進行故障排除。而是需要檢查日志中對應用程序的最新請求的說明。例如,當你向 Apache HTTP 服務器發(fā)起請求時,可以使用 tail 來檢查日志中發(fā)生的情況。

使用 tail -f 來跟蹤日志文件并在發(fā)起請求時查看它們。

-f 選項表示跟隨的意思,它可在日志被寫入文件時輸出它們。下面的示例具有每隔幾秒訪問端點的后臺腳本,日志會記錄請求。除了實時跟蹤日志,還可以使用 tail 帶上 -n 選項來查看文件的最后 100 行。


5. cat


cat 主要用于查看文件內容和合并文件。你可能會使用 cat 來檢查依賴項文件的內容,或確認已在本地構建的應用程序的版本。

上面的示例檢查您的 Python Flask 應用程序是否已將 Flask 列為依賴項。


6. grep


grep 能使用特定模式匹配(包括正則表達式)搜索文本。如果你在另一條命令的輸出中尋找特定的模式,grep 會高亮顯示相關的行??墒褂眠@條命令來搜索日志文件以及特定的進程等。如果想查看 Apache Tomcat 是否啟動,你可能會命令行的數(shù)量給淹沒。但講輸出的內容和 grep 命令組合成管道,可以將表示服務器已啟動的行獨立出來。


7. ps


ps 用于查看進程的各種狀態(tài)信息。使用該命令可確定正在運行的應用程序或確認預期的進程。例如,如果要檢查正在運行的 Tomcat Web 服務器,可使用帶有選項的 ps 來獲取 Tomcat 的進程 ID。


為了更好的易讀性,可使用 grep 和 ps 組合成管道。


8. env


env 用于列出所有環(huán)境變量及為其賦值。在故障排除期間,你可能會發(fā)現(xiàn)需要檢查是否有錯誤的環(huán)境變量來阻止應用程序啟動。在下面的示例中,該命令用于檢查程序主機上設置的環(huán)境變量。


請注意,該應用程序正在使用 Python 3,并具有連接到 MongoDB 數(shù)據庫的環(huán)境變量。


9. top


top 用于顯示系統(tǒng)中各個進程的信息和資源占用狀況,類似于 Windows 的任務管理器。使用該命令可確定哪些進程正在運行,以及它們消耗了多少的內存和 CPU。一種常見的情況是當你運行一個應用程序時,它在一分鐘后掛掉。這時,你首先檢查應用程序的返回錯誤,發(fā)現(xiàn)是一個內存錯誤。


你的應用是否真的內存不足?要確認這個問題,可使用 top 來查看應用程序消耗多少 CPU 和內存。當使用 top 命令后,您注意到一個 Python 應用程序使用了大部分的 CPU,其內存使用量也迅速攀升。當它運行時,如果進程是你的應用程序,則按'C'鍵來查看完整命令并進行逆向工程。發(fā)現(xiàn)原來是你的內存密集型應用程序(memeater.py)。當你的應用程序已經用盡內存,系統(tǒng)會殺掉它并返回一個內存不足(OOM)的錯誤。

應用程序的內存和 CPU 使用量增加,最終因為內存不足而被殺掉。

通過按下'C'鍵,可以看到啟動該應用程序的完整命令

除了檢查應用程序,還可以使用 top 來調試其他使用 CPU 或內存的進程。


10. netstat


netstat 用于顯示網絡狀態(tài)信息。該命令可顯示正在使用的網絡端口及其傳入連接。但是,netstat 在 Linux 中不能開箱即用。如果需要安裝它,需要在 net-tools 包中找到它。作為在本地進行試驗或將應用程序推送到主機的開發(fā)者,可能會收到端口已被分配或地址已被使用的錯誤。使用 netstat 得到協(xié)議、進程和端口這些信息,下圖表明 Apache HTTP 服務器已經在下面的主機上使用了 80 端口。

使用 netstat -tulpn 表明 Apache 已經在這臺機器上使用了 80 端口。


11. ip address


如果 ip address 在你的主機上不能使用,必須使用 iproute2 包進行安裝。ip address 用于顯示應用程序的主機接口和 IP 地址??墒褂?nbsp;ip address 來驗證你的容器或主機的 IP 地址。例如,當你的容器連接到兩個網絡時,ip address 可顯示哪個接口連接到了哪個網絡。對于簡單的檢查,可以隨時使用 ip address 命令獲取主機的 IP 地址。下面的示例展示了在接口 eth0 上的 Web 層容器的 IP 地址為 172.17.0.2

使用 ip address 顯示 eth0 接口的 IP 地址為 172.17.0.2


12. lsof


lsof 用于列出當前系統(tǒng)打開的文件(list open files)。在某些 Linux 系統(tǒng)中,可能需要使用 lsof 包來安裝lsof。在 Linux 中,幾乎任何和系統(tǒng)的交互都被視為一個文件。因此,如果你的應用程序寫入文件或代開網絡連接,lsof 將會把這個交互映射為一個文件。與 netstat 類似,可使用 lsof 來檢查偵聽端口。例如,如果要檢查 80 端口是否正在被使用,可使用 lsof 來檢查哪個進程正在使用它。下面的示例中,可以看到 httpd (Apache) 在 80 端口上偵聽。還可以使用 lsof 來檢查 httpd 的進程ID,檢查 Web 服務器的二進制文件所在位置(/usr/sbin/httpd)。

Lsof 表明了 httpd 在 80 端口上偵聽。檢查 httpd 的進程ID還可以顯示所有需要運行的文件httpd。

打開文件列表中的打開文件的名稱有助于確定進程的來源,特別是 Apache。


13. df


可以使用 df 顯示空閑的磁盤空間(display free disk space)以排查磁盤空間問題。擋在容器管理器上運行應用程序時,可能會收到一條錯誤信息,提示容器主機上缺少可用空間。雖然磁盤空間應該由系統(tǒng)管理程序來管理和優(yōu)化,你仍可以使用 df 找出目錄中的現(xiàn)有空間并確認是否沒有空間。

Df 顯示每個文件系統(tǒng)的磁盤空間、絕對空間以及其可用性。

-h 選項表示以可讀性較高的方式來顯示信息,上面的例子表示這個主機具有大量的磁盤空間。


14. du


du 命令也是用于查看使用空間的,但是與 df 命令不同的是 du 命令是對文件和目錄磁盤使用的空間的查看,要獲取有關哪些文件在目錄中使用磁盤空間的更多詳細信息,可以使用 du 命令,和 df 命令還是有一些區(qū)別的。例如,你想了解那個日志文件占用 /var/log 目錄最多的空間,可以使用 du 命令加上 -h 選項和用于獲取總大小的 -s 選項。


上面的示例中顯示了 /var/log 下的的最大目錄為 /var/log/audit??梢詫?nbsp;du 和 df 搭配使用,以確定在應用程序的主機上使用的磁盤空間。


15. id


要檢查運行應用程序的用戶,可使用 id 命令來返回用戶身份。id 命令可以顯示真實有效的用戶ID(UID)和組ID(GID)。下面的示例使用 Vagrant 來測試應用程序并隔離其開發(fā)環(huán)境。登錄進 Vagrant 盒子后,如果嘗試安裝 Apache HTTP Server(依賴關系),系統(tǒng)會提示你需要以 root 身份執(zhí)行該命令。要檢查你的用戶ID和組ID,使用 id 命令,會發(fā)現(xiàn)你正在'vagrant'組中以'vagrant'用戶身份運行。


要解決此問題,必須以超級用戶的身份運行該命令,這將提供提升的權限。


16. chmod


chmod 命令用來變更文件或目錄的權限。當你在主機上首次運行應用程序的二進制文件時,可能會收到錯誤提示信息“拒絕訪問”。如 ls 的示例所示,可以用于檢查應用程序二進制文件的權限。


這表明您沒有權限(沒有“x”)來運行二進制文件。chmod 可以修改權限,使的用戶能夠運行二進制文件。

如例子所示,這將更新權限,使其具有可執(zhí)行的權限?,F(xiàn)在當你嘗試執(zhí)行二進制文件時,應用程序不會拋出拒絕訪問的錯誤。當將二進制文件加載到容器時,Chmod 可能很有用。它能保證容器具有合適的權限以執(zhí)行二進制文件。


17. dig / nslookup


dig 命令是常用的域名查詢工具,可以用來測試域名系統(tǒng)工作是否正常。域名服務器(DNS)有助于將 URL 解析為一組應用程序服務器。然而,你會發(fā)現(xiàn)有些 URL 不能被解析,這會導致應用程序的連接問題。例如,假如你嘗試從應用程序的主機訪問你的數(shù)據庫。你收到一個'不能解析'的錯誤。要進行故障排查,你嘗試使用 dig(DNS 查詢工具)或 nslookup(查詢 Internet 域名服務器)來確定應用程序似乎無法解析數(shù)據的原因。


使用 nslookup 顯示無法解析 mydatabase。嘗試使用 dig 解決,但仍是相同的結果。

這些錯誤可能是由許多不同的問題引起的。如果無法調試出根本原因,與系統(tǒng)管理員聯(lián)系以進行更多的調查。對于本地測試,這些問題可能表示你的主機的域名服務器未正確配置。要使用這些命令,需要安裝 BIND Utilities 包。


18. iptables


iptables 用于阻止或允許 Linux 主機上的流量,用于 IP 包過濾器管理,類似于網絡防火墻。此工具可阻止某些應用程序接收或發(fā)送請求。更具體地說,如果您的應用程序難以訪問另一個端點,可能已被 iptables 拒絕流量訪問該端點。例如,假設您的應用程序的主機無法訪問 Opensource.com,您使用 curl 來測試連接。

連接超時。您懷疑某些東西可能會阻塞流量,因此您使用 -S 選項顯示 iptables 規(guī)則。

前三個規(guī)則顯示,默認情況下流量已被丟棄。剩下的規(guī)則表示允許 SSH 和 DNS 流量。在這種情況下,如果需要允許流量到外部端點的規(guī)則,請跟上 sysadmin。如果這是用于本地開發(fā)或測試的主機,可使用 iptables 命令來允許合適的流量。添加允許到主機的流量的規(guī)則時一定要謹慎。


19. sestatus


通常會在企業(yè)管理的應用程序主機上使用 SELinux(一個 Linux 安全模塊)。SELinux 對主機上運行的進程提供最低權限的訪問,防止?jié)撛诘膼阂膺M程訪問系統(tǒng)上的重要文件。某些情況下,應用程序需要訪問特定文件,但可能會發(fā)生錯誤。要檢查 SELinux 是否阻止了應用程序,使用 tail 和 grep 在 /var/log/audit 日志記錄中查找'denied'(被拒絕)的信息。否則,使用 sestatus 來檢查是否啟動了 SELinux。


上面的輸出表示應用程序的主機已啟用 SELinux。在本地開發(fā)環(huán)境中,可以更新 SELinux 使得權限更寬松。


20. history


當你使用大量的命令進行測試和調試時,可能會忘記有用的命令。每個 shell 都有一個 history 命令的變體。它可顯示自會話開始以來使用的命令的歷史記錄??梢允褂?nbsp;history 來記錄用來排除應用程序故障的命令。history 命令用于顯示指定數(shù)目的指令命令,讀取歷史命令文件中的目錄到歷史命令緩沖區(qū)和將歷史命令緩沖區(qū)中的目錄寫入命令文件。

如果希望執(zhí)行之前歷史記錄中的命令,但又不想重新輸入,該怎么辦?使用符號 ! 即可,可以使用符號 ! 執(zhí)行指定序號的歷史命令。例如,要執(zhí)行第 2 個歷史命令,則輸入!2,

在需要重新執(zhí)行的命令的指定編號前添加 ! 即可重新執(zhí)行

這些基本命令能增強排查故障的專業(yè)技能,可檢查為什么應用程序可以在一個開發(fā)環(huán)境中工作,而在另一個開發(fā)環(huán)境中則不可以。許多系統(tǒng)管理員使用這些命令來調試系統(tǒng)問題。了解一些有用的故障排查命令可幫助解決應用程序的問題。


編譯自:https://opensource.com

更多干貨請前往公眾號菜單欄“讀我”->“干貨分享”查看。



本站僅提供存儲服務,所有內容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權內容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Linux命令
程序添加到uClinux的通用方法
多臺電腦共享一臺打印機
設置路由器使飛秋能夠傳文件
Linux如何查看端口是否打開?
Linux查看程序端口占用情況
更多類似文章 >>
生活服務
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服