02.22 玩轉 Linux,掌握這些 Linux 命令就夠了


玩轉 Linux,掌握這些 Linux 命令就夠了


Linux 的命令確實非常多,然而熟悉 Linux 的人從來不會因為 Linux 的命令太多而煩惱。因為我們僅僅只需要掌握常用命令,就完全可以駕馭 Linux。

接下來,讓我們一起來看看都有那些常用的 Linux 命令吧!

一、文件目錄操作

1. ls 命令

ls 命令不僅可以查看 linux 文件夾包含的文件而且可以查看文件權限(包括目錄、文件夾、文件權限)查看目錄信息等等。

命令格式

ls [選項][目錄名]

常用參數

  • -l :列出長數據串,包含文件的屬性與權限數據等
  • -a :列出全部的文件,連同隱藏文件(開頭為.的文件)一起列出來(常用)
  • -d :僅列出目錄本身,而不是列出目錄的文件數據
  • -h :將文件容量以較易讀的方式(GB,kB等)列出來
  • -R :連同子目錄的內容一起列出(遞歸列出),等於該目錄下的所有文件都會顯示出來

使用實例

1.列出 home 目錄下的所有文件和目錄的詳細資料。

<code>ls -a -l /home
ls -al /home/<code>

2.列出當前目錄下所有以"d"開頭的文件目錄詳情內容。

<code>ls -l d*/<code>

2. cd 命令

最基本的命令語句,其他的命令語句要進行操作,都是建立在使用 cd 命令上的。用於切換當前目錄至dirName。

命令格式

cd [目錄名]

操作案例

1.從當前目錄進入系統根目錄。

<code>cd //<code>

2.跳轉到 home/Code 目錄。

<code>cd /home/Code/<code> 

3.pwd 命令

查看"當前工作目錄"的完整路徑。

命令格式:

pwd [選項]

常用參數:

  • -P :顯示實際物理路徑,而非使用連接(link)路徑
  • -L :當目錄為連接路徑時,顯示連接路徑

操作案例

1.顯示當前所在路徑。

<code>pwd/<code>

4.mkdir 命令

用來創建指定的名稱的目錄,要求創建目錄的用戶在當前目錄中具有寫權限,並且指定的目錄名不能是當前目錄中已有的目錄。

命令格式

mkdir [選項] 目錄

常用參數

  • -m, --mode=模式,設定權限 (類似 chmod),而不是 rwxrwxrwx 減 umask
  • -p, --parents 可以是一個路徑名稱。此時若路徑中的某些目錄尚不存在,加上此選項後,系統將自動建立好那些尚不存在的目錄,即一次可以建立多個目錄;
  • -v, --verbose 每次創建新目錄都顯示信息
  • --help 顯示此幫助信息並退出
  • --version 輸出版本信息並退出

使用實例

1.創建一個空目錄。

<code>mkdir test/<code>

2.遞歸創建多個目錄。

<code>mkdir test/test1/<code>

3.創建權限為777的目錄。

<code>mkdir -m 777 test2/<code>

4.創建目錄都顯示信息。

<code>mkdir -v test4/<code>

5.rm 命令

刪除一個目錄中的一個或多個文件或目錄,如果沒有使用- r選項,則rm不會刪除目錄。如果使用 rm 來刪除文件,通常仍可以將該文件恢復原狀。

命令格式

rm [選項] 文件

常用參數

  • -f, --force 忽略不存在的文件,從不給出提示。
  • -i, --interactive 進行交互式刪除
  • -r, -R, --recursive 指示rm將參數中列出的全部目錄和子目錄均遞歸地刪除。
  • -v, --verbose 詳細顯示進行的步驟
  • --help 顯示此幫助信息並退出
  • --version 輸出版本信息並退出

使用實例

1.刪除文件 test.txt,系統會提示是否刪除。

<code>rm test.txt/<code>

2.強制刪除 test.txt,系統不再提示。

<code>rm -f test.txt/<code>

3.將 test 子目錄及目錄中所有檔案刪除。

<code>rm -r test/<code>

6.rmdir 命令

該命令從一個目錄中刪除一個或多個子目錄項,刪除某目錄時也必須具有對父目錄的寫權限。

命令格式

rmdir [選項] 目錄

常用參數

    • p 遞歸刪除目錄dirname,當子目錄刪除後其父目錄為空時,也一同被刪除。如果整個路徑被刪除或者由於某種原因保留部分路徑,則系統在標準輸出上顯示相應的信息。


  • -v, --verbose 顯示指令執行過程

使用實例

1.刪除空目錄 test1,非空目錄無法刪除。

<code>rmdir test1/<code>

2.當子目錄被刪除後使它也成為空目錄的話,則順便一併刪除

<code>rmdir -p test2 # test 目錄下僅有 test2/<code>

7. mv 命令

可以用來移動文件或者將文件改名(move (rename) files)。當第二個參數類型是文件時,mv命令完成文件重命名。當第二個參數是已存在的目錄名稱時,源文件或目錄參數可以有多個,mv命令將各參數指定的源文件均移至目標目錄中。

命令格式

mv [選項] 源文件或目錄 目標文件或目錄

常用參數

  • -b :若需覆蓋文件,則覆蓋前先行備份
  • -f :force 強制的意思,如果目標文件已經存在,不會詢問而直接覆蓋
  • -i :若目標文件 (destination) 已經存在時,就會詢問是否覆蓋
  • -u :若目標文件已經存在,且 source 比較新,才會更新(update)
  • -t : --target-directory=DIRECTORY move all SOURCE arguments into DIRECTORY,即指定mv的目標目錄,該選項適用於移動多個源文件到一個目錄的情況,此時目標目錄在前,源文件在後

