在撰寫本文時,Linux在桌上型電腦上的全球市場份額為2.68%,但超過90%的雲基礎設施和託管服務都在該作業系統中執行。僅出於這個原因,熟悉流行的Linux命令就至關重要。
根據StackOverflow調查,Linux是專業開發人員使用最多的作業系統,擁有令人印象深刻的55.9%的市場份額。這不僅僅是巧合。Linux是免費的、開源的,比競爭對手具有更好的安全性,並且擁有強大的命令列,使開發人員和高階使用者更加高效。
Linux 的核心重點從來都不是它的使用者介面。它的設計初衷是讓你通過命令列完全控制作業系統。這可能會讓 Linux 初學者望而生畏–而成千上萬的可用命令只會讓這一切變得更加困難。
在本文中,我們將介紹 100 +最有用的 Linux 命令。作為 Linux 使用者,只需學習其中一小部分命令,就能幫助你提高工作效率。
什麼是Linux命令?
Linux命令是在命令列上執行的程式或實用程式。命令列是一個介面,它接受文字行並將其處理為計算機的指令。
任何圖形使用者介面(GUI)都只是命令列程式的抽象。例如,當您通過單擊“X”關閉視窗時,該操作後面會執行一個命令。
標誌(flag)是我們可以向您執行的命令傳遞選項的一種方式。大多數Linux命令都有一個幫助頁面,我們可以使用-h
標記呼叫該頁面。大多數情況下,標誌是可選的。
argument或parameter是我們給命令的輸入,以便它可以正常執行。在大多數情況下,引數是一個檔案路徑,但它可以是您在終端中鍵入的任何內容。
可以使用連字元 (-
) 和雙連字元 (--
)呼叫標誌,而引數的執行取決於將它們傳遞給函式的順序。
最常用的Linux命令
在開始使用最常用的Linux命令之前,請確保啟動終端(terminal)。在大多數Linux發行版中,您可以使用Ctrl + Alt + T來執行此操作。如果這不起作用,請在應用程式面板中搜尋“terminal”
Linux終端模擬器。
現在,讓我們一起來了解100+最常用的Linux命令。其中許多選項可以串到它們,所以請務必檢視命令手冊.
Linux 檔案管理命令
1. ls
– 列出目錄內容
ls
可能是每個Linux使用者在其終端中鍵入的第一個命令。它允許您列出您想要的目錄的內容(預設情況下是當前目錄),包括檔案和其他巢狀目錄。
ls
它有很多選擇,所以最好使用 --help
來獲得一些幫助。此標誌返回所有可以與 ls一起使用的flags引數。
語法:
ls [options] [directory]
最有用的 ls
選項包括
-l
– 以長格式顯示結果,顯示每個檔案和目錄的許可權、所有權、大小和修改日期等額外詳細資訊。-a
– 除非隱藏專案外,顯示以.開頭的隱藏檔案和目錄。-R
– 遞迴列出所有子目錄內容,無限遞迴到子資料夾。-S
– 按檔案大小排序,最大的優先。-t
– 按時間戳排序,最新的排在前面。
例如,要著色 ls
命令的輸出,您可以使用以下命令:
ls --color=auto
ls著色命令
現在 ls
命令輸出已著色,您可以欣賞目錄和檔案之間的區別。
但是,用彩色標誌打字是低效的:這就是我們使用命令 ls
alias
的原因。
2. cd
– 更改目錄
cd
命令與ls
都非常流行。它指的是“更改目錄”,顧名思義,它會將您切換到您試圖訪問的目錄。
當你單獨執行 cd
命令時,它會返回到主目錄。您也可以通過特定路徑進行更改。例如
cd /usr/local
– 更改到 /usr/local 目錄。cd ..
– 上移一級至父級目錄。cd ~/pictures
– 切換到主目錄中的 pictures 資料夾。
語法:
cd [directory]
例如,如果您在Documents目錄中,並且試圖訪問其名為Videos的子資料夾之一,則可以通過鍵入以下內容來輸入:
cd Videos
您還可以提供資料夾的絕對路徑:
cd /home/wbolt/Documents/Videos
在使用cd
命令時,有一些技巧可以為您節省大量時間:
1. 進入home資料夾
cd
2. 向上移動一個級別
cd ..
3. 返回上一個目錄
cd -
3.mkdir
– 建立新目錄
要在shell中建立資料夾,可以使用mkdir
命令。只需指定新資料夾的名稱,確保它不存在,然後就可以開始了。
語法:
mkdir [options] <directory>
這將在當前工作目錄下建立一個名為 “newproject” 的目錄。
一些有用的 mkdir
選項:
-p
– 根據需要遞迴建立父目錄。-v
– 顯示已建立目錄的詳細輸出。
例如,要建立一個儲存所有影象的目錄,只需鍵入:
mkdir images/
要使用簡單命令建立子目錄,請使用parent(-p
)標誌:
mkdir -p movies/2004/
4. rmdir
– 刪除目錄
要刪除空目錄,請使用 rmdir
命令。請注意,rmdir
只能刪除空目錄,我們需要使用 rm
命令來刪除非空目錄。
語法:
rmdir [options] <directory>
rmdir
的一些選項包括:
-v
– 刪除目錄時的冗餘輸出。-p
– 根據需要遞迴刪除父目錄。
例如:
rmdir -v ~/project/code
這將刪除 “project” 下的 “code” 子目錄,同時顯示詳細輸出。
5.touch
– 建立新的空檔案
touch
命令允許您更新指定檔案的訪問和修改時間。
語法:
touch [options] filename
一些有用的 touch
選項包括
-c
– 如果檔案已經存在,則不建立該檔案。這樣可以避免意外覆蓋現有檔案。-m
– 更新現有檔案的時間戳,而不是建立新檔案。這可用於更改修改時間。
例如,我有一箇舊檔案,上次修改是在4月12日:
舊日期。
要將其修改日期更改為當前時間,我們需要使用-m
標誌:
touch -m old_file
現在日期與今天的日期相符(開始編寫本文時的日期為8月8日)。
新日期
儘管如此,大多數情況下,您不會使用touch
來修改檔案日期,而是建立新的空檔案:
touch new_file_name
6. cp
– 複製檔案和目錄
直接在Linux終端上覆制檔案和資料夾非常容易,有時它可以取代傳統的檔案管理器。
語法:
cp [options] source destination
一些有用的 cp 選項:
-r
– 以遞迴方式複製目錄,向下複製到子目錄,同時複製其內容。複製目錄時必須使用。-i
– 在覆蓋目的地的任何現有檔案前提示。它可以防止意外覆蓋資料。-v
– 在複製過程中顯示每個檔案的詳細內容。有助於確認到底複製了什麼。
要使用cp
命令,只需將其與原始檔和目標檔案一起鍵入即可:
cp file_to_copy.txt new_file.txt
還可以使用遞迴標誌複製整個目錄:
cp -r dir_to_copy/ new_copy_dir/
請記住,在Linux中,資料夾以正斜槓 (/
)結尾。
7. mv
– 移動或重新命名檔案和目錄
您可以使用mv
命令在檔案系統中移動(或重新命名)檔案和目錄。
語法:
mv [options] source destination
有用的 mv
選項:
-i
– 在覆蓋目標位置的任何現有檔案前提示。這樣可以防止意外覆蓋資料。-v
– 在移動檔案或目錄時,生成顯示每個檔案或目錄的詳細輸出。這有助於準確確認移動的內容。
若要使用此命令,請將其名稱與原始檔和目標檔案一起鍵入:
mv source_file destination_folder/ mv command_list.txt commands/
要使用絕對路徑,請使用:
mv /home/wbolt/BestMoviesOfAllTime ./
…where ./
是您當前所在的目錄。
您還可以使用mv
重新命名檔案,同時將其保留在同一目錄中:
mv old_file.txt new_named_file.txt
8. rm
– 移除檔案和目錄
既然您已經知道了如何複製檔案,那麼瞭解如何刪除它們將很有幫助。
您可以使用rm
命令刪除檔案和目錄。但在使用時要小心,因為用這種方法恢復刪除的檔案非常困難(但並非不可能)。
語法:
rm [options] name
有用的 rm 選項:
-r
– 遞迴刪除目錄,包括目錄中的所有內容。這在刪除目錄時很有必要。-f
– 強制刪除並抑制所有確認提示。這是一條危險的命令,因為檔案刪除後無法恢復!-i
– 在刪除每個檔案或目錄前提示確認,以防意外刪除。
要刪除常規檔案,請鍵入:
rm file_to_copy.txt
如果要刪除空目錄,可以使用遞迴(-r
)標誌:
rm -r dir_to_remove/
另一方面,要刪除包含內容的目錄,需要使用force(-f)和recursive標誌:
rm -rf dir_with_content_to_remove/
警告:誤用這兩個標誌,你可能會抹掉一整天的工作!
9. find
– 在目錄層次結構中搜尋檔案
find
命令會遞迴搜尋目錄中符合給定條件的檔案。
語法:
find [path] [criteria]
一些有用的 find
標準選項包括
-type f
– 僅搜尋普通檔案,省略目錄。-mtime +30
– 搜尋 30 天前修改的檔案。-user jane
– 搜尋屬於使用者 “jane” 的檔案。
例子:
find . -type f -mtime +30
這將查詢當前目錄(用圓點表示)下所有超過 30 天的常規檔案。
查詢命令允許根據各種高階條件搜尋檔案,如名稱、大小、許可權、時間戳、所有權等。
10. du
– 估算檔案空間使用情況
du
命令用於測量指定目錄的檔案空間使用情況。在不帶選項的情況下,它會顯示當前工作目錄的磁碟使用情況。
語法:
du [options] [path]
實用的 du
選項:
-h
– 以人類可讀格式顯示檔案大小,如 K 表示千位元組,而不是位元組數。這樣更容易解析。-s
– 只顯示目錄的總大小,而不是列出每個子目錄和檔案。適合彙總。-a
– 除顯示總數外,還顯示單個檔案的大小。有助於識別大檔案。
例子:
du -sh pictures
這將列印出 “pictures” 目錄的總大小,可供使用者閱讀。
du
命令有助於分析目錄樹的磁碟使用情況,並找出佔用過多空間的檔案。
Linux 搜尋和過濾命令
現在,讓我們來探索一下能讓你在 Linux 命令列中直接搜尋、過濾和處理文字的命令。
11. grep
命令 – 使用條件匹配搜尋文字
Grep是處理文字檔案的最強大的工具之一。
語法:
grep [options] pattern [files]
一些有用的 grep
選項:
-i
– 忽略條件中的大小寫區別-R
– 遞迴搜尋子目錄-c
– 只列印匹配行數-v
– 反轉匹配,列印不匹配的行
它搜尋與正規表示式匹配的行並列印它們,例如下面命令將搜尋 long.txt 檔案中的 “linux”一詞,忽略大小寫敏感性。
grep "linux" long.txt
grep命令.
您可以使用-c
標誌計算與給定條件匹配的次數:
grep -c "linux" long.txt # 2
12. awk
– 條件掃描和處理語言
awk
命令允許根據指定的條件和操作進行更高階的文字處理。它逐行操作,將每行分割成欄位。
語法:
awk 'pattern { action }' input-file
例子:
awk '/error/ {print $1}' /var/log/syslog
這將列印任何包含 “error” 的行的第一個欄位。awk 還可以使用 NR
(記錄數)和 NF
(欄位數)等內建變數。
awk 高階功能包括:
- 欄位數學計算
- 條件語句
- 用於處理字串、數字和日期的內建函式
- 輸出格式控制
awk
的功能非常強大,因為它是一種獨立的程式語言,作為 Linux 命令,它可以給你很多控制權。
13. sed
– 用於過濾和轉換文字的流編輯器
sed
命令允許過濾和轉換文字。它可以執行搜尋/替換、刪除、移位等操作。不過,與 awk
不同的是,sed
是為按指令逐行編輯而設計的。
語法:
sed options 'commands' input-file
例子:
sed 's/foo/bar/' file.txt
這會將 file.txt 中的 “foo” 替換為 “bar”。
一些有用的 sed 命令:
s
– 搜尋和替換文字/pattern/d
– 刪除與模式匹配的行10,20d
– 刪除第 10-20 行1,3!d
– 刪除除 1-3 行以外的所有行
sed
非常適合批量查詢/替換、選擇性刪除行和其他文字流編輯操作。
14. sort
– 對文字檔案行進行排序
當你處理大量文字或資料,甚至是從其他命令輸出的大量內容時,排序是使事情易於管理的好方法。sort
命令將按字母或數字對文字檔案的行進行排序。
語法:
sort [options] [file]
有用的 sort
選項:
-n
– 按數字而不是字母排序-r
– 反轉排序順序-k
– 根據特定欄位或列排序
例子:
sort -n grades.txt
這將對 grades.txt 中的內容進行數字排序。排序便於對檔案內容進行排序,使輸出或分析更具可讀性。
15. uniq
– 報告或省略重複行
uniq
命令可從輸入中過濾重複的相鄰行。該命令通常與排序命令一起使用。
語法:
uniq [options] [input]
選項:
-c
– 以出現次數作為唯一行的字首。-d
– 只顯示重複行,不顯示唯一行。
例子:
sort data.txt | uniq
這將刪除排序後 data.txt 中的任何重複行。uniq
可讓你控制重複文字的過濾。
16. diff
– 逐行比較檔案
diff
命令逐行比較兩個檔案並列印差異。它通常用於顯示檔案版本之間的變化。語法
語法:
diff [options] file1 file2
選項:
-b
– 忽略空白處的更改。-B
– 在行內顯示差異,高亮顯示更改。-u
– 用三行上下文輸出差異。
例子:
diff original.txt updated.txt
這將輸出 original.txt 和 updated.txt 之間的不同行。 diff
對於比較文字檔案和原始碼的修訂版本非常有用。
17. wc
– 列印行數、字數和位元組數
wc
(字數統計)命令列印檔案中的行數、字數和位元組數。
語法:
wc [options] [file]
選項:
-l
– 只列印行計數。-w
– 只列印字數。-c
– 僅列印位元組數。
例子:
wc report.txt
該命令將列印 report.txt 中的行數、字數和位元組數。
Linux 重定向命令
重定向命令用於控制 Linux 中的輸入和輸出源,讓你可以向檔案傳送和追加輸出流、從檔案獲取輸入、連線多個命令以及將輸出分割到多個目的地。
18. >
– 重定向標準輸出
重定向操作符 >
將命令的標準輸出流重定向到檔案,而不是列印到終端。檔案中的任何現有內容都將被覆蓋。
例子:
ls -l /home > homelist.txt
這將執行 ls -l
,列出 /home 目錄的內容。
然後,” >
“符號將捕獲標準輸出並寫入 homelist.txt,覆蓋現有檔案內容,而不是將輸出列印到終端。
重定向標準輸出有助於將命令結果儲存到檔案中,以便儲存、除錯或將命令串聯起來。
19. >>
– 追加標準輸出
>>
操作符將命令的標準輸出追加到檔案中,而不覆蓋現有內容。
例子:
tail /var/log/syslog >> logfile.txt
這將把 syslog 日誌檔案的最後 10 行追加到 logfile.txt 的末尾。與 >
不同, >>
新增輸出時不會擦除當前 logfile.txt 的內容。
追加有助於將命令輸出收集到一處,而不會丟失現有資料。
20. <
– 重定向標準輸入
<
重定向操作符將檔案內容作為標準輸入送入命令,而不是從鍵盤輸入。
例子:
wc -l < myfile.txt
該命令將 myfile.txt 的內容作為輸入傳送給 wc 命令,wc 命令將計算該檔案的行數,而不是等待鍵盤輸入。
重定向輸入對於批量處理檔案和自動化工作流程非常有用。
21. |
– 管道輸出到另一條命令
管道 |
操作符將一條命令的輸出作為輸入傳送到另一條命令,將它們串聯起來。
例子:
ls -l | less
該命令將 ls -l
的輸出匯入 less 命令,從而可以滾動瀏覽檔案列表。
管道通常用於將命令串聯起來,其中一個命令的輸出為另一個命令的輸入提供資訊。這樣就能從較小的單用途程式中構建出複雜的操作。
22. tee
– 從標準輸入讀取並寫入標準輸出和檔案
tee
命令將標準輸入分為兩個流。
它將輸入寫入標準輸出(顯示主命令的輸出),同時將副本儲存到檔案中。
例子:
cat file.txt | tee copy.txt
這將向終端顯示 file.txt 的內容,同時將其寫入 copy.txt。
tee
與重定向不同,在重定向時,只有開啟輸出重定向到的檔案才能看到輸出。
Linux 歸檔命令
歸檔命令允許你將多個檔案和目錄捆綁到壓縮歸檔檔案中,以方便移植和儲存。Linux 中常見的壓縮包格式包括 .tar、.gz 和 .zip。
23. tar
– 從歸檔檔案中儲存和提取檔案
tar
命令可幫助你處理磁帶歸檔檔案(.tar)。它可以幫助你將多個檔案和目錄捆綁到一個壓縮的 .tar 檔案中。
語法:
tar [options] filename
有用的 tar 選項:
-c
– 建立一個新的 .tar 壓縮檔案。-x
– 從 .tar 壓縮檔案中提取檔案。-f
– 指定存檔檔名,而不是 stdin/stdout。-v
– 顯示歸檔檔案的詳細輸出。-z
– 使用 gzip 壓縮或解壓縮壓縮包。
例子:
tar -cvzf images.tar.gz /home/user/images
這會建立一個名為 images.tar.gz 的 gzip 壓縮檔案,其中包含 /home/user/images 資料夾。
24. gzip
– 壓縮或擴充套件檔案
gzip 命令使用 LZ77 編碼壓縮檔案,以減小儲存或傳輸檔案的大小。使用 gzip,你可以處理 .gz 檔案。
語法:
gzip [options] filename
有用的 gzip 選項:
-c
– 將輸出寫入 stdout,而不是檔案。-d
– 解壓縮檔案,而不是壓縮檔案。-r
– 對目錄進行遞迴壓縮。
例子:
gzip -cr documents/
上述命令遞迴壓縮 documents 資料夾並輸出到 stdout。
25. gunzip
– 解壓縮檔案
gunzip
命令用於解壓縮 .gz 檔案。
語法:
gunzip filename.gz
例子:
gunzip documents.tar.gz
上述命令將提取 documents.tar.gz 未壓縮的原始內容。
26. zip
– 打包和壓縮檔案
zip
命令用於建立包含壓縮檔案內容的 .zip 歸檔檔案。
語法:
zip [options] archive.zip filenames
有用的 zip 選項:
-r
– 遞迴壓縮一個目錄。-e
– 使用密碼加密內容。
例子:
zip -re images.zip pictures
將圖片資料夾加密並壓縮為 images.zip。
27. unzip
– 從 ZIP 檔案中提取檔案
與 gunzip
類似, unzip
命令可從 .zip 壓縮檔案中提取和解壓縮檔案。
unzip
命令允許您從終端提取.zip檔案的內容。同樣,預設情況下可能不會安裝此軟體包,因此請確保使用package管理器安裝它。
語法:
unzip archive.zip
例子:
unzip images.zip
上述示例命令提取了當前目錄下 images.zip 中的所有檔案。
Linux 檔案傳輸命令
檔案傳輸命令允許你通過網路在系統間移動檔案。這對於將檔案複製到遠端伺服器或從網際網路下載內容非常有用。
28. scp
– 在主機間安全複製檔案
scp
(安全複製)命令通過 SSH 連線在主機間複製檔案。所有資料傳輸都經過加密,以確保安全。
scp 語法可將檔案從源路徑複製到定義為 user@host 的目的地:
scp source user@host:destination
例子:
scp image.jpg user@server:/uploads/
這樣就能以 user 身份將 image.jpg 複製到 server 上的 /uploads 資料夾。
scp
的工作原理與 cp
命令類似,但用於遠端檔案傳輸。它利用 SSH(Secure Shell)進行資料傳輸,提供加密功能,確保不會在網路上洩露密碼等敏感資料。身份驗證通常使用 SSH 金鑰,但也可以使用密碼。檔案既可以複製到遠端主機,也可以從遠端主機複製。
29. rsync
– 在主機間同步檔案
rsync
工具可在兩個位置之間同步檔案,同時使用 delta 編碼儘量減少資料傳輸。這使得同步大型目錄樹的速度更快。
rsync 語法同步原始檔到目標檔案:
rsync [options] source destination
例子:
rsync -ahv ~/documents user@server:/backups/
上述示例命令將 documents 資料夾遞迴同步到 server:/backups/,並顯示冗長的、人類可讀的輸出。
有用的 rsync 選項:
-a
– 歸檔模式遞迴同步並保留許可權、時間等。-h
– 人類可讀輸出。-v
– 冗餘輸出。
rsync
是將檔案和資料夾同步到遠端系統並保持分散備份和安全的理想工具。
30. sftp
– 安全檔案傳輸程式
sftp
程式通過 SSH 提供互動式檔案傳輸,與普通 FTP 類似,但已加密。它可以在遠端系統之間傳輸檔案。
sftp 連線到主機,然後接受以下命令:
sftp user@host
get remotefile localfile
put localfile remotefile
這樣就能從伺服器上獲取 remotefile
,並將 localfile
複製到遠端主機上。
sftp
有一個互動式 shell,用於瀏覽遠端檔案系統、傳輸檔案和目錄以及管理許可權和屬性。
31. wget
命令 – 從網上檢索檔案
wget
(World Wide Web get)是從網際網路檢索內容的實用工具。它擁有最大的flags之一。
有用的 wget 選項:
-c
– 恢復中斷的下載。-r
– 遞迴下載。-O
– 儲存到特定檔名。
wget
是編寫自動下載指令碼和映象網站的理想工具。
以下是您如何從GitHub獲取一個Python檔案:
wget https://raw.githubusercontent.com/DaniDiazTech/Object-Oriented-Programming-in-Python/main/object_oriented_programming/cookies.py
32. curl
– 從伺服器傳輸資料或向伺服器傳輸資料
curl
命令可使用支援的協議與網路伺服器之間傳輸資料。這包括 REST、HTTP、FTP 等。
例子:
curl -L https://example.com
上述命令從 HTTPS URL 獲取資料並輸出。
有用的 curl 選項:
-o
– 將輸出寫入檔案。-I
– 僅顯示響應頭。-L
– 跟蹤重定向。
curl
旨在以程式設計方式跨網路傳輸資料。
Linux 檔案許可權命令
檔案許可權命令允許你修改使用者的訪問許可權。這包括設定讀/寫/執行許可權、更改所有權和預設檔案模式。
33. chmod
命令 – 更改檔案模式或訪問許可權
chmod
命令允許您快速更改檔案的模式(許可權)。它有很多可用的選項。
檔案的基本許可權包括:
- r (只讀)
- w (寫入)
- x (執行)
有三組許可權–使用者、組和公共。許可權使用 0 至 7 的數字模式設定:
- 7 – 讀取、寫入和執行。
- 6 – 讀和寫。
- 4 – 只讀。
- 0 – 無許可權。
這將所有者許可權設為 7 (rwx),組許可權設為 5 (r-x),公共許可權設為 5 (r-x)。也可以用符號引用使用者和組:
chmod g+w file.txt
g+w
語法為檔案新增組寫入許可權。
設定適當的檔案和目錄許可權對於 Linux 安全和控制訪問至關重要。
chmod
最常見的用例之一是使檔案可由使用者執行。為此,請鍵入chmod
和標誌+x
,然後鍵入要修改其許可權的檔案:
chmod +x script
您可以使用它使指令碼可執行,從而允許您使用./
符號直接執行它們。
34. chown
– 更改檔案所有者和組
chown
命令可更改檔案或目錄的所有權。所有權包括兩個部分–所有者使用者和所屬組。
例如:
chown john:developers file.txt
上述示例命令將所有者使用者設定為 “john”,所有者組設定為 “developers”。
只有 root 超級使用者賬戶才能使用 chown
更改檔案所有者。它可以根據需要修改所有者和組來解決許可權問題。
35. umask
– 設定預設檔案許可權
umask
命令控制給新建立檔案的預設許可權。它將八進位制掩碼作為輸入,檔案從 666 減去,目錄從 777 減去。
例子:
umask 007
新檔案的預設許可權為 750,而不是 666;新目錄的預設許可權為 700,而不是 777。
設定 umask
可以讓你配置預設檔案許可權,而不是依賴系統預設值。umask
命令對於限制新檔案的許可權非常有用,而不需要別人手動新增限制。
Linux 程序管理命令
這些命令允許你檢視、監視和控制 Linux 系統上執行的程序。這對確定資源使用情況和停止行為不端的程式非常有用。
36. ps
– 報告當前程序概覽
使用ps
,您可以檢視當前shell會話正在執行的程序。它列印有關正在執行的程式的有用資訊,如程序ID、TTY(電傳打字機)、時間和命令名。
ps
ps命令.
例子:
ps aux
這將顯示以所有使用者身份執行的每個程序,以及 CPU 和記憶體使用情況等其他詳細資訊。
一些有用的 ps 選項:
aux
– 顯示所有使用者的程序--forest
– 顯示父程序/子程序樹
ps
可以讓你瞭解系統上當前正在執行的程序。
如果您想要更具互動性的內容,可以使用htop
。
37. top
– 顯示 Linux 程序
top
命令顯示實時 Linux 程序資訊,包括 PID、使用者、CPU %、記憶體使用率、執行時間等。與 ps
不同的是,它會動態更新顯示內容,以反映當前的使用情況。
例子:
top -u mysql
上述命令只監控 “mysql” 使用者的程序。它對識別資源密集型程式很有幫助。
38. htop
– 互動式程序瀏覽器
htop
是一種互動式流程檢視器,可讓您直接從終端管理計算機的資源。在大多數情況下,預設情況下它並沒有安裝,所以請確保在下載頁面上閱讀更多關於它的資訊。
htop
“htop” 互動介面.
只需在命令列中輸入 htop
,即可檢視程序。
與 top
相比, htop
的使用者介面元素得到了增強,增加了顏色、滾動和滑鼠支援,導航更加方便。非常適合調查程序。
39. kill
– 向程序傳送訊號
當一個程式沒有響應,並且你不能用任何方法關閉它時,這是很煩人的。幸運的是,kill
命令解決了這類問題。
簡單地說,kill
向終止它的程序傳送一個TERM或kill訊號。
您可以通過輸入PID(程序ID)或程式的二進位制名稱來終止程序:
kill 533494 kill firefox
又如:
kill -15 12345
上述命令傳送 SIGTERM (15) 訊號,以優雅地停止 PID 為 12345 的程序。
使用此命令時要小心-使用kill
時,可能會意外刪除您正在執行的工作。
40. pkill
– 根據名稱向程序傳送訊號
pkill
命令通過名稱而不是 PID 來殺死程序。這比先找到 PID 更容易。
例子:
pkill -9 firefox
這將強制停止所有帶有 SIGKILL (9) 的 Firefox 程序。pkill
通過匹配名稱、使用者和其他條件而非 PID 來鎖定程序。
41. nohup
– 執行不受掛起影響的命令
nohup
命令可執行不受掛起影響的程序,因此即使登出或斷開連線,它們也能繼續執行。
例子:
nohup python script.py &
上述示例命令將在後臺啟動分離的 script.py,並且不會被掛起。 nohup
通常用於啟動持久的後臺守護程序和服務。
Linux 效能監控命令
這些命令提供了寶貴的系統效能統計資料,有助於分析資源利用率、識別瓶頸和優化效率。
42. vmstat
– 報告虛擬記憶體統計資料
vmstat
命令可列印有關記憶體、交換、I/O 和 CPU 活動的詳細報告。其中包括已用/可用記憶體、交換入/出、磁碟塊讀/寫和 CPU 程序/閒置時間等指標。
例子:
vmstat 5
其他有用的 vmstat 選項:
-a
– 顯示活動和非活動記憶體-s
– 顯示事件計數器和記憶體統計資訊-S
– 以 KB 而不是塊為單位輸出5
– 每 5 秒重新整理一次輸出。
上面的示例每 5 秒輸出一次記憶體和 CPU 資料,直到中斷為止,這對監控實時系統效能非常有用。
43. iostat
– 報告 CPU 和 I/O 統計資料
iostat
命令監控並顯示 CPU 利用率和磁碟 I/O 指標。其中包括 CPU 負載、IOPS、讀/寫吞吐量等。
例子:
iostat -d -p sda 5
一些 iostat 選項:
-c
– 顯示 CPU 使用率資訊-t
– 為每份報告列印時間戳-x
– 顯示服務時間和等待計數等擴充套件統計資訊-d
– 顯示每個磁碟/分割槽的詳細統計資訊,而不是合計總數-p
– 顯示特定磁碟裝置的統計資訊
下面每 5 秒鐘顯示一次 sda 每個裝置的詳細 I/O 統計資訊。
iostat
可幫助分析磁碟子系統的效能,找出硬體瓶頸。
44. free
– 顯示可用和已用記憶體量
free
命令顯示系統中實體記憶體和交換記憶體的總量、已用量和空閒量。這將提供可用記憶體的總體情況。
例子:
free -h
free 命令的一些選項:
-b
– 以位元組為單位顯示輸出-k
– 以 KB(而非預設位元組)為單位顯示輸出結果-m
– 以 MB 為單位顯示輸出,而不是以位元組為單位-h
– 以 GB、MB 等人類可讀格式列印統計資料,而不是位元組。
以人類可讀格式(GB、MB 等)列印記憶體統計資料。當你想快速瞭解記憶體容量時,它非常有用。
45. df
– 報告檔案系統磁碟空間使用情況
df
命令顯示檔案系統的磁碟空間使用情況。它會顯示檔案系統名稱、總/已用/可用空間和容量。
例子:
df -h
上述命令將以人類可讀的格式列印磁碟利用率。也可以不帶引數執行該命令,以塊大小獲得相同的資料。
46. sar
– 收集和報告系統活動
sar
工具收集並記錄一段時間內 CPU、記憶體、I/O、網路等系統活動資訊。通過分析這些資料,可以發現效能問題。
例子:
sar -u 5 60
每 5 秒取樣一次 CPU 使用情況,持續 60 次。
sar
提供了實時工具無法提供的詳細歷史系統效能資料。
Linux 使用者管理命令
在使用多使用者系統時,你可能需要一些命令來幫助你管理使用者和組,以控制訪問許可權。下面我們就來介紹一下這些命令。
47. useradd
– 建立新使用者
useradd
命令用於建立新使用者賬戶和主目錄。它會設定新使用者的 UID、組、shell 和其他預設值。
例子:
useradd -m john
useradd 實用選項:
-m
– 建立使用者的主目錄。-g
– 指定主組,而不是預設組。-s
– 設定使用者的登入 shell。
上述命令將建立一個新使用者 “john”,使用者名稱和主目錄均為 /home/john。
48. usermod
– 修改使用者賬戶
usermod
命令可修改現有使用者賬戶的設定。這可以更改使用者名稱、主目錄、shell、組、有效期等。
例子:
usermod -a developers john
通過這條命令,你可以將使用者 john 新增到一個額外的組-“developers”。-a 會追加到使用者新增到的現有組列表中。
49. userdel
– 刪除使用者賬戶
userdel
命令用於刪除使用者賬戶、主目錄和郵件 spool。
例子:
userdel -rf john
userdel 有用選項:
-r
– 刪除使用者的主目錄和郵件線軸。-f
– 即使使用者仍在登入,也強制刪除。
這將強制刪除使用者 “john”,並刪除相關檔案。
在 userdel
中指定 -r
和 -f
等選項可確保完全刪除使用者賬戶,即使該使用者仍在登入或有活動程序。
50. groupadd
– 新增一個組
groupadd
命令用於建立一個新的使用者組。就許可權而言,組代表團隊或角色。
例子:
groupadd -r sysadmin
有用的 groupadd 選項:
-r
– 建立用於核心系統功能的系統組。-g
– 指定新組的 GID,而不是使用下一個可用的 GID。
上述命令建立了一個具有系統許可權的新 “sysadmin” 組。建立新組時, -r
或 -g
有助於正確設定。
51. passwd
– 更新使用者的身份驗證令牌
passwd
允許您更改使用者帳戶的密碼。首先,它會提示您輸入當前密碼,然後要求您輸入新密碼並確認。
它類似於您在其他地方看到的任何其他密碼更改,但在本例中,它直接在您的終端中:
passwd
passwd命令
例子:
passwd john
這會提示使用者 “john” 以互動方式輸入新密碼。如果你丟失了某個賬戶的密碼,可以用 sudo 或 su 許可權登入 Linux,然後用同樣的方法修改密碼。
使用時要小心-一不小心可能會混餚使用者密碼!
Linux 網路命令
這些命令用於監控連線、排除網路故障、路由選擇、DNS 查詢和介面配置。
52. ping
– 向網路主機傳送 ICMP ECHO_REQUEST
ping
是用於測試網路連線的最流行的網路終端工具。ping
有很多選項,但在大多數情況下,您將使用它來請求域或IP地址:
ping google.com PING google.com (142.251.42.78): 56 data bytes 64 bytes from 142.251.42.78: icmp_seq=0 ttl=112 time=8.590 ms 64 bytes from 142.251.42.78: icmp_seq=1 ttl=112 time=12.486 ms 64 bytes from 142.251.42.78: icmp_seq=2 ttl=112 time=12.085 ms 64 bytes from 142.251.42.78: icmp_seq=3 ttl=112 time=10.866 ms --- google.com ping statistics --- 4 packets transmitted, 4 packets received, 0.0% packet loss round-trip min/avg/max/stddev = 8.590/11.007/12.486/1.518 ms
有用的 ping 選項:
-c [count]
– 限制傳送的資料包。-i [interval]
– ping 之間的等待間隔秒數。
使用上述命令,你可以 ping google.com,並輸出顯示連線性和延遲的往返統計資訊。一般來說, ping
命令用於檢查你試圖連線的系統是否存在並已連線到網路。
53. ifconfig
– 配置網路介面
ifconfig
命令顯示並配置網路介面設定,包括 IP 地址、網路掩碼、廣播、MTU 和硬體 MAC 地址。
例子:
ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 10.0.2.15 netmask 255.255.255.0 broadcast 10.0.2.255
inet6 fe80::a00:27ff:fe1e:ef1d prefixlen 64 scopeid 0x20<link>
ether 08:00:27:1e:ef:1d txqueuelen 1000 (Ethernet)
RX packets 23955654 bytes 16426961213 (15.3 GiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 12432322 bytes 8710937057 (8.1 GiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
在沒有其他引數的情況下執行 ifconfig
,將顯示所有可用網路介面的列表,以及 IP 和其他網路資訊。ifconfig
還可用於設定地址、啟用/禁用介面以及更改選項。
54. netstat
– 網路統計
netstat
命令可顯示網路連線、路由表、介面統計資訊、偽裝連線和組播成員資訊。
例子:
netstat -pt tcp
該命令將輸出所有活動的 TCP 連線和使用這些連線的程序。
55. ss
– 套接字統計
ss
命令將轉儲與 netstat 類似的套接字統計資訊。它可以顯示開啟的 TCP 和 UDP 套接字、傳送/接收緩衝區大小等。
例子:
ss -t -a
列印所有開啟的 TCP 套接字。比 netstat
更有效。
56. traceroute
– 追蹤到主機的路由
traceroute
命令列印資料包到網路主機的路徑,顯示沿途的每一跳和傳輸時間。對網路除錯很有用。
例子:
traceroute google.com
跟蹤到達 google.com 的路徑,並輸出每個網路跳轉。
57. dig
– DNS 查詢
dig
命令執行 DNS 查詢並返回域的 DNS 記錄資訊。
例子:
dig google.com
; <<>> DiG 9.10.6 <<>> google.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 60290
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1280
;; QUESTION SECTION:
;google.com. IN A
;; ANSWER SECTION:
google.com. 220 IN A 142.251.42.78
;; Query time: 6 msec
;; SERVER: 2405:201:2:e17b::c0a8:1d01#53(2405:201:2:e17b::c0a8:1d01)
;; WHEN: Wed Nov 15 01:36:16 IST 2023
;; MSG SIZE rcvd: 55
它會查詢 DNS 伺服器中與 google.com 相關的記錄,並列印詳細資訊。
58. nslookup
– 互動式查詢 DNS 伺服器
nslookup
命令以互動方式查詢 DNS 伺服器,以執行名稱解析查詢或顯示 DNS 記錄。
它進入一個互動式 shell,允許你手動查詢主機名、反向 IP 地址、查詢 DNS 記錄型別等。
例如,一些常見的 nslookup 使用方法。在命令列中鍵入 nslookup:
nslookup
接下來,我們將設定 Google 8.8.8.8 DNS 伺服器用於查詢。
> server 8.8.8.8
現在,讓我們查詢 stackoverflow.com 的 A 記錄,找到它的 IP 地址。
> set type=A
> stackoverflow.com
Server: 8.8.8.8
Address: 8.8.8.8#53
Non-authoritative answer:
Name: stackoverflow.com
Address: 104.18.32.7
Name: stackoverflow.com
Address: 172.64.155.249
現在,讓我們查詢 github.com 的 MX 記錄,檢視其郵件伺服器。
> set type=MX
> github.com
Server: 8.8.8.8
Address: 8.8.8.8#53
Non-authoritative answer:
github.com mail exchanger = 1 aspmx.l.google.com.
github.com mail exchanger = 5 alt1.aspmx.l.google.com.
github.com mail exchanger = 5 alt2.aspmx.l.google.com.
github.com mail exchanger = 10 alt3.aspmx.l.google.com.
github.com mail exchanger = 10 alt4.aspmx.l.google.com.
互動式查詢使 nslookup 對探索 DNS 和排除名稱解析問題非常有用。
59. iptables
– IPv4 資料包過濾和 NAT
使用 iptables
命令可以配置 Linux netfilter 防火牆規則,以過濾和處理網路資料包。它為系統如何處理不同型別的入站和出站連線及流量設定了策略和規則。
例子:
iptables -A INPUT -s 192.168.1.10 -j DROP
上述命令將阻止來自 IP 192.168.1.10 的所有輸入。
iptables
為 Linux 核心防火牆提供了強大的控制功能,可以處理路由、NAT、資料包過濾和其他流量控制。它是確保 Linux 伺服器安全的重要工具。
60. ip
– 管理網路裝置和路由
使用 ip
命令可以管理和監控各種與網路裝置相關的活動,如分配 IP 地址、設定子網、顯示連結詳情和配置路由選項。
例子:
ip link show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
link/ether 08:00:27:8a:5c:04 brd ff:ff:ff:ff:ff:ff
上述命令顯示了所有網路介面、它們的狀態和其他資訊。
該命令旨在用更現代的 Linux 網路管理功能取代 ifconfig。 ip
可以控制網路裝置、路由表和其他網路協議棧設定。
Linux 軟體包管理命令
軟體包管理器允許在 Linux 發行版上輕鬆安裝、更新和刪除軟體。常用的軟體包管理器包括 APT、YUM、DNF、Pacman 和 Zypper。
61. apt
– Debian/Ubuntu 軟體包管理器
apt
命令使用 APT 軟體庫管理 Debian/Ubuntu 系統上的軟體包。它允許安裝、更新和刪除軟體包。
例子:
apt update
該命令從軟體倉庫獲取最新的軟體包版本和後設資料。
apt install nginx
使用上述命令可以從配置的 APT 軟體源安裝 nginx 軟體包。
apt upgrade
該命令將軟體包和依賴關係升級到更新版本。
apt
通過從軟體源獲取軟體包,讓安裝軟體變得更簡單。
62. pacman
– Arch Linux 軟體包管理器
pacman
管理 Arch Linux 上來自 Arch 使用者資源庫的軟體包。它可以安裝、升級和刪除軟體包。
例子:
pacman -S nmap
從配置的軟體源安裝 nmap 軟體包。
pacman -Syu
與軟體源同步並升級所有軟體包。
pacman
使 Arch Linux 保持最新,並可輕鬆管理軟體包。
63. dnf
– Fedora 軟體包管理器
dnf
使用 RPM 軟體包在 Fedora Linux 發行版上安裝、更新和刪除軟體包。它取代 Yum 成為新一代軟體包管理器。
例子:
dnf install util-linux
安裝 util-linux 軟體包。
dnf upgrade
將所有已安裝的軟體包升級到最新版本。
dnf
使 Fedora 軟體包管理快速高效。
64. yum
– Red Hat 軟體包管理器
yum
使用 RPM 軟體包管理 RHEL 和 CentOS Linux 發行版上的軟體包。它從 Yum 軟體庫中獲取軟體包進行安裝和更新。
例子:
yum update
將所有已安裝的軟體包更新到最新版本。
yum install httpd
上述命令安裝 Apache httpd 軟體包。yum
是保持 Red Hat 發行版更新的主要軟體包管理器。
65. zypper
– OpenSUSE 軟體包管理器
zypper
在 SUSE/openSUSE Linux 上管理軟體包。它可以新增軟體源、搜尋、安裝和升級軟體包。
例子:
zypper refresh
zypper
的重新整理命令會重新整理已新增軟體源的軟體源後設資料。
zypper install python
該命令從配置的軟體源中安裝 Python 軟體包。 zypper
讓 SUSE/openSUSE 系統上的軟體包管理變得輕鬆自如。
66. flatpak
– Flatpak 應用程式軟體包管理器
flatpak
命令可幫助你管理 Flatpak 應用程式和執行時。 flatpak
允許在 Linux 上釋出沙盒桌面應用程式。
例子:
flatpak install flathub org.libreoffice.LibreOffice
例如,上述命令將從 Flathub 軟體源安裝 LibreOffice。
flatpak run org.libreoffice.LibreOffice
這將啟動了沙盒LibreOfficeFlatpak應用程式。 flatpak
提供了一個集中的跨發行版 Linux 應用程式軟體倉庫,因此你不再侷限於特定發行版軟體包庫中的軟體包。
67. appimage
– AppImage 應用程式軟體包管理器
AppImage 軟體包是獨立的應用程式,可在大多數 Linux 發行版上執行。appimage
命令可執行現有的 AppImage。
例子:
chmod +x myapp.AppImage
./myapp.AppImage
這樣就可以直接執行 AppImage 二進位制檔案。
AppImage
允許在不進行全系統安裝的情況下部署應用程式。可以把 AppImage 想象成一個小型容器,其中包含所有檔案,使應用程式無需過多外部依賴即可執行。
68. snap
– Snappy 應用程式軟體包管理器
snap
命令管理 Snaps 封裝的軟體包。Snaps 與 Flatpak 類似,能自動更新並跨 Linux 發行版執行。
例子:
snap install vlc
這條簡單的命令會安裝 VLC 媒體播放器快照。
snap run vlc
安裝完成後,你可以使用上述命令執行通過 snap
安裝的軟體包。快照將應用程式從基本系統中分離出來,以實現可移植性,並允許更簡潔的安裝。
Linux 系統資訊命令
通過這些命令可以檢視 Linux 系統硬體、核心、發行版、主機名、正常執行時間等詳細資訊。
69. uname
– 列印系統資訊
uname
命令可列印 Linux 系統核心、硬體架構、主機名和作業系統的詳細資訊。其中包括版本號和機器資訊。
uname
(Unix name的縮寫)列印可操作的系統資訊,當您知道當前的Linux版本時,這些資訊很方便。
大多數情況下,您將使用-a
(–all)標誌,因為預設輸出沒有那麼有用:
uname # Linux uname -a # Linux wboltmanjaro 5.4.138-1-MANJARO #1 SMP PREEMPT Thu Aug 5 12:15:21 UTC 2021 x86_64 GNU/Linux
例子:
uname -a
Linux hostname 5.4.0-48-generic x86_64 GNU/Linux
uname
對於查詢這些核心系統詳細資訊非常有用。一些選項包括:
-a
– 列印所有可用的系統資訊-r
– 只列印核心版本號
上述命令列印了擴充套件系統資訊,包括核心名稱/版本、硬體架構、主機名和作業系統。
uname -r
這將只列印核心版本號。 uname
命令顯示 Linux 系統核心元件的詳細資訊。
70. hostname
– 顯示或設定系統主機名
hostname
命令將列印或設定網路中 Linux 系統的主機名識別符號。在沒有引數的情況下,它會顯示當前的主機名。傳遞名稱將更新主機名。
例子:
hostname
linuxserver
將顯示配置的系統主機名 linuxserver。
hostname UbuntuServer
hostnames
標識網路上的系統。 hostname
獲取或配置網路上系統的標識名稱。第二條命令可以幫助你將本地主機名更改為 UbuntuServer。
71. uptime
– 系統執行了多久
uptime
命令顯示 Linux 系統自上次重啟以來已經執行了多長時間。它會列印出執行時間和當前時間。
只需執行以下命令即可獲取系統執行時間資料:
uptime
23:51:26 up 2 days, 4:12, 1 user, load average: 0.00, 0.01, 0.05
這將列印系統正常執行時間,顯示系統自上次啟動以來的執行時間。
72. whoami
– 列印有效使用者 ID
whoami
命令將列印當前登入系統使用者的有效使用者名稱。它還會顯示您的操作許可權級別。
該命令(who am I的縮寫)顯示當前使用的whoami
使用者名稱:
whoami # wbolt
使用echo
和環境變數$USER可以得到相同的結果:
echo $USER # wbolt
在終端中鍵入該命令以獲取 ID:
whoami
john
這將列印當前使用者登入和操作的有效使用者名稱,在指令碼或診斷中非常有用,可用於識別正在執行操作的使用者賬戶。
73. id
– 列印真實有效的使用者和組 ID
id
命令列印有關當前使用者有效 ID 和名稱的詳細使用者和組資訊。其中包括
- 真實使用者 ID 和名稱。
- 有效使用者 ID 和名稱。
- 真實組 ID 和名稱。
- 有效組 ID 和名稱。
要使用 id 命令,只需鍵入:
id
uid=1000(john) gid=1000(john) groups=1000(john),10(wheel),998(developers)
id
命令將列印當前使用者的真實有效使用者 ID 和組 ID。id
顯示的使用者和組詳細資訊對確定檔案訪問許可權非常有用。
74. lscpu
– 顯示 CPU 架構資訊
lscpu
命令顯示詳細的 CPU 架構資訊,包括
- CPU 核心數
- 介面數量
- 型號名稱
- 快取大小
- CPU 頻率
- 地址大小
要使用 lscpu 命令,只需鍵入:
lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 16
On-line CPU(s) list: 0-15
lscpu
詳細列出 CPU 架構,如核心數、插口、型號名稱、快取等。
75. lsblk
– 列出塊裝置
lsblk
命令列出所有可用塊裝置的資訊,包括本地磁碟、分割槽和邏輯卷。輸出包括裝置名稱、標籤、大小和掛載點。
lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 1.8T 0 disk
|-sda1 8:1 0 512M 0 part /boot
|-sda2 8:2 0 16M 0 part
`-sda5 8:5 0 1.8T 0 part
`-lvm1 254:0 0 1.8T 0 lvm /
lsblk
列出所有塊裝置,包括磁碟、分割槽和邏輯卷。提供儲存裝置概覽。
76. lsmod
– 顯示 Linux 核心模組的狀態
lsmod
命令會列印當前載入的核心模組(如裝置驅動程式)。這包括 Linux 核心用於連線內部和外部裝置的網路、儲存和其他硬體相關模組。
lsmod
Module Size Used by
ipv6 406206 27
evdev 17700 0
crct10dif_pclmul 16384 1
crc32_pclmul 16384 0
ghash_clmulni_intel 16384 0
aesni_intel 399871 0
aes_x86_64 20274 1 aesni_intel
可以看到,它列出了當前載入的核心模組(如裝置驅動程式)。在本例中,它顯示了網路、輸入、加密和加密模組的使用情況。
77. dmesg
– 列印或控制核心環緩衝區
dmesg
命令從核心環形緩衝區轉儲資訊。其中包括核心在啟動和執行過程中記錄的重要系統事件。
dmesg | grep -i error
[ 12.345678] Error receiving batched read response: -110
[ 23.456789] tplink_mdio 0000:03:00.0: Direct firmware load for tplink-mdio/leap_p8_v1_0.bin failed with error -2
[ 40.567890] iwlwifi 0000:09:00.0: Direct firmware load for iwlwifi-ty-a0-gf-a0-59.ucode failed with error -2
搜尋 “錯誤” 會顯示載入特定韌體時出現的問題。這將列印緩衝的核心日誌資訊,包括啟動、錯誤、警告等系統事件。
Linux 系統管理命令
系統管理員命令可幫助你以其他使用者身份執行程式、關閉或重啟系統,以及管理 init 系統和服務。
78. sudo
– 以其他使用者身份執行命令
sudo
命令允許你以另一個使用者(通常是超級使用者)的身份執行命令。輸入 sudo 命令後,系統會提示您輸入密碼進行身份驗證。
這為安裝軟體包、編輯系統檔案、管理服務等任務提供了高階訪問許可權。
此命令代表“超級使用者do”,它允許您在執行特定命令時充當超級使用者或根使用者。這就是Linux如何保護自己,防止使用者意外修改機器的檔案系統或安裝不合適的軟體包。
Sudo通常用於安裝軟體或編輯使用者主目錄以外的檔案:
sudo apt install gimp sudo cd /root/
在執行您鍵入的命令之前,它會要求您輸入管理員密碼。
又如:
sudo adduser bob
[sudo] password for john:
系統已新增使用者 “bob”。
這將使用 sudo
建立新使用者 “bob”。如果沒有 sudo
,普通使用者通常無法新增使用者。
79. su
– 更改使用者 ID 或成為超級使用者使用
su
命令可以切換到另一個使用者賬戶,包括超級使用者。必須提供目標使用者的密碼才能進行身份驗證。這樣就可以直接在另一個使用者的環境中執行命令。
例子:
su bob
Password:
bob@linux:~$
輸入 bob 的密碼後,該命令會將當前使用者切換為使用者 “bob”。shell 提示符將反映新使用者。
80. shutdown
– 關閉或重啟 Linux
shutdown
命令用於在指定計時器後或立即關閉、停止或重啟系統。要安全地重啟或關閉多使用者 Linux 系統,需要使用該命令。
正如您可能猜到的,shutdown
命令允許您關閉機器電源。但是,它也可以用來停止和重新啟動它。
要立即關閉計算機電源(預設為一分鐘),請鍵入:
shutdown now
您還可以計劃以24小時格式關閉系統:
shutdown 20:40
要取消以前的shutdown
呼叫,可以使用-c
標誌:
shutdown -c
又如:
shutdown -r now
Broadcast message from root@linux Fri 2023-01-20 18:12:37 CST:
The system is going down for reboot NOW!
這會立即重啟系統,並向使用者發出警告。
81. reboot
– 重啟或重新啟動系統
reboot
命令可重啟 Linux 作業系統,登出所有使用者並安全地重啟系統。它會同步磁碟,並在重啟前乾淨利落地關閉系統。
例子:
reboot
Restarting system.
reboot 是 shutdown -r
的簡單替代方案。
82. systemctl
– 控制 systemd 系統和服務管理器
systemctl
命令允許你管理 systemd 服務,如啟動、停止、重啟或重新載入它們。 systemd
是大多數現代 Linux 發行版使用的新啟動系統,取代了 SysV init。
例子:
systemctl start apache2
==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-units ===
Authentication is required to start 'apache2.service'.
Authenticating as: User Name
Password:
==== AUTHENTICATION COMPLETE ===
驗證完成後,將啟動 apache2 服務。
83. service
– 執行 System V 初始化指令碼
service
命令執行用於控制服務的 System V 初始指令碼。這允許啟動、停止、重啟和重新載入在傳統 SysV init 下管理的服務。
例子:
service iptables start
[ ok ] Starting iptables (via systemctl): iptables.service.
上述命令使用 SysV init 指令碼啟動了 iptables
防火牆服務。
更多 Linux 命令
mount
– 將硬碟安裝或 “連線 “到系統上。umount
– 從系統中解除安裝或 “移除” 硬碟。xargs
– 生成並執行通過標準輸入提供的命令。alias
– 為冗長或複雜的命令建立快捷方式。alias
命令允許您在shell會話中定義臨時別名。建立別名時,您指示shell用一系列命令替換單詞。例如,要設定ls
為顏色而不每次鍵入標誌--color
,您將使用:alias ls="ls --color=auto"alias ls="ls --color=auto"alias ls="ls --color=auto"
正如你所看到的,
alias
命令需要一個關鍵值對引數:alias NAME="VALUE"
.請注意,該值必須是使用引號。如果你想列出你的shell會話中所有的別名,你可不使用argument執行命令
alias
。aliasaliasalias
alias命令。
jobs
– 列出當前在後臺執行任務的程式。bg
– 恢復已停止或暫停的後臺程序。killall
– 通過程式名稱而不是 PID 終止程序。history
– 顯示當前終端會話中以前使用過的命令。
如果你正在努力記住一個命令,history
就會派上用場。此命令顯示一個列舉列表,其中包含您過去使用過的命令:historyhistoryhistory
history命令.
man
– 直接在終端中訪問命令的幫助手冊。
另一個重要的Linux命令是man
。它顯示任何其他命令的手冊頁面(只要有)。要檢視mkdir
命令的手冊頁,請鍵入:man mkdirman mkdirman mkdir
您甚至可以檢視
man
命令手冊頁面:man manman manman man
man命令手冊頁面。
screen
– 從一個視窗管理多個終端會話。ssh
– 建立與遠端伺服器的安全加密連線。tcpdump
– 根據特定標準捕獲網路流量。watch
– 每隔一段時間重複一次命令,並突出顯示輸出差異。tmux
– 用於持續會話和分割的終端多路複用器。nc
– 開啟 TCP 或 UDP 連線,進行測試和資料傳輸。nmap
– 主機發現、埠掃描和作業系統指紋。strace
– 通過跟蹤作業系統訊號和呼叫來除錯程序。unalias
– 顧名思義,unalias
命令旨在從已定義的別名中刪除alias
。
要刪除以前的ls
別名,可以使用:unalias lsunalias lsunalias ls
-
pwd
– 代表“列印工作目錄”,它輸出您所在目錄的絕對路徑。
例如,如果您的使用者名稱是“john”,並且您位於文件目錄中,則其絕對路徑將是/home/john/Documents
.要使用它,只需在終端中鍵入pwd
:pwd# My result: /home/wbolt/Documents/linux-commandspwd # My result: /home/wbolt/Documents/linux-commandspwd # My result: /home/wbolt/Documents/linux-commands
./
– 也許 ./ 符號本身不是命令,但在這個列表中值得一提。
它允許shell直接從終端執行可執行檔案,並在系統中安裝任何直譯器。不再雙擊圖形檔案管理器中的檔案!例如,使用此命令,您可以執行Python指令碼或僅以.run格式提供的程式,如XAMPP。執行可執行檔案時,請確保它具有可執行(x)許可權,您可以使用chmod
命令修改該許可權。下面是一個簡單的Python指令碼,以及如何使用./
符號執行它:#! /usr/bin/python3# filename: scriptfor i in range(20):print(f"This is a cool script {i}")#! /usr/bin/python3 # filename: script for i in range(20): print(f"This is a cool script {i}")#! /usr/bin/python3 # filename: script for i in range(20): print(f"This is a cool script {i}")
下面是我們如何將指令碼轉換為可執行檔案並執行它:
chmod +x script./scriptchmod +x script ./scriptchmod +x script ./script
-
exit
– 自動關閉正在使用的終端。
exit
命令完全按照其名稱執行:使用它,您可以結束shell會話,並且在大多數情況下,可以自動關閉正在使用的終端:exitexitexit
-
apt
,yum
,pacman
命令
無論您使用的是哪個Linux發行版,您都可能使用package管理器來安裝、更新和刪除您每天使用的軟體。您可以通過命令列訪問這些package管理器,並根據您的計算機執行的發行版使用其中一個或另一個package管理器。以下示例將安裝GIMP,這是一種通常在大多數package管理器中可用的免費開源軟體:1. Debian-based (Ubuntu, Linux Mint)
sudo apt install gimpsudo apt install gimpsudo apt install gimp
2. Red Hat-based (Fedora, CentOS)
sudo yum install gimpsudo yum install gimpsudo yum install gimp
3. Arch-based (Manjaro, Arco Linux)
sudo pacman -S gimpsudo pacman -S gimpsudo pacman -S gimp
-
echo
– 在終端中顯示定義的文字。
echo
命令在終端中顯示定義的文字-就這麼簡單:echo "Cool message"echo "Cool message"echo "Cool message"
echo命令
它的主要用途是在這些訊息中列印環境變數:
echo "Hey $USER"# Hey wboltecho "Hey $USER" # Hey wboltecho "Hey $USER" # Hey wbolt
-
cat
– 用於直接從終端建立、檢視和連線檔案。cat
是“concatenate”的縮寫,用於直接從終端建立、檢視和連線檔案。它主要用於在不開啟圖形文字編輯器的情況下預覽檔案:cat long_text_file.txtcat long_text_file.txtcat long_text_file.txt
cat命令.
-
vim
– 使用高效的鍵繫結編輯純文字檔案。
vim
是一個免費的開源終端文字編輯器,從90年代開始使用。它允許您使用高效的鍵繫結編輯純文字檔案。有些人認為使用困難——退出VIM是最常見的StackOverflow問題之一,但一旦習慣了,它就成為命令列中最好的盟友。要啟動Vim,只需鍵入:vimvimvim
vim文字編輯器.
-
which
– 輸出shell命令的完整路徑。
which
命令輸出shell命令的完整路徑。如果它不能識別給定的命令,它將丟擲一個錯誤。例如,我們可以使用它來檢查Python和Brave web瀏覽器的二進位制路徑:which python# /usr/bin/pythonwhich brave# /usr/bin/bravewhich python # /usr/bin/python which brave # /usr/bin/bravewhich python # /usr/bin/python which brave # /usr/bin/brave
-
shred
– 此命令會重複覆蓋檔案的內容。
如果您希望檔案幾乎無法恢復,shred
可以幫助您完成此任務。此命令會重複覆蓋檔案的內容,因此,給定的檔案極難恢復。下面是一個內容很少的檔案:粉碎檔案.
現在,讓我們通過鍵入
shred
命令來完成工作:shred file_to_shred.txtshred file_to_shred.txtshred file_to_shred.txt
覆蓋內容.
如果要立即刪除檔案,可以使用
-u
標誌:shred -u file_to_shred.txtshred -u file_to_shred.txtshred -u file_to_shred.txt
-
less
– 允許您前後檢查檔案的程式。
less
(與more相反)是一個允許您前後檢查檔案的程式:less large_text_file.txtless large_text_file.txtless large_text_file.txt
less命令.
less
的優點在於它在其介面中包含了更多和vim
命令。如果您需要比cat
更具互動性的東西,less
是一個不錯的選擇。 -
tail
– 列印檔案內容後幾行。
與cat
類似,tail
列印檔案內容時有一個主要警告:它只輸出最後幾行。預設情況下,它列印最後10行,但您可以使用-n
修改該數字。例如,要列印大型文字檔案的最後幾行,可以使用:tail long.txttail long.txttail long.txt
tail命令.
要僅檢視最後四行,請執行以下操作:
tail -n 4 long.txttail -n 4 long.txttail -n 4 long.txt
tail命令尾四行.
-
head
– 輸出文字檔案的前10行。
這是對tail
命令的補充。head
輸出文字檔案的前10行,但您可以使用-n
標誌設定要顯示的任意行數:head long.txthead -n 5 long.txthead long.txt head -n 5 long.txthead long.txt head -n 5 long.txt
head命令.
-
whatis
– 列印任何其他命令的說明。
whatis
列印任何其他命令的單行說明,使其成為有用的參考:whatis python# python (1) - an interpreted, interactive, object-oriented programming languagewhatis whatis# whatis (1) - display one-line manual page descriptionswhatis python # python (1) - an interpreted, interactive, object-oriented programming language whatis whatis # whatis (1) - display one-line manual page descriptionswhatis python # python (1) - an interpreted, interactive, object-oriented programming language whatis whatis # whatis (1) - display one-line manual page descriptions
-
neofetch
– CLI(命令列介面)工具。
Neofetch是一個CLI(命令列介面)工具,它在Linux發行版的ASCII徽標旁邊顯示有關係統的資訊,如核心版本、shell和硬體:neofetchneofetchneofetch
neofetch命令
在大多數計算機中,此命令在預設情況下不可用,因此請確保首先使用package管理器安裝它。
使用 Linux 命令的 7 大技巧
- 瞭解你的 shell:Bash、zsh 還是 fish?不同的 shell 都有獨特的功能。選擇一個最適合你需要的。
- 掌握核心工具:
ls
,cat
,grep
,sed
,awk
, 等構成了 Linux 工具包的核心。 - 堅持使用管道:避免過多使用臨時檔案。巧妙地將程式管道化。
- 在覆蓋前進行驗證:在使用
>
和>>
覆蓋檔案之前,一定要仔細檢查。 - 跟蹤工作流程:記錄複雜的命令和工作流程,以便日後重複使用或共享。
- 自制工具:為經常執行的任務編寫簡單的 shell 指令碼和別名。
- 不使用
sudo
啟動:最初使用標準使用者賬戶來了解許可權。
請記住,要不斷在虛擬機器或 VPS 伺服器上測試新命令,以便在開始在生產伺服器上使用這些命令之前,讓它們成為你的第二天性。
Linux命令備忘單
每當您想要快速參考時,只需檢視下錶:
命令 | 用法 |
---|---|
ls |
列出目錄的內容 |
alias |
定義或顯示別名 |
unalias |
刪除別名定義 |
pwd |
列印工作目錄 |
cd |
更改目錄 |
cp |
複製檔案和目錄 |
rm |
刪除檔案和目錄 |
mv |
移動(重新命名)檔案和目錄 |
mkdir |
建立目錄 |
man |
顯示其他命令的手冊頁面 |
touch |
建立空檔案 |
chmod |
更改檔案許可權 |
./ |
執行可執行檔案 |
exit |
退出當前shell會話 |
sudo |
以超級使用者身份執行命令 |
shutdown |
關閉您的機器 |
htop |
顯示程序和資源資訊 |
unzip |
解壓zip檔案 |
apt ,yum ,pacman |
包管理器 |
echo |
顯示文字行 |
cat |
列印檔案內容 |
ps |
報告shell程序狀態 |
kill |
終止程式 |
ping |
測試網路連線 |
vim |
高效文字編輯 |
history |
顯示以前的命令列表 |
passwd |
更改使用者密碼 |
which |
返回程式的完整二進位制路徑 |
shred |
覆蓋檔案以隱藏其內容 |
less |
以互動式檢查檔案 |
tail |
顯示檔案的最後幾行 |
head |
顯示檔案的第一行 |
grep |
列印與給定條件匹配行 |
whoami |
輸出使用者名稱 |
whatis |
顯示單行說明 |
wc |
字數檔案 |
uname |
顯示作業系統資訊 |
neofetch |
顯示作業系統和硬體資訊 |
find |
搜尋遵循模式的檔案 |
wget |
從網際網路檢索檔案 |
小結
學習Linux可能需要一些時間,但是一旦你掌握了它的一些工具,它就成了你最好的盟友,你不會後悔選擇它作為你的日常司機。
Linux的一個顯著之處在於,即使您是經驗豐富的使用者,您也永遠不會停止學習使用它提高工作效率。
有更多有用的Linux命令。如果我們遺漏了一些東西,請在下面的評論中分享您最喜愛的Linux 命令!
評論留言