您應(yīng)該了解的有用Linux命令
在本文中,我將向您介紹一些鮮為人知的 Linux 命令,這些命令將幫助您成為一名更有生產(chǎn)力和效率的開發(fā)人員。
無論您是想提高工作效率、加強(qiáng)系統(tǒng)安全性,還是只是想向其他開發(fā)人員展示您的 Linux 技術(shù),這些命令都能滿足您的需求。
(更|多優(yōu)質(zhì)內(nèi)|容:java567 點 c0m)
Chroot:使用不同的根目錄運行命令
曾經(jīng)想在不同的根目錄中運行命令嗎?chroot 命令可以讓您做到這一點。
Chroot 是“ change root ”的縮寫,允許您使用不同的根目錄運行命令。因此,如果您想在封閉的環(huán)境中測試軟件或構(gòu)建最小的 Linux 系統(tǒng),chroot 是您的朋友。
要使用 chroot,首先您需要設(shè)置一個目錄作為新根。然后運行 chroot 命令,并將該目錄的路徑傳遞給它。例如,要 chroot 到/home/testdir,您可以運行:
?chroot /home/testdir
之后,您運行的任何命令都將相對于/home/testdir directory. 因此您可以安裝軟件包、運行 shell 腳本、編譯程序等等。完成后,只需使用 退出 chroot exit。
Chroot 創(chuàng)建一個隔離的環(huán)境,因此您所做的任何更改都不會影響系統(tǒng)的其余部分。它是用于測試和開發(fā)或緊急恢復(fù)的便捷工具。一旦熟悉了 chroot,您就會發(fā)現(xiàn)它的各種用途。
Crontab:安排任務(wù)自動運行
Crontab 是一個方便的 Linux 命令,可讓您安排任務(wù)在特定時間自動運行。您會想知道沒有它您是如何生活的!
首先,打開 crontab 文件crontab -e。這將打開默認(rèn)的文本編輯器,您可以在其中創(chuàng)建計劃條目,稱為cron jobs。每個條目都有五個時間字段 - 分鐘、小時、月份、月份、星期幾,后面是要運行的命令。
例如,每天午夜0 0 * * * /home/user/daily_script.sh運行daily_script.sh腳本。您還可以在每個工作日上午 8:3030 8 * * 1-5 /home/user/work_script.sh運行work_script.sh 。
Crontab 提供了很大的靈活性。您可以安排作業(yè)運行:
分鐘、每小時、每天、每周、每月或每年
在特定的分鐘/小時
在一周/一個月的某些日子
使用通配符運行,例如每 3 小時或每周一和周四運行一次
可能性是無止境!您可以安排備份腳本、系統(tǒng)維護(hù)、電子郵件報告等等。
df:檢查磁盤空間使用情況
是否曾經(jīng)用完磁盤空間并想知道它們都去了哪里?該df命令是為了提供幫助。df 代表“ disk free ”,它準(zhǔn)確地顯示了 Linux 系統(tǒng)上已使用和可用的空間量。
檢查所有已掛載文件系統(tǒng)的使用情況
要查看所有已安裝驅(qū)動器和分區(qū)的磁盤空間使用情況概述,只需運行:
?df -h
該-h標(biāo)志以人類可讀的格式格式化輸出,以 GB 和 MB 為單位顯示大小,而不是字節(jié)。輸出將顯示:
文件系統(tǒng):驅(qū)動器或分區(qū)名稱
尺寸:總空間
已用空間:當(dāng)前使用的空間
可用:仍然可用的可用空間
Use%:已使用空間的百分比
這可以讓您快速了解哪里有空間以及哪里空間不足。
檢查特定文件系統(tǒng)的使用情況
要檢查特定驅(qū)動器或分區(qū)上的空間,請將其安裝點傳遞給 df:
?df -h /home
這將僅顯示 /home 分區(qū)的使用統(tǒng)計信息。
使用 df 和相關(guān)工具密切關(guān)注磁盤使用情況對于任何 Linux 系統(tǒng)管理員來說都很重要。沒有人愿意意外地耗盡空間。
dmesg:查看內(nèi)核消息
有沒有想過 Linux 系統(tǒng)幕后發(fā)生了什么?dmesg命令可讓您深入了解并查看來自內(nèi)核(操作系統(tǒng)的核心)的消息。
當(dāng) Linux 系統(tǒng)啟動時,內(nèi)核會初始化硬件、加載驅(qū)動程序、啟動服務(wù)并執(zhí)行其他啟動任務(wù)。dmesg命令顯示在此過程中記錄的消息,以便您可以了解發(fā)生了什么。
要查看內(nèi)核消息,只需打開終端并運行 dmesg 命令。當(dāng)您的系統(tǒng)投入使用時,您將看到一頁又一頁的狀態(tài)更新、診斷、錯誤等。瀏覽以檢查是否存在任何問題,或搜索特定關(guān)鍵字,例如 Wi-Fi 適配器或其他硬件組件的名稱。
dmesg輸出還可以提供解決您遇到的任何問題的線索。例如,如果您的網(wǎng)絡(luò)無法正常工作,請檢查 dmesg 中是否有與以太網(wǎng)或無線卡相關(guān)的錯誤消息。您可能會發(fā)現(xiàn)類似“初始化網(wǎng)絡(luò)設(shè)備 eth0 時出錯”的信息,這表明您存在驅(qū)動程序問題。
該dmesg命令對于任何 Linux 系統(tǒng)管理員或高級用戶來說都是一個方便的診斷工具。它提供了對 Linux 系統(tǒng)的內(nèi)部觀察,并可以幫助發(fā)現(xiàn)主要故障和小煩惱的根源。PS:你可以感覺自己像個黑客。
Grep:搜索文件中的模式
grep 命令允許您搜索文件和文本中的模式。當(dāng)您需要在海量數(shù)據(jù)中查找特定內(nèi)容時,它是理想的選擇。
假設(shè)您有一個包含大量信息的日志文件,但您只想查看包含“錯誤”一詞的行。趕緊跑:
?grep error log.txt
這將僅打印 log.txt 中包含單詞“error”的行。
您還可以使用 grep 來搜索模式而不僅僅是單詞。例如,要查找文件中以“A”開頭后跟數(shù)字的所有行,請使用:
?grep ^A[0-9] log.txt
將^A匹配錨定到行的開頭,[0-9] 匹配任何數(shù)字。
Grep 還有許多更高級的功能。您可以使用:
用于復(fù)雜搜索的正則表達(dá)式模式
-i忽略大小寫
-v反轉(zhuǎn)搜索并顯示不匹配的行
-c只獲取匹配數(shù)
-r遞歸搜索目錄中的所有文件
下次您需要搜索文件時,不要手動執(zhí)行 - 讓 grep 為您完成這項工作。
Head/Tail:查看文件的第一部分/最后一部分
您是否曾經(jīng)需要快速檢查長文件的前幾行或最后幾行?head 和 tail 命令非常適合此目的。
默認(rèn)情況下,該head命令顯示文件的前 10 行。您可以使用標(biāo)志指定要查看的行數(shù)-n,例如head -n 5 filename顯示前 5 行。
該tail命令默認(rèn)顯示文件的最后 10 行。再次,使用該-n標(biāo)志指定您想要查看的行數(shù),例如tail -n 20 filename顯示最后 20 行。
當(dāng)您想要快速檢查長文件的開頭或結(jié)尾而無需滾動整個文件時,和head都很有用。tail這些命令的一些其他用途:
檢查日志文件中最近的錯誤或警告
查看電子郵件標(biāo)頭
預(yù)覽配置文件
和更多!
嘗試head一下tail——您會驚訝地發(fā)現(xiàn)它們使您一直在做的任務(wù)變得如此簡單。
PS:列出正在運行的進(jìn)程
Ps 命令允許您查看有關(guān)系統(tǒng)上運行的進(jìn)程的信息。這包括當(dāng)前活動的程序、命令和守護(hù)程序。使用 Ps 是一種快速了解 Linux 系統(tǒng)當(dāng)前正在執(zhí)行的操作以及每個進(jìn)程正在使用的系統(tǒng)資源的概覽的方法。
要查看正在運行的進(jìn)程的基本列表,請輸入:
?ps aux
這將向您展示:
答:所有流程
U:用戶
X:沒有終端的進(jìn)程
輸出將包含如下信息:
USER:進(jìn)程的所有者
PID:進(jìn)程ID
%CPU:CPU 使用率
%MEM:內(nèi)存使用情況
VSZ:虛擬內(nèi)存使用情況
TTY:與進(jìn)程關(guān)聯(lián)的終端
STAT:進(jìn)程狀態(tài)(運行、睡眠、僵尸等。)
START : 進(jìn)程的開始時間
TIME:使用的CPU時間
COMMAND:啟動進(jìn)程的命令
您還可以通過以下方式過濾 Ps 輸出:
用戶名:ps aux | grep root
進(jìn)程名稱:ps aux | grep cron
PID:ps aux | grep 555
Ps 命令允許您快速檢查系統(tǒng)正在執(zhí)行的操作,并確保沒有失控或僵尸進(jìn)程占用資源。對于任何Linux用戶來說,Ps都是必不可少的系統(tǒng)監(jiān)控和故障排除工具。
Rsync:同步文件和文件夾
作為 Linux 用戶,您可能發(fā)現(xiàn)自己需要在位置之間同步文件和文件夾。也許您的桌面上有文件需要傳輸?shù)焦P記本電腦,或者您想將最重要的文件夾備份到外部驅(qū)動器。rsync 命令使同步和備份文件變得輕而易舉。
Rsync 是一種快速且多功能的文件復(fù)制工具。它可以在本地或通過 SSH 遠(yuǎn)程復(fù)制和同步文件和文件夾。它足夠智能,僅傳輸兩個位置之間的差異,從而節(jié)省時間和帶寬。
要使用 rsync,請打開終端并輸入命令:
?rsync [options] source destination
源是您要復(fù)制的文件的位置。這可能是桌面或遠(yuǎn)程服務(wù)器上的文件夾。
目標(biāo)是您要復(fù)制文件的位置。這可能是安裝在您的系統(tǒng)上的外部驅(qū)動器或另一臺服務(wù)器上的文件夾。
選項允許您指定以下項目:
-a:存檔模式,保留權(quán)限、時間戳、組、所有者和符號鏈接
-v:詳細(xì)輸出,以便您可以看到正在復(fù)制的內(nèi)容
-z:壓縮以加快慢速網(wǎng)絡(luò)上的傳輸速度
-h:人類可讀的大?。ɡ?K、234M、2G)
Rsync 是任何 Linux 用戶必備的工具。一旦掌握了它的竅門,您就可以自信地同步和備份文件。
如需廣泛閱讀,請參閱RSync 示例 – Rsync 選項和如何通過 SSH 復(fù)制文件。
強(qiáng)大的管道查看器 (pv)
曾經(jīng)想通過管道查看數(shù)據(jù)的進(jìn)展情況嗎?該pv命令允許您執(zhí)行此操作。它是一個管道查看器,可向您顯示數(shù)據(jù)通過管道的進(jìn)度。
假設(shè)您有一個要壓縮的大文件,例如視頻或備份文件。當(dāng) gzip 執(zhí)行任務(wù)時,您不必盯著閃爍的光標(biāo),而是可以使用 pv 查看進(jìn)度。只需通過 pv 傳輸數(shù)據(jù),然后傳輸?shù)?gzip:
?cat mylargefile.mp4 | pv | gzip > mylargefile.mp4.gz
pv將顯示壓縮數(shù)據(jù)時的吞吐量和預(yù)計剩余時間。這是獲取長時間運行的命令反饋的簡單方法。
您還可以用來pv查看網(wǎng)絡(luò)上數(shù)據(jù)的吞吐量和傳輸速率。例如,當(dāng)使用scp或復(fù)制文件時rsync,添加pv到管道:
?rsync -avz myfiles user@host:/backup | pv
現(xiàn)在您將看到通過網(wǎng)絡(luò)復(fù)制文件的進(jìn)度。pv 為您提供以下信息:
傳輸?shù)淖止?jié)數(shù)
傳輸率
預(yù)計到達(dá)時間
進(jìn)步
和更多
它是一個方便的工具,可以讓您更深入地了解那些長時間運行的終端命令中發(fā)生的情況。
mtr:網(wǎng)絡(luò)診斷
您是否曾經(jīng)需要診斷網(wǎng)絡(luò)問題但無法使用昂貴的工具?mtr 是一個簡單但功能強(qiáng)大的 Linux 網(wǎng)絡(luò)診斷工具。它將“traceroute”和“ping”程序的功能結(jié)合在一個網(wǎng)絡(luò)診斷工具中。
mtr發(fā)送ICMPmtr回顯請求以測試運行的主機(jī)與用戶指定的目標(biāo)主機(jī)之間的網(wǎng)絡(luò)連接。它打印路徑上每個路由器的響應(yīng)時間和數(shù)據(jù)包丟失統(tǒng)計信息。這使您可以快速查明網(wǎng)絡(luò)問題。
要使用 mtr,請打開終端并輸入:
?mtr [domain name or IP address]
例如,要跟蹤到 google.com 的路由,請輸入:
?mtr google.com
mtr 將開始追蹤路線并打印實時更新的結(jié)果。它將顯示:
路徑上每個路由器的 IP 地址和主機(jī)名
每個路由器的丟包百分比
每個路由器的響應(yīng)時間(以毫秒為單位)
輸出將繼續(xù)更新,直到您按 Ctrl+C 停止跟蹤。
mtr 對于任何 Linux 網(wǎng)絡(luò)管理員來說都是一個簡單但有用的工具。當(dāng)網(wǎng)絡(luò)出現(xiàn)故障時,它可以幫助您識別延遲或數(shù)據(jù)包丟失的根源,從而節(jié)省數(shù)小時的故障排除時間。
jq:解析 JSON
您是否曾經(jīng)遇到過混亂的 JSON 文件并希望有一種簡單的方法來解析它?jq 是一個命令行工具,可讓您輕松過濾和分析 JSON 數(shù)據(jù)。
jq 的工作原理就像一個過濾器。您將 JSON 數(shù)據(jù)傳遞到 stdin,然后將過濾/轉(zhuǎn)換后的數(shù)據(jù)傳遞到 stdout。
例如,假設(shè)您有一個data.json使用對象數(shù)組調(diào)用的 JSON 文件。您可以過濾它以僅顯示name等于的對象,John如下所示:
?cat data.json | jq '.[] | select(.name == "John")'
這只會將 John 對象打印到控制臺。
jq 支持的過濾器遠(yuǎn)不止select(),這里有一些更有用的過濾器:
.key:從對象中訪問密鑰
.[10:]:顯示從索引10開始的元素
.[10:15]:顯示索引10到15的元素
length:打印數(shù)組的長度
map(.):對數(shù)組的每個元素應(yīng)用過濾器
group_by(.key):按鍵對對象進(jìn)行分組
使用 jq,您可以直接從命令行以幾乎任何您想要的方式操作 JSON 數(shù)據(jù)。jq可能看起來小眾,但 JSON 在網(wǎng)絡(luò)上隨處可見,因此能夠有效地分析和轉(zhuǎn)換它是一項有用的技能。
tac:反向查看配置文件
您是否曾經(jīng)在編輯配置文件并保存更改時犯了一個錯誤,卻發(fā)現(xiàn)您更喜歡以前的版本?該tac命令允許您快速反向查看配置文件,以便您可以看到文件在編輯之前的樣子。
Tac 只是以相反的順序逐行打印文件。要查看反向調(diào)用的文件config.txt,請運行:
?tac config.txt
這將首先打印文件的最后一行,然后是倒數(shù)第二行,依此類推,直到到達(dá)第一行。
當(dāng)您想要快速反向查看日志文件以首先查看最新條目時,請使用 tac。
通過命令行編輯配置文件時,Tac 也很有用。如果您犯了錯誤,請運行 tac 查看文件之前的樣子,以便您可以恢復(fù)更改。
Tac 是 Linux 工具包中一個簡單但有用的實用程序。
perf:分析CPU性能
如果您想知道為什么 Linux 系統(tǒng)隨著時間的推移變得越來越慢,perf 命令可以幫助您找到答案。Perf 是 Linux 中的一個分析工具,可以分析 CPU 的性能以幫助識別任何瓶頸。
首先,運行基本perf list命令來查看您可以監(jiān)視的事件列表。有數(shù)百個!對于分析 CPU 性能最有用的一些參數(shù)包括:
cpu-clock:測量CPU時鐘周期
task-clock:測量任務(wù)執(zhí)行所花費的時間
cache-misses:統(tǒng)計緩存未命中次數(shù)
branch-misses:統(tǒng)計分支預(yù)測未命中的次數(shù)
選擇您要監(jiān)視的事件,然后運行如下命令:
?perf stat -e cpu-clock sleep 5
這將運行命令并在運行時sleep 5測量事件。cpu-clock然后,Perf 將為您提供該事件的統(tǒng)計數(shù)據(jù)摘要。
要獲取更詳細(xì)的分析信息,請使用該perf record命令。例如,要分析名為 的腳本script.sh,請運行:
?perf record script.sh
這將運行腳本并記錄分析數(shù)據(jù)。然后您可以使用以下命令查看結(jié)果:
?perf report
這將為您提供交互式報告來分析結(jié)果。你會看到類似這樣的東西:
每個功能所花費的時間百分比
每個函數(shù)實際花費的時間
每個函數(shù)的調(diào)用次數(shù)
使用 perf,您擁有了一個優(yōu)化 Linux 系統(tǒng)性能的強(qiáng)大工具。Perf 確實是一個令人驚嘆的(如果未得到充分利用)工具。
結(jié)論
現(xiàn)在您已經(jīng)掌握了一些有用的 Linux 命令,它們會讓您立即感覺自己像個高級用戶。
掌握這些技巧后,您將像專業(yè)人士一樣在 Linux 上馳騁。下次當(dāng)你遇到困難或沮喪時,請嘗試其中一個。您可能會對自己所取得的成就感到驚訝。
如果您知道如何使用 Linux 語言,Linux 就是一個非常強(qiáng)大的操作系統(tǒng)。將此視為您變得流利的入門指南。