使用實例

1.將 test1.txt 重命名為 test2.txt。

<code>mv test1.txt test2.txt/<code>

2.移動文件 test1.txt 到目錄 test2

<code>mv test1.txt test2/<code>

3.將文件 test1.txt、test2.txt、test3.txt 移動到目錄 test3。

<code>mv test1.txt test2.txt test3.txt test3/<code>

8.cp 命令

將源文件複製至目標文件,或將多個源文件複製至目標目錄。

命令格式

cp [選項] 源文件 目錄 或 cp [選項] -t 目錄 源文件

常用參數

  • -t --target-directory 指定目標目錄
  • -i --interactive 覆蓋前詢問(使前面的 -n 選項失效)
  • -n --no-clobber 不要覆蓋已存在的文件(使前面的 -i 選項失效)
  • -f --force 強行復制文件或目錄,不論目的文件或目錄是否已經存在
  • -u --update 使用這項參數之後,只會在源文件的修改時間較目的文件更新時,或是對應的目的文件並不存在,才複製文件

使用實例

1.複製文件 test1.txt 到 test1 目錄

<code>cp test1.txt test1 # 若文件存在,會提示是否覆蓋。若不存在直接完成複製/<code>
  1. 複製 test1 整個目錄到 test2
<code>cp -a test1 test2/<code>

9. touch 命令

touch命令參數可更改文檔或目錄的日期時間,包括存取時間和更改時間。

命令格式

touch [選項] 文件

常用參數

  • -a 或--time=atime或--time=access或--time=use  只更改存取時間
  • -c 或--no-create  不建立任何文檔
  • -d  使用指定的日期時間,而非現在的時間
  • -f  此參數將忽略不予處理,僅負責解決BSD版本touch指令的兼容性問題
  • -m 或--time=mtime或--time=modify  只更改變動時間
  • -r  把指定文檔或目錄的日期時間,統統設成和參考文檔或目錄的日期時間相同 -t  使用指定的日期時間,而非現在的時間

使用實例

1.創建不存在的文件test.txt

<code>touch test.txt/<code>

2.更新 test.txt 的實踐和 test1.txt 時間戳相同

<code>touch -r test.txt test1.txt/<code>

10.cat 命令

用來顯示文件內容,或者將幾個文件連接起來顯示,或者從標準輸入讀取內容並顯示,它常與重定向符號配合使用。

命令格式

cat [選項] [文件]

常用參數

  • -A, --show-all 等價於 -vET
  • -b, --number-nonblank 對非空輸出行編號
  • -e 等價於 -vE
  • -E, --show-ends 在每行結束處顯示 $
  • -n, --number 對輸出的所有行編號,由1開始對所有輸出的行數編號
  • -s, --squeeze-blank 有連續兩行以上的空白行,就代換為一行的空白行
  • -t 與 -vT 等價
  • -T, --show-tabs 將跳格字符顯示為 ^I
  • -u (被忽略)
  • -v, --show-nonprinting 使用 ^ 和 M- 引用,除了 LFD 和 TAB 之外

使用實例

1.把 test.log 的文件內容加上行號後輸入 test1.log 這個文件裡。

<code>cat -n test.log  test1.log/<code>
  1. 將 test.log 的文件內容反向顯示。
<code>tac  test.log/<code>

11. nl 命令

輸出的文件內容自動的加上行號!其默認的結果與 cat -n 有點不太一樣, nl 可以將行號做比較多的顯示設計,包括位數與是否自動補齊 0 等等的功能。

命令格式

nl [選項] [文件]

常用參數

  • -b :指定行號指定的方式,主要有兩種:
    • -b a :表示不論是否為空行,也同樣列出行號(類似 cat -n)
    • -b t :如果有空行,空的那一行不要列出行號(默認值)


  • -n :列出行號表示的方法,主要有三種:
    • -n ln :行號在螢幕的最左方顯示
    • -n rn :行號在自己欄位的最右方顯示,且不加 0
    • -n rz :行號在自己欄位的最右方顯示,且加 0


  • -w :行號欄位的佔用的位數

使用實例

  1. 用 nl 列出 test.log 的內容。
<code>nl test.log/<code>
  1. 用 nl 列出 test.log 的內容,空本行也加上行號。
<code>nl -b a test.log/<code>

12.more 命令

more 命令和 cat 的功能一樣都是查看文件裡的內容,但有所不同的是more可以按頁來查看文件的內容,還支持直接跳轉行等功能。

命令格式

more [-dlfpcsu ] [-num ] [+/ pattern] [+ linenum] [file ... ]

常用參數

  • +n 從笫n行開始顯示
  • -n 定義屏幕大小為n行
  • +/pattern 在每個檔案顯示前搜尋該字串(pattern),然後從該字串前兩行之後開始顯示
  • -c 從頂部清屏,然後顯示
  • -d 提示“Press space to continue,’q’ to quit(按空格鍵繼續,按q鍵退出)”,禁用響鈴功能
  • -l 忽略Ctrl+l(換頁)字符
  • -p 通過清除窗口而不是滾屏來對文件進行換頁,與-c選項相似
  • -s 把連續的多個空行顯示為一行
  • -u 把文件內容中的下畫線去掉

操作指令

  • Enter:向下n行,需要定義。默認為1行
  • Ctrl+F:向下滾動一屏
  • 空格鍵:向下滾動一屏
  • Ctrl+B:返回上一屏
  • = :輸出當前行的行號
  • :f :輸出文件名和當前行的行號
  • V :調用vi編輯器
  • !命令 :調用Shell,並執行命令
  • q :退出more

使用實例

1.顯示文件 test.log 第3行起內容。

<code>more +3 test.log/<code>

2.從文件 test.log 查找第一個出現“day3”字符串的行,並從該處前2行開始顯示輸出。

<code>more +/day3 test.log/<code>
  1. 設置每屏顯示行數
<code>more -5 test.log/<code>

13. less 命令

less 與 more 類似,但使用 less 可以隨意瀏覽文件,而 more 僅能向前移動,卻不能向後移動,而且 less 在查看之前不會加載整個文件。

命令格式

less [參數] 文件

常用參數

  • -b 設置緩衝區的大小
  • -e 當文件顯示結束後,自動離開
  • -f 強迫打開特殊文件,例如外圍設備代號、目錄和二進制文件
  • -g 只標誌最後搜索的關鍵詞
  • -i 忽略搜索時的大小寫
  • -m 顯示類似more命令的百分比
  • -N 顯示每行的行號
  • -o 將less 輸出的內容在指定文件中保存起來
  • -Q 不使用警告音
  • -s 顯示連續空行為一行
  • -S 行過長時間將超出部分捨棄
  • -x 將“tab”鍵顯示為規定的數字空格

操作命令

  • /字符串:向下搜索“字符串”的功能
  • ?字符串:向上搜索“字符串”的功能
  • n:重複前一個搜索(與 / 或 ? 有關)
  • N:反向重複前一個搜索(與 / 或 ? 有關)
  • b 向後翻一頁
  • d 向後翻半頁
  • h 顯示幫助界面
  • Q 退出less 命令
  • u 向前滾動半頁
  • y 向前滾動一行
  • 空格鍵 滾動一行
  • 回車鍵 滾動一頁
  • [pagedown]: 向下翻動一頁
  • [pageup]: 向上翻動一頁

使用實例

1.查看文件 test.log。

<code>less test.log/<code>

14. head 命令

head 用來顯示檔案的開頭至標準輸出中,默認 head 命令打印其相應文件的開頭 10 行。

命令格式

head [參數] [文件]

常用參數

  • -q 隱藏文件名
  • -v 顯示文件名
  • -c 顯示字節數
  • -n 顯示的行數

使用實例

1.顯示文件 test.log 的前 5 行

<code>head -n 5 test.log/<code>

2.顯示文件 test.log 前 20 個字節

<code>head -c 20 test.log/<code>

15.tail 命令

顯示指定文件末尾內容,不指定文件時,作為輸入信息進行處理。常用查看日誌文件。

命令格式

tail [必要參數] [選擇參數] [文件]

常用參數

  • -f 循環讀取
  • -q 不顯示處理信息
  • -v 顯示詳細的處理信息
  • -c 顯示的字節數
  • -n 顯示行數
  • --pid=PID 與-f合用,表示在進程ID,PID死掉之後結束.
  • -q, --quiet, --silent 從不輸出給出文件名的首部
  • -s, --sleep-interval=S 與-f合用,表示在每次反覆的間隔休眠S秒

使用實例

1.顯示文件 test.log 最後 5 行內容。

<code>tail -n 5 test.log/<code>

2.循環查看文件內容

<code>tail -f test.log/<code>

二、文件查找

16.which 命令

which指令會在PATH變量指定的路徑中,搜索某個系統命令的位置,並且返回第一個搜索結果。

命令格式

which 可執行文件名稱

常用參數

  • -n  指定文件名長度,指定的長度必須大於或等於所有文件中最長的文件名
  • -p  與-n參數相同,但此處的包括了文件的路徑
  • -w  指定輸出時欄位的寬度
  • -V  顯示版本信息

使用實例

1.查找文件、顯示命令路徑。

<code>which pwd/<code>
  1. 用 which 去找出 which
<code>which which/<code>

17.whereis 命令

whereis命令是定位可執行文件、源代碼文件、幫助文件在文件系統中的位置。

命令格式

whereis [-bmsu] [BMS 目錄名 -f ] 文件名

常用參數

  • -b 定位可執行文件
  • -m 定位幫助文件
  • -s 定位源代碼文件
  • -u 搜索默認路徑下除可執行文件、源代碼文件、幫助文件以外的其它文件
  • -B 指定搜索可執行文件的路徑
  • -M 指定搜索幫助文件的路徑
  • -S 指定搜索源代碼文件的路徑

使用實例

1.將和 svn 文件相關的文件都查找出來。

<code>whereis svn/<code>

2.只將二進制文件查找出來。

<code>whereis -b svn/<code>

18.locate 命令

可以很快速的搜尋檔案系統內是否有指定的檔案。

命令格式

Locate [選擇參數] [樣式]

常用參數

  • -e 將排除在尋找的範圍之外。
  • -1 如果 是 1.則啟動安全模式。在安全模式下,使用者不會看到權限無法看到 的檔案。這會始速度減慢,因為 locate 必須至實際的檔案系統中取得檔案的 權限資料。
  • -f 將特定的檔案系統排除在外,例如我們沒有到理要把 proc 檔案系統中的檔案 放在資料庫中。
  • -q 安靜模式,不會顯示任何錯誤訊息。
  • -n 至多顯示 n個輸出。
  • -r 使用正規運算式 做尋找的條件。
  • -o 指定資料庫存的名稱。
  • -d 指定資料庫的路徑

使用實例

1.查找和 pwd 相關的所有文件。

<code>locate pwd/<code> 
  1. 搜索etc 目錄下,所有以 m 開頭的文件。
<code>locate /etc/m/<code>

19. find 命令

主要作用是沿著文件層次結構向下遍歷,匹配符合條件的文件,並執行相應的操作。

命令格式

find [選項] [搜索路徑] [表達式]

常用參數

  • -print find 命令將匹配的文件輸出到標準輸出
  • -exec find 命令對匹配的文件執行該參數所給出的
  • shell 命令
  • -name 按照文件名查找文件
  • -type 查找某一類型的文件

使用實例

1.打印當前目錄文件目錄列表。

<code>find . -print/<code>

2.打印當前目錄下所有不以.txt 結尾的文件名。

<code>find . ! -name "*.txt"/<code>

3.打印當前目錄下所有權限為 777 的 php 文件。

<code>find . -type f -name "*.php" -perm 777/<code>

4.找到當前目錄下所有 php 文件,並顯示其詳細信息。

<code>find . -name "*.php" -exec ls -l {} \\;/<code>

5.查找當前目錄下所有 c 代碼文件,統計總行數。

<code>find . -type f -name "*.c" | xargs wc -l/<code>

xargs 命令可以從標準輸入接收輸入,並把輸入轉換為一個特定的參數列表。
命令格式: command | xargs [選項] [command]
xargs 命令應該緊跟在管道操作符之後,因為它以標準輸入作為主要的源數據流。
常用參數

  • -n 指定每行最大的參數數量
  • -d 指定分隔符


三、文件打包上傳和下載

20.tar 命令

用來壓縮和解壓文件。tar本身不具有壓縮功能。他是調用壓縮功能實現的。

命令格式

tar [必要參數] [選擇參數] [文件]

常用參數

必要參數:

  • -A 新增壓縮文件到已存在的壓縮
  • -B 設置區塊大小
  • -c 建立新的壓縮文件
  • -d 記錄文件的差別
  • -r 添加文件到已經壓縮的文件
  • -u 添加改變了和現有的文件到已經存在的壓縮文件
  • -x 從壓縮的文件中提取文件
  • -t 顯示壓縮文件的內容
  • -z 支持gzip解壓文件
  • -j 支持bzip2解壓文件
  • -Z 支持compress解壓文件
  • -v 顯示操作過程
  • -l 文件系統邊界設置
  • -k 保留原有文件不覆蓋
  • -m 保留文件不被覆蓋
  • -W 確認壓縮文件的正確性

可選參數:

  • -b 設置區塊數目
  • -C 切換到指定目錄
  • -f 指定壓縮文件
  • --help 顯示幫助信息
  • --version 顯示版本信息

使用實例

1.將文件打全部打包成tar包。

<code>tar -cvf test.tar test.log    # 僅打包,不壓縮! 

tar -zcvf test.tar.gz test.log # 打包後,以 gzip 壓縮

tar -zcvf test.tar.bz2 test.log # 打包後,以 bzip2 壓縮/<code>

2.將 tar 包解壓縮

<code>tar -zxvf test.tar.gz/<code>

21.gzip 命令

使用廣泛的壓縮程序,文件經它壓縮過後,其名稱後面會多出".gz"的擴展名。

命令格式

gzip [參數] [文件或者目錄]

常用參數

  • -a或--ascii  使用ASCII文字模式。
  • -c或--stdout或--to-stdout  把壓縮後的文件輸出到標準輸出設備,不去更動原始文件。
  • -d或--decompress或----uncompress  解開壓縮文件。
  • -f或--force  強行壓縮文件。不理會文件名稱或硬連接是否存在以及該文件是否為符號連接。
  • -h或--help  在線幫助。

使用實例

1.把 test1 目錄下的每個文件壓縮成.gz 文件。

<code>test6 $ gzip */<code>

四、文件權限設置

22.chmod 命令

用於改變linux系統文件或目錄的訪問權限。

命令格式

chmod [-cfvR] [--help] [--version] mode file

常用參數

必要參數:

  • -c 當發生改變時,報告處理信息
  • -f 錯誤信息不輸出
  • -R 處理指定目錄以及其子目錄下的所有文件
  • -v 運行時顯示詳細處理信息
  • 選擇參數:
  • --reference= 設置成具有指定目錄或者文件具有相同的權限
  • --version 顯示版本信息
  • + 使權限範圍內的目錄或者文件具有指定的權限
  • - 刪除權限範圍的目錄或者文件的指定權限
  • = 設置權限範圍內的目錄或者文件的權限為指定的值

權限範圍:

  • u :目錄或者文件的當前的用戶
  • g :目錄或者文件的當前的群組
  • o :除了目錄或者文件的當前用戶或群組之外的用戶或者群組
  • a :所有的用戶及群組

權限代號:

  • r:讀權限,用數字4表示
  • w:寫權限,用數字2表示
  • x:執行權限,用數字1表示
  • -:刪除權限,用數字0表示

使用實例

1.增加文件所有用戶組可執行權限

<code>chmod a+x test.log/<code>
  1. 刪除所有用戶的可執行權限
<code>chmod a-x test.log/<code>

23.chgrp 命令

可採用群組名稱或群組識別碼的方式改變文件或目錄的所屬群組。

命令格式

chgrp [選項] [組] [文件]

常用參數

必要參數:

  • -c 當發生改變時輸出調試信息
  • -f 不顯示錯誤信息
  • -R 處理指定目錄以及其子目錄下的所有文件
  • -v 運行時顯示詳細的處理信息
  • --dereference 作用於符號鏈接的指向,而不是符號鏈接本身
  • --no-dereference 作用於符號鏈接本身

選擇參數:

  • --reference=
  • --help 顯示幫助信息
  • --version 顯示版本信息

使用實例

1.改變文件的群組屬性

<code>chgrp -v bin test.log/<code>

2.改變文件test1.log 的群組屬性,使得文件test1.log的群組屬性和參考文件test.log的群組屬性相同

<code>chgrp --reference=test.log test1.log/<code>

24.chown 命令

通過chown改變文件的擁有者和群組。

命令格式

chown [選項] [所有者] [:[組]] 文件

常用參數

必要參數:

  • -c 顯示更改的部分的信息
  • -f 忽略錯誤信息
  • -h 修復符號鏈接
  • -R 處理指定目錄以及其子目錄下的所有文件
  • -v 顯示詳細的處理信息
  • -deference 作用於符號鏈接的指向,而不是鏈接文件本身

選擇參數:

  • --reference= 把指定的目錄/文件作為參考,把操作的文件/目錄設置成參考文件/目錄相同擁有者和群組
  • --from= 只有當前用戶和群組跟指定的用戶和群組相同時才進行改變
  • --help 顯示幫助信息
  • --version 顯示版本信息

使用實例

1.改變擁有者和群組

<code>chown mail:mail test.log/<code>

五、磁盤存儲

25. df 命令

顯示指定磁盤文件的可用空間。

命令格式

df [選項] [文件]

常用參數

必要參數:

  • -a 全部文件系統列表
  • -h 方便閱讀方式顯示
  • -H 等於“-h”,但是計算式,1K=1000,而不是1K=1024
  • -i 顯示inode信息
  • -k 區塊為1024字節
  • -l 只顯示本地文件系統
  • -m 區塊為1048576字節
  • --no-sync 忽略 sync 命令
  • -P 輸出格式為POSIX
  • --sync 在取得磁盤信息前,先執行sync命令
  • -T 文件系統類型

選擇參數:

  • --block-size= 指定區塊大小
  • -t 只顯示選定文件系統的磁盤信息
  • -x 不顯示選定文件系統的磁盤信息
  • --help 顯示幫助信息
  • --version 顯示版本信息

使用實例

1.顯示指定磁盤使用情況

<code>df -t ext3/<code>

26. du 命令

顯示每個文件和目錄的磁盤使用空間。

命令格式

du [選項] [文件]

常用參數

  • -a或-all 顯示目錄中個別文件的大小。
  • -b或-bytes 顯示目錄或文件大小時,以byte為單位。
    -- -c或--total 除了顯示個別目錄或文件的大小外,同時也顯示所有目錄或文件的總和。
  • -k或--kilobytes 以KB(1024bytes)為單位輸出。
  • -m或--megabytes 以MB為單位輸出。
  • -s或--summarize 僅顯示總計,只列出最後加總的值。
  • -h或--human-readable 以K,M,G為單位,提高信息的可讀性。
  • -x或--one-file-xystem 以一開始處理時的文件系統為準,若遇上其它不同的文件系統目錄則略過。
  • -L或--dereference 顯示選項中所指定符號鏈接的源文件大小。
  • -S或--separate-dirs 顯示個別目錄的大小時,並不含其子目錄的大小。
  • -X或--exclude-from= 在指定目錄或文件。
  • --exclude= 略過指定的目錄或文件。
  • -D或--dereference-args 顯示指定符號鏈接的源文件大小。
  • -H或--si 與-h參數相同,但是K,M,G是以1000為換算單位。
  • -l或--count-links 重複計算硬件鏈接的文件。

使用實例

1.顯示指定目錄或文件所佔空間

<code>du test # 目錄
du test.log # 文件/<code>

六、性能監控和優化命令

27.top 命令

顯示當前系統正在執行的進程的相關信息,包括進程ID、內存佔用率、CPU佔用率等。

命令格式

top [參數]

常見參數

  • -b 批處理
  • -c 顯示完整的治命令
  • -I 忽略失效過程
  • -s 保密模式
  • -S 累積模式
  • -i 設置間隔時間
  • -u 指定用戶名
  • -p 指定進程
  • -n 循環顯示的次數

使用實例

  1. 顯示進程信息。
<code>top/<code>

28.free 命令

顯示系統使用和空閒的內存情況,包括物理內存、交互區內存(swap)和內核緩衝區內存。

命令格式

free [參數]

常見參數

  • -b  以Byte為單位顯示內存使用情況
  • -k  以KB為單位顯示內存使用情況
  • -m  以MB為單位顯示內存使用情況
  • -g 以GB為單位顯示內存使用情況
  • -o  不顯示緩衝區調節列
  • -s  持續觀察內存使用狀況
  • -t  顯示內存總和列。
  • -V  顯示版本信息。

使用實例

1.顯示內存情況。

<code>free
free -g #以GB為單位
free -m #以MB為單位/<code>

29. vmstat

用來顯示虛擬內存的信息。

命令格式

  • vmstat [-a] [-n] [-S unit] [delay [ count]]
  • vmstat [-s] [-n] [-S unit]
  • vmstat [-m] [-n] [delay [ count]]
  • vmstat [-d] [-n] [delay [ count]]
  • vmstat [-p disk partition] [-n] [delay [ count]]
  • vmstat [-f]
  • vmstat [-V]

常見參數

  • -a:顯示活躍和非活躍內存
  • -f:顯示從系統啟動至今的fork數量
  • -m:顯示slabinfo
  • -n:只在開始時顯示一次各字段名稱
  • -s:顯示內存相關統計信息及多種系統活動數量
  • delay:刷新時間間隔。如果不指定,只顯示一條結果
  • count:刷新次數。如果不指定刷新次數,但指定了刷新時間間隔,這時刷新次數為無窮
  • -d:顯示磁盤相關統計信息
  • -p:顯示指定磁盤分區統計信息
  • -S:使用指定單位顯示。參數有 k 、K 、m 、M ,分別代表1000、1024、1000000、1048576字節(byte)。默認單位為K(1024 bytes)

使用實例

1.顯示活躍和非活躍內存。

<code>vmstat -a 5 5 # 5秒時間內進行5次採樣/<code>

30.lostat 命令

通過iostat方便查看CPU、網卡、tty設備、磁盤、CD-ROM 等等設備的活動情況, 負載信息。

命令格式

iostat [參數] [時間] [次數]

常見參數

  • -C 顯示CPU使用情況
  • -d 顯示磁盤使用情況
  • -k 以 KB 為單位顯示
  • -m 以 M 為單位顯示
  • -N 顯示磁盤陣列(LVM) 信息
  • -n 顯示NFS 使用情況
  • -p[磁盤] 顯示磁盤和分區的情況
  • -t 顯示終端和CPU的信息
  • -x 顯示詳細信息

使用實例

1.定時顯示所有信息。

<code>iostat 2 3 #每隔 2秒刷新顯示,且顯示3次/<code>

31. lsof 命令

用於查看你進程開打的文件,打開文件的進程,進程打開的端口(TCP、UDP)。

命令格式

lsof [參數] [文件]

常見參數

  • -a 列出打開文件存在的進程
  • -c 列出指定進程所打開的文件
  • -g 列出GID號進程詳情
  • -d 列出佔用該文件號的進程
  • +d 列出目錄下被打開的文件
  • +D 遞歸列出目錄下被打開的文件
  • -n 列出使用NFS的文件
  • -i 列出符合條件的進程。(4、6、協議、:端口、 @ip )
  • -p 列出指定進程號所打開的文件
  • -u 列出UID號進程詳情

使用實例

1.查看誰正在使用bash文件,也就是說查找某個文件相關的進程。

<code>lsof /bin/bash/<code>

七、網絡命令

32.ipconfig 命令

ifconfig 命令用來查看和配置網絡設備。

命令格式

ifconfig [網絡設備] [參數]

常見參數

  • up 啟動指定網絡設備/網卡
  • down 關閉指定網絡設備/網卡。
  • arp 設置指定網卡是否支持ARP協議
  • -promisc 設置是否支持網卡的promiscuous模式,如果選擇此參數,網卡將接收網絡中發給它所有的數據包
  • -allmulti 設置是否支持多播模式,如果選擇此參數,網卡將接收網絡中所有的多播數據包
  • -a 顯示全部接口信息
  • -s 顯示摘要信息(類似於 netstat -i)
  • add 給指定網卡配置IPv6地址
  • del 刪除指定網卡的IPv6地址

使用實例

1.啟動關閉指定網卡

<code>ifconfig eth0 up
ifconfig eth0 down/<code>

2.用ifconfig修改MAC地址

<code>ifconfig eth0 hw ether 00:AA:BB:CC:DD:EE/<code>

33. route 命令

Route命令是用於操作基於內核ip路由表,它的主要作用是創建一個靜態路由讓指定一個主機或者一個網絡通過一個網絡接口,如eth0。

命令格式

route [-f] [-p] [Command [Destination] [mask Netmask] [Gateway] [metric Metric]] [if Interface]]

常見參數

  • -c 顯示更多信息
  • -n 不解析名字
  • -v 顯示詳細的處理信息
  • -F 顯示發送信息
  • -C 顯示路由緩存
  • -f 清除所有網關入口的路由表。
  • -p 與 add 命令一起使用時使路由具有永久性。
  • add:添加一條新路由。
  • del:刪除一條路由。
  • -net:目標地址是一個網絡。
  • -host:目標地址是一個主機。
  • netmask:當添加一個網絡路由時,需要使用網絡掩碼。
  • gw:路由數據包通過網關。注意,你指定的網關必須能夠達到。
  • metric:設置路由跳數。
  • Command 指定您想運行的命令 (Add/Change/Delete/Print)。
  • Destination 指定該路由的網絡目標。

使用實例

1.顯示當前路由

<code>route 
route -n/<code>

2.添加網關/設置網關

<code>route add -net 224.0.0.0 netmask 240.0.0.0 dev eth0/<code>

34. ping 命令

確定網絡和各外部主機的狀態;跟蹤和隔離硬件和軟件問題;測試、評估和管理網絡。

命令格式

ping [參數] [主機名或IP地址]

常見參數

  • -d 使用Socket的SO_DEBUG功能
  • -f 極限檢測。大量且快速地送網絡封包給一臺機器,看它的回應
  • -n 只輸出數值
  • -q 不顯示任何傳送封包的信息,只顯示最後的結果
  • -r 忽略普通的Routing Table,直接將數據包送到遠端主機上。通常是查看本機的網絡接口是否有問題
  • -R 記錄路由過程
  • -v 詳細顯示指令的執行過程
  • -c 數目:在發送指定數目的包後停止
  • -i 秒數:設定間隔幾秒送一個網絡封包給一臺機器,預設值是一秒送一次 -I 網絡界面:使用指定的網絡界面送出數據包 -l 前置載入:設置在送出要求信息之前,先行發出的數據包 -p 範本樣式:設置填滿數據包的範本樣式 -s 字節數:指定發送的數據字節數,預設值是56,加上8字節的ICMP頭,一共是64ICMP數據字節 -t 存活數值:設置存活數值TTL的大小

使用實例

  1. ping 網關
<code>ping -b 192.168.120.1/<code>

35.traceroute 命令

讓你追蹤網絡數據包的路由途徑,預設數據包大小是40Bytes,用戶可另行設置。

命令格式

traceroute [參數] [主機]

常見參數

  • -d 使用Socket層級的排錯功能
  • -f 設置第一個檢測數據包的存活數值TTL的大小
  • -F 設置勿離斷位
  • -g 設置來源路由網關,最多可設置8個
  • -i 使用指定的網絡界面送出數據包
  • -I 使用ICMP回應取代UDP資料信息
  • -m 設置檢測數據包的最大存活數值TTL的大小
  • -n 直接使用IP地址而非主機名稱
  • -p 設置UDP傳輸協議的通信端口
  • -r 忽略普通的Routing Table,直接將數據包送到遠端主機上
  • -s 設置本地主機送出數據包的IP地址
  • -t 設置檢測數據包的TOS數值
  • -v 詳細顯示指令的執行過程
  • -w 設置等待遠端主機回報的時間
  • -x 開啟或關閉數據包的正確性檢驗

使用實例

1.traceroute 用法簡單、最常用的用法

<code>traceroute www.baidu.com/<code>
  1. 跳數設置
<code>traceroute -m 10 www.baidu.com/<code>

36.netstat 命令

用於顯示與IP、TCP、UDP和ICMP協議相關的統計數據,一般用於檢驗本機各端口的網絡連接情況。

命令格式

netstat [-acCeFghilMnNoprstuvVwx] [-A] [--ip]

常見參數

  • -a或–all 顯示所有連線中的Socket
  • -A或– 列出該網絡類型連線中的相關地址
  • -c或–continuous 持續列出網絡狀態
  • -C或–cache 顯示路由器配置的快取信息
  • -e或–extend 顯示網絡其他相關信息
  • -F或–fib 顯示FIB
  • -g或–groups 顯示多重廣播功能群組組員名單
  • -h或–help 在線幫助
  • -i或–interfaces 顯示網絡界面信息表單
  • -l或–listening 顯示監控中的服務器的Socket
  • -M或–masquerade 顯示偽裝的網絡連線
  • -n或–numeric 直接使用IP地址,而不通過域名服務器
  • -N或–netlink或–symbolic 顯示網絡硬件外圍設備的符號連接名稱
  • -o或–timers 顯示計時器
  • -p或–programs 顯示正在使用Socket的程序識別碼和程序名稱
  • -r或–route 顯示Routing Table
  • -s或–statistice 顯示網絡工作信息統計表
  • -t或–tcp 顯示TCP傳輸協議的連線狀況
  • -u或–udp 顯示UDP傳輸協議的連線狀況
  • -v或–verbose 顯示指令執行過程
  • -V或–version 顯示版本信息
  • -w或–raw 顯示RAW傳輸協議的連線狀況
  • -x或–unix 此參數的效果和指定”-A unix”參數相同
  • –ip或–inet 此參數的效果和指定”-A inet”參數相同

使用實例

  1. 列出所有端口
<code>netstat -a/<code>

37.telnet 命令

執行telnet指令開啟終端機階段作業,並登入遠端主機。

命令格式

telnet [參數] [主機]

常見參數

  • -8 允許使用8位字符資料,包括輸入與輸出
  • -a 嘗試自動登入遠端系統
  • -b 使用別名指定遠端主機名稱
  • -c 不讀取用戶專屬目錄裡的.telnetrc文件
  • -d 啟動排錯模式
  • -e 設置脫離字符
  • -E 濾除脫離字符
  • -f 此參數的效果和指定"-F"參數相同

使用實例

1.遠程服務器無法訪問

<code>telnet 192.168.120.206/<code>

八、其他命令

38.ln 命令

為某一個文件在另外一個位置建立一個同步的鏈接.當我們需要在不同的目錄,用到相同的文件時,我們不需要在每一個需要的目錄下都放一個必須相同的文件,我們只要在某個固定的目錄,放上該文件,然後在 其它的目錄下用ln命令鏈接(link)它就可以,不必重複的佔用磁盤空間。

命令格式

ln [參數] [源文件或目錄] [目標文件或目錄]

常用參數

必要參數:

  • -b 刪除,覆蓋以前建立的鏈接
  • -d 允許超級用戶製作目錄的硬鏈接
  • -f 強制執行
  • -i 交互模式,文件存在則提示用戶是否覆蓋
  • -n 把符號鏈接視為一般目錄
  • -s 軟鏈接(符號鏈接)
  • -v 顯示詳細的處理過程

選擇參數:

  • -S “-S ”或 “--suffix=”
  • -V “-V”或“--version-control=”

使用實例

1.為 test.log文件創建軟鏈接linktest。

<code>ln -s test.log linktest/<code> 

2.為 test.log創建硬鏈接lntest。

<code>ln test.log lntest/<code>

39.diff 命令

比較單個文件或者目錄內容。

命令格式

diff [參數] [文件1或目錄1] [文件2或目錄2]

常用參數

  • -c 上下文模式,顯示全部內文,並標出不同之處
  • -u 統一模式,以合併的方式來顯示文件內容的不同
  • -a 只會逐行比較文本文件
  • -N 在比較目錄時,若文件 A 僅出現在某個目錄中,預設會顯示:Only in 目錄。若使用 -N 參數,則 diff 會將文件 A 與一個空白的文件比較
  • -r 遞歸比較目錄下的文件

使用實例

1.顯示 test1.txt 和 test2.txt 兩個文件差異。

<code>diff test1.txt test2.txt/<code>

40.grep 命令

一種強大的文本搜索工具,它能使用正則表達式搜索文本,並把匹 配的行打印出來。

命令格式

grep [option] pattern file

常用參數

  • -c 計算找到‘搜尋字符串’(即 pattern)的次數
  • -i 忽略大小寫的不同,所以大小寫視為相同
  • -n 輸出行號
  • -v 反向選擇,打印不匹配的行
  • -r 遞歸搜索
  • --color=auto 將找到的關鍵詞部分加上顏色顯示

使用實例

1.將 /etc/passwd 文件中出現 root 的行取出來,關鍵詞部分加上顏色顯示。

<code>grep "root" /etc/passwd --color=auto
cat /etc/passwd | grep "root" --color=auto/<code>

2.將 /etc/passwd 文件中沒有出現 root 和 nologin 的行取出來。

<code>grep -v "root" /etc/passwd | grep -v "nologin"/<code>

41.wc 命令

用來顯示文件所包含的行、字和字節數。

命令格式

wc [選項] [文件]

常用參數

  • -c 統計字節數
  • -l 統計行數
  • -m 統計字符數,這個標誌不能與 -c 標誌一起使用
  • -w 統計字數,一個字被定義為由空白、跳格或換行字符分隔的字符串
  • -L 打印最長行的長度

使用實例

1.統計文件的字節數、行數和字符數。

<code>wc -c test.txt
wc -l test.txt
wc -m test.txt/<code>

2.統計文件的字節數、行數和字符數,只打印數字,不打印文件名。

<code>cat test.txt | wc -c
cat test.txt | wc -l
cat test.txt | wc -m/<code>

42. ps 命令

用來顯示當前進程的狀態。

命令格式

ps[參數]

常用參數

  • a 顯示所有進程
  • -a 顯示同一終端下的所有程序
  • -A 顯示所有進程
  • c 顯示進程的真實名稱
  • -N 反向選擇
  • -e 等於“-A”
  • e 顯示環境變量
  • f 顯示程序間的關係
  • -H 顯示樹狀結構
  • r 顯示當前終端的進程
  • T 顯示當前終端的所有程序
  • u 指定用戶的所有進程
  • -au 顯示較詳細的資訊
  • -aux 顯示所有包含其他使用者的行程
  • -C 列出指定命令的狀況
  • --lines 每頁顯示的行數
  • --width 每頁顯示的字符數

使用實例

1.顯示所有進程信息。

<code>ps -A/<code>
  1. 顯示指定用戶信息。
<code>ps -u root/<code>
  1. 顯示所有進程信息,連同命令行。
<code>ps -ef/<code>

43.watch 命令

可以將命令的輸出結果輸出到標準輸出設備,多用於週期性執行命令/定時執行命令。

命令格式

watch [參數] [命令]

常用參數

  • -n或--interval watch缺省每2秒運行一下程序,可以用-n或-interval來指定間隔的時間。
  • -d或--differences 用-d或--differences 選項watch 會高亮顯示變化的區域。 而-d=cumulative選項會把變動過的地方(不管最近的那次有沒有變動)都高亮顯示出來。
  • -t 或-no-title 會關閉watch命令在頂部的時間間隔,命令,當前時間的輸出。
  • -h, --help 查看幫助文檔

使用實例

1.每隔一秒高亮顯示網絡鏈接數的變化情況

<code>watch -n 1 -d netstat -ant/<code>

2.每隔一秒高亮顯示http鏈接數的變化情況

<code>watch -n 1 -d 'pstree|grep http'/<code>

44. at 命令

在一個指定的時間執行一個指定任務,只能執行一次。(需開啟atd進程)

命令格式

at [參數] [時間]

常用參數

  • -m 當指定的任務被完成之後,將給用戶發送郵件,即使沒有標準輸出
  • -I atq的別名
  • -d atrm的別名
  • -v 顯示任務將被執行的時間
  • -c 打印任務的內容到標準輸出
  • -V 顯示版本信息
  • -q 使用指定的列隊
  • -f 從指定文件讀入任務而不是從標準輸入讀入
  • -t 以時間參數的形式提交要運行的任務

使用實例

1.3天后的下午5點執行/bin/ls

<code>at 5pm+3 days 
at> /bin/ls
at> /<code>

45.crontab 命令

在固定的間隔時間執行指定的系統指令或 shell>

命令格式

crontab [-u user] file 或

crontab [-u user] [ -e | -l | -r ]

常用參數

  • -u user:用來設定某個用戶的crontab服務,例如,“-u ixdba”表示設定ixdba用戶的crontab服務,此參數一般有root用戶來運行。
  • file:file是命令文件的名字,表示將file做為crontab的任務列表文件並載入crontab。如果在命令行中沒有指定這個文件,crontab命令將接受標準輸入(鍵盤)上鍵入的命令,並將它們載入crontab。
  • -e:編輯某個用戶的crontab文件內容。如果不指定用戶,則表示編輯當前用戶的crontab文件。
  • -l:顯示某個用戶的crontab文件內容,如果不指定用戶,則表示顯示當前用戶的crontab文件內容。
  • -r:從/var/spool/cron目錄中刪除某個用戶的crontab文件,如果不指定用戶,則默認刪除當前用戶的crontab文件。
  • -i:在刪除用戶的crontab文件時給確認提示。

使用實例

1.列出 crontab 文件。

<code>crontab -l/<code>
<code>crontab -e/<code>

Crontab 任務實例

1.每1分鐘執行一次command

<code>* * * * * command/<code>

2.每小時的第3和第15分鐘執行

<code>3,15 * * * * command/<code>

3.在上午8點到11點的第3和第15分鐘執行

<code>3,15 8-11 * * * command/<code>


分享到:


相關文章: