Linux核心命令彙總(思維導圖+實例講解)

一個小時學會所有Linux核心命令

在這裏插入圖片描述

文件相關命令

在這裏插入圖片描述

文件屬性操作

文件屬性組成

在這裏插入圖片描述

Linux上的一個文件屬性組成如上,需要注意的是第二部分,格式如下

在這裏插入圖片描述

文件類型

    當爲[ d]則是目錄
    當爲[ -]則是普通文件;
    若是[ l]則表示爲鏈接文檔(link file);
    若是[ b]則表示爲裝置文件裏面的可供儲存的接口設備(可隨機存取裝置);
    若是[ c]則表示爲裝置文件裏面的串行端口設備,例如鍵盤、鼠標(一次性讀取裝置);
    若是[s ]則表示爲套接接口文件;
    若是[ p]則表示爲管道。

文件權限

包括
文件所有者權限 
文件所屬羣組權限
其他用戶權限

chgrp

功能
chgrp命令用來改變指定文件所屬的用戶組。
如果用戶不是該文件的文件主或超級用戶(root),則不能改變該文件的組。
輸入
chgrp [-cfhRv][所屬羣組][文件或目錄]
-c或——changes:效果類似“-v”參數,但僅回報更改的部分;
-f或--quiet或——silent:不顯示錯誤信息;
-h或--no-dereference:只對符號連接的文件作修改,而不是該其他任何相關文件;
-R或——recursive:遞歸處理,將指令目錄下的所有文件及子目錄一併處理;
-v或——verbose:顯示指令執行過程;

其中,組名可以是用戶組的id,也可以是用戶組的組名。
文件名可以 是由空格分開的要改變屬組的文件列表,也可以是由通配符描述的文件集合。

實例
將文件a的用戶組從root改爲mcc
sudo chgrp mcc a

chown

功能

chown將指定文件的擁有者改爲指定的用戶或組,
普通用戶不能將自己的文件改變成其他的擁有者。
其操作權限一般爲管理員root。

輸入
chown [-cfhvR] user[:group] file.

文件是以空格分開的要改變權限的文件列表,支持通配符。
user : 用戶可以是用戶名或者用戶ID;
group : 組可以是組名或者組ID;
-c : 顯示更改的部分的信息
-f : 忽略錯誤信息
-h :修復符號鏈接
-v : 顯示詳細的處理信息
-R : 處理指定目錄以及其子目錄下的所有文件
實例
改變擁有者和羣組
    chown mail:mail log2012.log
改變文件擁有者
    chown root: log2012.log
改變文件羣組
    chown :mail log2012.log
改變指定目錄以及其子目錄下的所有文件的擁有者和羣組
    chown -R -v root:mail test6

chmod

功能

改變文件的權限

輸入
chmod [-cfvR] [--help] [--version] mode file...
參數說明
mode : 權限設定字串,格式如下 :

[ugoa...][[+-=][rwxX]...][,...]
其中:

u 表示該文件的擁有者,g 表示與該文件的擁有者屬於同一個羣體(group)者,o 表示其他以外的人,a 表示這三者皆是。
+ 表示增加權限、- 表示取消權限、= 表示唯一設定權限。
r 表示可讀取,w 表示可寫入,x 表示可執行,X 表示只有當該文件是個子目錄或者該文件已經被設定過爲可執行。
其他參數說明:

-c : 若該文件權限確實已經更改,才顯示其更改動作
-f : 若該文件權限無法被更改也不要顯示錯誤訊息
-v : 顯示權限變更的詳細資料
-R : 對目前目錄下的所有文件與子目錄進行相同的權限變更(即以遞迴的方式逐個變更)
--help : 顯示輔助說明
--version : 顯示版本
實例
將文件 file1.txt 設爲所有人皆可讀取 :

chmod ugo+r file1.txt
將文件 file1.txt 設爲所有人皆可讀取 :

chmod a+r file1.txt
將文件 file1.txt 與 file2.txt 設爲該文件擁有者,與其所屬同一個羣體者可寫入,但其他以外的人則不可寫入 :

chmod ug+w,o-w file1.txt file2.txt
將 ex1.py 設定爲只有該文件擁有者可以執行 :

chmod u+x ex1.py
將目前目錄下的所有文件與子目錄皆設爲任何人可讀取 :

chmod -R a+r *
此外chmod也可以用數字來表示權限如 :

chmod 777 file
語法爲:

chmod abc file
其中a,b,c各爲一個數字,分別表示User、Group、及Other的權限。

r=4,w=2,x=1
若要rwx屬性則4+2+1=7;
若要rw-屬性則4+2=6;
若要r-x屬性則4+1=5。
chmod a=rwx filechmod 777 file
效果相同

chmod ug=rwx,o=x filechmod 771 file

umask

功能
Linux umask命令指定在建立文件時預設的權限掩碼。

umask可用來設定[權限掩碼][權限掩碼]是由3個八進制的數字所組成,

將現有的存取權限減掉權限掩碼後,即可產生建立文件時預設的權限。
輸入
umask [-S][權限掩碼]
實例
查看文件掩碼
kylechen@kyle:~$ umask
0022

以非數字的形式查看文件掩碼
kylechen@kyle:~$ umask -S
u=rwx,g=rx,o=rx

更改文件掩碼
kylechen@kyle:~$ umask 002
kylechen@kyle:~$ umask
0002

test

功能

測試文件的某項屬性

輸入
test [參數][文件]

在這裏插入圖片描述
在這裏插入圖片描述

實例

實例一:測試文件 /dmtsai 是否存在
在這裏插入圖片描述

文件目錄操作

cd

功能

變換目錄

pwd

功能

顯示當前目錄

mkdir

功能

建立一個新的目錄

rmdir

功能

刪除一個空的目錄

tree

功能

樹狀列出目錄內容

文件整體操作

ls

功能
ls命令用於顯示指定工作目錄下之內容
輸入
 ls [-alrtAFR] [name]
 
參數 :

-a 顯示所有文件及目錄 (ls內定將文件名或目錄名稱開頭爲"."的視爲隱藏檔,不會列出)
-l 除文件名稱外,亦將文件型態、權限、擁有者、文件大小等資訊詳細列出
-r 將文件以相反次序顯示(原定依英文字母次序)
-t 將文件依建立時間之先後次序列出
-A 同 -a ,但不列出 "." (目前目錄)".." (父目錄)
-F 在列出的文件名稱後加一符號;例如可執行檔則加 "*", 目錄則加 "/"
-R 若目錄下有文件,則以下之文件亦皆依序列出
實例
列出根目錄(\)下的所有目錄:

ls /
bin               dev   lib         media  net   root     srv  upload  www
boot              etc   lib64       misc   opt   sbin     sys  usr
home  lost+found  mnt    proc  selinux  tmp  var
列出目前工作目錄下所有名稱是 s 開頭的文件,越新的排越後面 :

ls -ltr s*
將 /bin 目錄以下所有目錄及文件詳細資料列出 :

ls -lR /bin
列出目前工作目錄下所有文件及目錄;目錄於名稱後加 "/", 可執行檔於名稱後加 "*" :

ls -AF

ll

功能
ll並不是linux下一個基本的命令,它實際上是ls -l的一個別名。
Ubuntu默認不支持命令ll,必須用 ls -l,這樣使用起來不是很方便。
如果要使用此命令,可以作如下修改:
打開 ~/.bashrc
找到 #alias ll=’ls -l’,去掉前面的#就可以了。

cp

功能

主要用於複製文件或目錄

輸入
cp [options] source dest


-a:此選項通常在複製目錄時使用,它保留鏈接、文件屬性,並複製目錄下的所有內容。其作用等於dpR參數組合。
-d:複製時保留鏈接。這裏所說的鏈接相當於Windows系統中的快捷方式。
-f:覆蓋已經存在的目標文件而不給出提示。
-i:與-f選項相反,在覆蓋目標文件之前給出提示,要求用戶確認是否覆蓋,回答"y"時目標文件將被覆蓋。
-p:除複製文件的內容外,還把修改時間和訪問權限也複製到新文件中。
-r:若給出的源文件是一個目錄文件,此時將複製該目錄下所有的子目錄和文件。
-l:不復制文件,只是生成鏈接文件。
實例

使用指令"cp"將當前目錄"test/"下的所有文件複製到新目錄"newtest"下,輸入如下命令:
$ cp –r test/ newtest

rm

功能

rm命令用於刪除一個文件或者目錄

輸入
rm [options] name...
參數:

-i 刪除前逐一詢問確認。
-f 即使原檔案屬性設爲唯讀,亦直接刪除,無需逐一確認。
-r 將目錄及以下之檔案亦逐一刪除。
實例
刪除文件可以直接使用rm命令,若刪除目錄則必須配合選項"-r",例如:

# rm  test.txt 
rm:是否刪除 一般文件 "test.txt"? y  
# rm  homework  
rm: 無法刪除目錄"homework": 是一個目錄  
# rm  -r  homework  
rm:是否刪除 目錄 "homework"? y 
刪除當前目錄下的所有文件及目錄,命令行爲:

rm  -r  * 
文件一旦通過rm命令刪除,則無法恢復,所以必須格外小心地使用該命令。

mv

功能

用來爲文件或目錄改名、或將文件或目錄移入其它位置

輸入

在這裏插入圖片描述

實例
將文件 aaa 更名爲 bbb :

mv aaa bbb
將info目錄放入logs目錄中。注意,如果logs目錄不存在,則該命令將info改名爲logs。

mv info/ logs 
再如將/usr/student下的所有文件和目錄移到當前目錄下,命令行爲:

$ mv /usr/student/*  . 

touch

功能

touch命令用於修改文件或者目錄的時間屬性,包括存取時間和更改時間。若文件不存在,系統會建立一個新的文件。

輸入
touch [-acfm][-d<日期時間>][-r<參考文件或目錄>] [-t<日期時間>][--help][--version][文件或目錄…]
參數說明:
a 改變檔案的讀取時間記錄。
m 改變檔案的修改時間記錄。
c 假如目的檔案不存在,不會建立新的檔案。與 --no-create 的效果一樣。
f 不使用,是爲了與其他 unix 系統的相容性而保留。
r 使用參考檔的時間記錄,與 --file 的效果一樣。
d 設定時間與日期,可以使用各種不同的格式。
t 設定檔案的時間記錄,格式與 date 指令相同。
--no-create 不會建立新檔案。
--help 列出指令格式。
--version 列出版本訊息。
實例
使用指令"touch"修改文件"testfile"的時間屬性爲當前系統時間,輸入如下命令:

$ touch testfile                #修改文件的時間屬性 
首先,使用ls命令查看testfile文件的屬性,如下所示:

$ ls -l testfile                #查看文件的時間屬性  
#原來文件的修改時間爲16:09  
-rw-r--r-- 1 hdd hdd 55 2011-08-22 16:09 testfile  
執行指令"touch"修改文件屬性以後,並再次查看該文件的時間屬性,如下所示:

$ touch testfile                #修改文件時間屬性爲當前系統時間  
$ ls -l testfile                #查看文件的時間屬性  
#修改後文件的時間屬性爲當前系統時間  
-rw-r--r-- 1 hdd hdd 55 2011-08-22 19:53 testfile  
使用指令"touch"時,如果指定的文件不存在,則將創建一個新的空白文件。例如,在當前目錄下,使用該指令創建一個空白文件"file",輸入如下命令:

$ touch file            #創建一個名爲“file”的新的空白文件 

file

功能

file命令用於辨識文件類型。

輸入
file [-bcLvz][-f <名稱文件>][-m <魔法數字文件>...][文件或目錄...]
參數:

-b  列出辨識結果時,不顯示文件名稱。
-c  詳細顯示指令執行過程,便於排錯或分析程序執行的情形。
-f<名稱文件>  指定名稱文件,其內容有一個或多個文件名稱時,讓file依序辨識這些文件,格式爲每列一個文件名稱。
-L  直接顯示符號連接所指向的文件的類別。
-m<魔法數字文件>  指定魔法數字文件。
-v  顯示版本信息。
-z  嘗試去解讀壓縮文件的內容。
[文件或目錄...] 要確定類型的文件列表,多個文件之間使用空格分開,可以使用shell通配符匹配多個文件。
實例
顯示文件類型:

[root@localhost ~]# file install.log
install.log: UTF-8 Unicode text

[root@localhost ~]# file -b install.log      <== 不顯示文件名稱
UTF-8 Unicode text

[root@localhost ~]# file -i install.log      <== 顯示MIME類別。
install.log: text/plain; charset=utf-8

[root@localhost ~]# file -b -i install.log
text/plain; charset=utf-8

which

功能

which指令會在環境變量$PATH設置的目錄裏查找符合條件的文件。並顯示它所在的絕對路徑

輸入

which [文件…]

實例
使用指令"which"查看指令"bash"的絕對路徑,輸入如下命令:

$ which bash
上面的指令執行後,輸出信息如下所示:

/bin/bash                   #bash可執行程序的絕對路徑 

type

功能

查找是否是系統所屬的命令

實例
kylechen@kyle:~$ type ls
ls 是 `ls --color=auto' 的別名


kylechen@kyle:~$ type if
if 是 shell 關鍵字


kylechen@kyle:~$ type cd
cd 是 shell 內建

whereis

功能

該指令只能用於查找二進制文件、源代碼文件和man手冊頁,一般文件的定位需使用locate命令。

輸入
whereis [-bfmsu][-B <目錄>...][-M <目錄>...][-S <目錄>...][文件...]
參數:

-b  只查找二進制文件。
-B<目錄>  只在設置的目錄下查找二進制文件。
-f  不顯示文件名前的路徑名稱。
-m  只查找說明文件。
-M<目錄>  只在設置的目錄下查找說明文件。
-s  只查找原始代碼文件。
-S<目錄>  只在設置的目錄下查找原始代碼文件。
-u  查找不包含指定類型的文件。
實例
使用指令"whereis"查看指令"bash"的位置,輸入如下命令:

$ whereis bash 
上面的指令執行後,輸出信息如下所示:

bash:/bin/bash/etc/bash.bashrc/usr/share/man/man1/bash.1.gz 
注意:以上輸出信息從左至右分別爲查詢的程序名、bash路徑、bash的man 手冊頁路徑。

如果用戶需要單獨查詢二進制文件或幫助文件,可使用如下命令:

$ whereis -b bash 
$ whereis -m bash 
輸出信息如下:

$ whereis -b bash               #顯示bash 命令的二進制程序  
bash: /bin/bash /etc/bash.bashrc /usr/share/bash    # bash命令的二進制程序的地址  
$ whereis -m bash               #顯示bash 命令的幫助文件  
bash: /usr/share/man/man1/bash.1.gz  #bash命令的幫助文件地址  

locate

功能

Linux locate命令用於查找符合條件的文檔,
他會去保存文檔和目錄名稱的數據庫內,查找合乎範本樣式條件的文檔或目錄。
一般情況我們只需要輸入 locate your_file_name 即可查找指定文件。

附加說明

locate與find 不同: find 是去硬盤找,locate 只在/var/lib/slocate資料庫中找。
locate的速度比find快,它並不是真的查找,而是查數據庫,一般文件數據庫在/var/lib/slocate/slocate.db中,所以locate的查找並不是實時的,而是以數據庫的更新爲準,一般是系統自己維護,也可以手工升級數據庫 ,命令爲:

locate -u

輸入
locate [-d ][--help][--version][範本樣式...]
參數:

-d或--database= 配置locate指令使用的數據庫。
locate指令預設的數據庫位於/var/lib/slocate目錄裏,文檔名爲slocate.db,您可使用 這個參數另行指定。
--help  在線幫助。
--version  顯示版本信息。
實例
查找passwd文件,輸入以下命令:
locate passwd

find

功能

查找文件

實例
find   -name april*                     在當前目錄下查找以april開始的文件
find   -name   april*   fprint file        在當前目錄下查找以april開始的文件,並把結果輸出到file中
find   -name ap* -o -name may*   查找以ap或may開頭的文件
find   /mnt   -name tom.txt   -ftype vfat   在/mnt下查找名稱爲tom.txt且文件系統類型爲vfat的文件
find   /mnt   -name t.txt ! -ftype vfat   在/mnt下查找名稱爲tom.txt且文件系統類型不爲vfat的文件
find   /tmp   -name wa* -type l            在/tmp下查找名爲wa開頭且類型爲符號鏈接的文件
find   /home   -mtime   -2                 在/home下查最近兩天內改動過的文件
find /home    -atime -1                  查1天之內被存取過的文件
find /home -mmin    +60                  在/home下查60分鐘前改動過的文件
find /home   -amin   +30                  查最近30分鐘前被存取過的文件
find /home   -newer   tmp.txt             在/home下查更新時間比tmp.txt近的文件或目錄
find /home   -anewer   tmp.txt            在/home下查存取時間比tmp.txt近的文件或目錄
find   /home   -used   -2                  列出文件或目錄被改動過之後,在2日內被存取過的文件或目錄
find   /home   -user cnscn                列出/home目錄內屬於用戶cnscn的文件或目錄
find   /home   -uid   +501                  列出/home目錄內用戶的識別碼大於501的文件或目錄
find   /home   -group   cnscn              列出/home內組爲cnscn的文件或目錄
find   /home   -gid 501                   列出/home內組id爲501的文件或目錄
find   /home   -nouser                    列出/home內不屬於本地用戶的文件或目錄
find   /home   -nogroup                   列出/home內不屬於本地組的文件或目錄
find   /home    -name tmp.txt    -maxdepth   4   列出/home內的tmp.txt 查時深度最多爲3層
find   /home   -name tmp.txt   -mindepth   3   從第2層開始查
find   /home   -empty                     查找大小爲0的文件或空目錄
find   /home   -size   +512k                查大於512k的文件
find   /home   -size   -512k               查小於512k的文件
find   /home   -links   +2                查硬連接數大於2的文件或目錄
find   /home   -perm   0700                查權限爲700的文件或目錄
find   /tmp   -name tmp.txt   -exec cat {} \;
find   /tmp   -name   tmp.txt   -ok   rm {} \;

find    /   -amin    -10     # 查找在系統中最後10分鐘訪問的文件
find    /   -atime   -2        # 查找在系統中最後48小時訪問的文件
find    /   -empty             # 查找在系統中爲空的文件或者文件夾
find    /   -group   cat        # 查找在系統中屬於 groupcat的文件
find    /   -mmin   -5         # 查找在系統中最後5分鐘裏修改過的文件
find    /   -mtime   -1       #查找在系統中最後24小時裏修改過的文件
find    /   -nouser           #查找在系統中屬於作廢用戶的文件
find    /   -user    fred     #查找在系統中屬於FRED這個用戶的文件

文件內容操作

cat

功能

由第一行開始顯示文件內容
用於連接文件並打印到標準輸出設備上

輸入
cat [-AbeEnstTuv] [--help] [--version] fileName
參數說明:
-n 或 --number:由 1 開始對所有輸出的行數編號。
-b 或 --number-nonblank:和 -n 相似,只不過對於空白行不編號。
-s 或 --squeeze-blank:當遇到有連續兩行以上的空白行,就代換爲一行的空白行。
-v 或 --show-nonprinting:使用 ^ 和 M- 符號,除了 LFD 和 TAB 之外。
-E 或 --show-ends : 在每行結束處顯示 $。
-T 或 --show-tabs: 將 TAB 字符顯示爲 ^I。
-A, --show-all:等價於 -vET。
-e:等價於"-vE"選項;
-t:等價於"-vT"選項;
實例
把 textfile1 的文檔內容加上行號後輸入 textfile2 這個文檔裏:

cat -n textfile1 > textfile2
把 textfile1 和 textfile2 的文檔內容加上行號(空白行不加)之後將內容附加到 textfile3 文檔裏:

cat -b textfile1 textfile2 >> textfile3
清空 /etc/test.txt 文檔內容:

cat /dev/null > /etc/test.txt
cat 也可以用來製作鏡像文件。例如要製作軟盤的鏡像文件,將軟盤放好後輸入:

cat /dev/fd0 > OUTFILE
相反的,如果想把 image file 寫到軟盤,輸入:

cat IMG_FILE > /dev/fd0

tac

功能

從最後一行開始顯示,
可以看出 tac 是 cat 的倒着寫!
將文件全部內容從尾到頭反向連續輸出到標準輸出(屏幕)上

nl

功能

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

輸入
1.命令格式:

nl [選項][文件]

2.命令參數:

-b  :指定行號指定的方式,主要有兩種:
-b a :表示不論是否爲空行,也同樣列出行號(類似 cat -n);
-b t :如果有空行,空的那一行不要列出行號(默認值);
-n  :列出行號表示的方法,主要有三種:
-n ln :行號在螢幕的最左方顯示;
-n rn :行號在自己欄位的最右方顯示,且不加 0 ;
-n rz :行號在自己欄位的最右方顯示,且加 0 ;
-w  :行號欄位的佔用的位數。
-p 在邏輯定界符處不重新開始計算。 
實例
實例一:用 nl 列出 log2012.log 的內容

命令:

nl log2012.log

輸出:

[root@localhost test]# nl log2012.log 

     1  2012-01

     2  2012-02

       

       

     3  ======[root@localhost test]#

說明:

文件中的空白行,nl 不會加上行號
實例二:用 nl 列出 log2012.log 的內容,空本行也加上行號

命令:

nl -b a log2012.log

輸出:

[root@localhost test]# nl -b a log2012.log 

     1  2012-01

     2  2012-02

     3

     4

     5  ======[root@localhost test]#


實例3:讓行號前面自動補上0,統一輸出格式

命令:

輸出:

[root@localhost test]# nl -b a -n rz log2014.log 

000001  2014-01

000002  2014-02

000003  2014-03

000004  2014-04

000005  2014-05

000006  2014-06

000007  2014-07

000008  2014-08

000009  2014-09

000010  2014-10

000011  2014-11

000012  2014-12

000013  =======

[root@localhost test]# nl -b a -n rz -w 3 log2014.log 

001     2014-01

002     2014-02

003     2014-03

004     2014-04

005     2014-05

006     2014-06

007     2014-07

008     2014-08

009     2014-09

010     2014-10

011     2014-11

012     2014-12

013     =======

more

功能

一頁一頁的顯示文件內容

輸入
more [filename]

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

less

功能

less 與 more 類似,
但是比 more 更好的是,他可以往前翻頁!

實例
1、查看文件

less log2013.log
2、ps查看進程信息並通過less分頁顯示

ps -ef |less
3、查看命令歷史使用記錄並通過less分頁顯示

[root@localhost test]# history | less
22  scp -r tomcat6.0.32 [email protected]:/opt/soft
23  cd ..
24  scp -r web [email protected]:/opt/
25  cd soft
26  ls
……省略……
4、瀏覽多個文件

less log2013.log log2014.log
說明:
輸入 :n後,切換到 log2014.log
輸入 :p 後,切換到log2013.log

1.全屏導航

ctrl + F - 向前移動一屏
ctrl + B - 向後移動一屏
ctrl + D - 向前移動半屏
ctrl + U - 向後移動半屏
2.單行導航

j - 向前移動一行
k - 向後移動一行
3.其它導航

G - 移動到最後一行
g - 移動到第一行
q / ZZ - 退出 less 命令

head

功能

只看頭幾行

輸入
1、用法

head [選項] [文件..]

2、命令選項

-c, --bytes=[-]K   k,顯示文檔開始的前k個字節,-k,不顯示文檔結尾的最後 k 個字節
-n, --lines=[-]K    k,顯示文檔開始的前k行,-k,不顯示文檔結尾的最後 k 行
實例
1)顯示  a.txt  前 5 行內容

複製代碼
[root@mini ~]# cat a.txt 
01
02
03
04
05
06
07
08
09
10
11
12
[root@mini ~]# head -5 a.txt 
01
02
03
04
05
[root@mini ~]# head -n 5 a.txt 
01
02
03
04
05
複製代碼
 

2)顯示除了  a.txt  最後 10 行的內容

[root@mini ~]# head -n -10 a.txt 
01
02
[root@mini ~]# 

tail

功能

只看尾巴幾行

輸入
tail [參數] [文件]  
參數:

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

有一個常用的參數 -f 常用於查閱正在改變的日誌文件。
tail -f filename 會把 filename 文件裏的最尾部的內容顯示在屏幕上,
並且不斷刷新,只要 filename 更新就可以看到最新的文件內容。
實例
要顯示 notes.log 文件的最後 10 行,請輸入以下命令:

tail notes.log
要跟蹤名爲 notes.log 的文件的增長情況,請輸入以下命令:

tail -f notes.log
此命令顯示 notes.log 文件的最後 10 行。當將某些行添加至 notes.log 文件時,tail 命令會繼續顯示這些行。 顯示一直繼續,直到您按下(Ctrl-C)組合鍵停止顯示。

顯示文件 notes.log 的內容,從第 20 行至文件末尾:

tail +20 notes.log
顯示文件 notes.log 的最後 10 個字符:

tail -c 10 notes.log

tar

功能

在這裏插入圖片描述
linux下的壓縮文件類型如上
現在 compress zip指令幾乎不用了
一般用的是gzip bzip2 xz的壓縮指令
但是用這三個指定每次只能壓縮/解壓縮一個文件
故引入了tar指令 先將要壓縮的多個文件打包 然後再壓縮 解壓縮同理
tar指令提供了很多的參數 可以同時提供打包和壓縮功能 (解打包和解壓縮)

輸入

在這裏插入圖片描述
在這裏插入圖片描述

awk

功能

數據處理
相較於 sed 常常作用於一整個行的處理,
awk 則比較傾向於一行當中分成數個『字段』來處理。
因此,awk 相當的適合處理小型的數據數據處理

實例

待補充

sed

功能

數據處理

輸入

在這裏插入圖片描述

實例

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

diff

功能

diff 就是用在比對兩個文件之間的差異的,
並且是以行爲單位來比對的!
一般是用在 ASCII 純文本
檔的比對上。 由於是以行爲比對的單位,
因此 diff 通常是用在同一的文件(或軟件)的新舊版本差異上!

輸入

在這裏插入圖片描述

實例

實例一:比較兩文件的不同
在這裏插入圖片描述
實例二:比較兩目錄的不同
在這裏插入圖片描述

vim

功能

vim編輯器的常用指令

實例

20分鐘學會Vim

性能檢測相關命令

image

mpstat

功能:

顯示CPU的狀態信息
這些信息存放在/proc/stat文件中。

在多CPUs系統裏,

其不但能查看所有CPU的平均狀況信息,

而且能夠查看特定CPU的信息。 

輸入語法:

mpstat(選項)(參數)

選項

-A : 此選項等效於# mpstat -I ALL -u -P ALL

-I {SUM | CPU | ALL} : 報告中斷統計信息。 使用SUM關鍵字,mpstat命令報告每個處理器的中斷總數。使用CPU關鍵字,顯示CPU或CPU每秒接收的每個中斷的數量。ALL關鍵字等效於指定上面的所有關鍵字,因此顯示所有中斷統計信息。

-P {cpu [,...] | ON | ALL} : 指示要報告統計信息的處理器編號。cpu是處理器號。注意,處理器0是第一個處理器。 ON關鍵字表示將爲每個在線處理器報告統計信息,而ALL關鍵字指示要爲所有處理器報告統計信息。

參數

間隔時間:每次報告的間隔時間(秒); 
次數:顯示報告的次數。

輸出信息:

user 在internal時間段裏,用戶態的CPU時間(%),不包含 nice值爲負 進程 (usr/total)*100  
nice 在internal時間段裏,nice值爲負進程的CPU時間(%)   (nice/total)*100  
system 在internal時間段裏,內核態的CPU時間(%)   (system/total)*100
iowait 在internal時間段裏,硬盤IO等待時間(%) (iowait/total)*100
irq 在internal時間段裏,硬中斷時間(%)      (irq/total)*100
soft 在internal時間段裏,軟中斷時間(%)    (softirq/total)*100
idle 在internal時間段裏,CPU除去等待磁盤IO操作外的因爲任何原因而空閒的時間閒置時間(%)(idle/total)*100


實例:

mpstat

顯示開機到現在以來cpu的平均狀態信息

Linux 4.15.0-88-generic (kyle) 	2020年02月25日 	_x86_64_	(4 CPU)

20時12分09秒  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
20時12分09秒  all   27.16    0.55    9.85    0.34    0.00    0.43    0.00    0.00    0.00   61.66

mpstat -P ALL 2 3

每隔2秒顯示一次 所有cpu的狀態信息
一共產生3個間隔的信息
最後給出這3次間隔的平均信息

kylechen@kyle:~$ mpstat -P ALL 2 3
Linux 4.15.0-88-generic (kyle) 	2020年02月25日 	_x86_64_	(4 CPU)

20時12分43秒  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
20時12分45秒  all    9.96    0.00    3.57    0.00    0.00    0.12    0.00    0.00    0.00   86.35
20時12分45秒    0    8.96    0.00    2.99    0.00    0.00    0.00    0.00    0.00    0.00   88.06
20時12分45秒    1    8.87    0.00    3.45    0.49    0.00    0.49    0.00    0.00    0.00   86.70
20時12分45秒    2    9.76    0.00    2.44    0.00    0.00    0.00    0.00    0.00    0.00   87.80
20時12分45秒    3   12.32    0.00    4.43    0.00    0.00    0.00    0.00    0.00    0.00   83.25

20時12分45秒  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
20時12分47秒  all   13.43    0.00    4.68    0.00    0.00    0.12    0.00    0.00    0.00   81.77
20時12分47秒    0   16.59    0.00    5.69    0.00    0.00    0.47    0.00    0.00    0.00   77.25
20時12分47秒    1   12.08    0.00    3.86    0.00    0.00    0.00    0.00    0.00    0.00   84.06
20時12分47秒    2   12.80    0.00    4.74    0.00    0.00    0.00    0.00    0.00    0.00   82.46
20時12分47秒    3   12.44    0.00    5.26    0.00    0.00    0.00    0.00    0.00    0.00   82.30

20時12分47秒  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
20時12分49秒  all    8.44    0.00    2.02    0.00    0.00    0.13    0.00    0.00    0.00   89.42
20時12分49秒    0    7.69    0.00    1.54    0.00    0.00    0.51    0.00    0.00    0.00   90.26
20時12分49秒    1    6.47    0.00    2.99    0.00    0.00    0.50    0.00    0.00    0.00   90.05
20時12分49秒    2   10.66    0.00    1.02    0.00    0.00    0.00    0.00    0.00    0.00   88.32
20時12分49秒    3    8.46    0.00    2.49    0.00    0.00    0.00    0.00    0.00    0.00   89.05

平均時間:  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
平均時間:  all   10.65    0.00    3.44    0.00    0.00    0.12    0.00    0.00    0.00   85.78
平均時間:    0   11.20    0.00    3.46    0.00    0.00    0.33    0.00    0.00    0.00   85.01
平均時間:    1    9.17    0.00    3.44    0.16    0.00    0.33    0.00    0.00    0.00   86.91
平均時間:    2   11.09    0.00    2.77    0.00    0.00    0.00    0.00    0.00    0.00   86.13
平均時間:    3   11.09    0.00    4.08    0.00    0.00    0.00    0.00    0.00    0.00   84.83

mpstat -P ALL -I SUM

查看cpu中斷的統計(各個cpu分開顯示)

inux 4.15.0-88-generic (kyle) 	2020年02月25日 	_x86_64_	(4 CPU)

20時13分24秒  CPU    intr/s
20時13分24秒  all   2057.27
20時13分24秒    0    473.14
20時13分24秒    1    591.17
20時13分24秒    2    687.38
20時13分24秒    3    493.70

mpstat -I SUM

查看cpu中斷的統計(各個cpu合併顯示)

kylechen@kyle:~$  mpstat -I SUM
Linux 4.15.0-88-generic (kyle) 	2020年02月25日 	_x86_64_	(4 CPU)

20時13分47秒  CPU    intr/s
20時13分47秒  all   2036.32

free

功能

free指令會顯示內存的使用情況,
包括實體內存,
虛擬的交換文件內存,
共享內存區段,
以及系統核心使用的緩衝區等。

輸入語法

free [-bkmotV][-s <間隔秒數>]
參數說明:

-b  以Byte爲單位顯示內存使用情況。
-k  以KB爲單位顯示內存使用情況。
-m  以MB爲單位顯示內存使用情況。
-h  以合適的單位顯示內存使用情況,最大爲三位數,自動計算對應的單位值。單位如下:

B = bytes
K = kilos
M = megas
G = gigas
T = teras
-t  顯示內存總和列。
-V  顯示版本信息。
-o  不顯示緩衝區調節列。
-s<間隔秒數>持續觀察內存使用狀況。

輸出信息


total 列顯示系統總的可用物理內存和交換空間大小。
used 列顯示已經被使用的物理內存和交換空間。
free 列顯示還有多少物理內存和交換空間可用使用。
shared 列顯示被共享使用的物理內存大小。(進程間的共享內存)
buff/cache 列顯示被   磁盤緩存 使用的物理內存大小。(buffer表示寫緩衝   cache表示讀緩衝)
available 列顯示還可以被應用程序使用的物理內存大小

注意點
1.當應用程序需要內存時,如果沒有足夠的 free 內存可以用
,內核就會從 buffer 和 cache 中回收內存來滿足應用程序的請
求。所以從應用程序的角度來說,available  = free + buffer + cache。
請注意,這只是一個很理想的計算方式,實際中的數據往往有較大的誤差。

2.swap space 是磁盤上的一塊區域,可以是一個分區,也可以是一個文件
。所以具體的實現可以是 swap 分區也可以是 swap 文件
。當系統物理內存喫緊時,Linux 會將內存中不常訪問的數據保存到 swap 上,
這樣系統就有更多的物理內存爲各個進程服務,而當系統需要訪問 swap 上存儲的內容時
,再將 swap 上的數據加載到內存中,這就是常說的換出和換入。
交換空間可以在一定程度上緩解內存不足的情況,
但是它需要讀寫磁盤數據,所以性能不是很高。

實例

free 不指定單位顯示內存使用情況

              總計         已用        空閒      共享    緩衝/緩存    可用
內存:     3920116     2680416      179976      596300     1059724      408108
交換:      999420      519916      479504


free -h以合適的單位顯示內存使用情況
kylechen@kyle:~$ free -h
              總計         已用        空閒      共享    緩衝/緩存    可用
內存:        3.7G        2.6G        178M        573M        1.0G        401M
交換:        975M        507M        468M


free -th以合適的單位顯示內存使用情 況,同時顯示總量列
kylechen@kyle:~$ free -th
              總計         已用        空閒      共享    緩衝/緩存    可用
內存:        3.7G        2.5G        200M        570M        1.0G        424M
交換:        975M        507M        468M
總量:        4.7G        3.0G        668M


free -h -s 1  以1秒爲間隔顯示內存使用情況

kylechen@kyle:~$ free -h -s 1
              總計         已用        空閒      共享    緩衝/緩存    可用
內存:        3.7G        2.5G        198M        569M        1.0G        421M
交換:        975M        507M        468M

              總計         已用        空閒      共享    緩衝/緩存    可用
內存:        3.7G        2.5G        196M        571M        1.0G        419M
交換:        975M        507M        468M

              總計         已用        空閒      共享    緩衝/緩存    可用
內存:        3.7G        2.5G        195M        571M        1.0G        419M
交換:        975M        507M        468M

              總計         已用        空閒      共享    緩衝/緩存    可用
內存:        3.7G        2.5G        196M        571M        1.0G        420M
交換:        975M        507M        468M

              總計         已用        空閒      共享    緩衝/緩存    可用
內存:        3.7G        2.5G        199M        568M        1.0G        423M
交換:        975M        507M        468M

top

功能

top是系統管理員最重要的工具之一。被廣泛用於監視服務器的負載。
它可以動態的查看系統當前正在運行的進程情況 , 內存使用情況, cpu使用情況
也就是說上面mpstate 和free能實現的功能 它都內在的包含了

輸入語法

很簡單 直接輸入top

輸出信息


任務: 298 total,   1 running, 246 sleeping,   0 stopped,   0 zombie
%Cpu(s):  5.7 us,  1.6 sy,  0.0 ni, 92.6 id,  0.1 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  3920116 total,   301948 free,  2514912 used,  1103256 buff/cache
KiB Swap:   999420 total,   480272 free,   519148 used.   618380 avail Mem 

進程id USER      PR  NI    VIRT    RES    SHR �  %CPU %MEM     TIME+ COMMAND     
 1590 kylechen  20   0 3974220 265424  72628 S   7.3  6.8   5:33.19 gnome-shell 
 1446 kylechen  20   0  521960  38412  19292 S   6.3  1.0   3:28.27 Xorg        
 3008 kylechen  20   0  780520  50972  32452 S   4.6  1.3   0:17.32 gnome-term+ 
 2779 kylechen  20   0 1201196 318344  79024 S   1.3  8.1  11:48.81 chrome      
 1955 kylechen  20   0 1505112 399200 243564 S   1.0 10.2   5:32.38 chrome      
    1 root      20   0  225908   4064   1584 S   0.7  0.1   0:08.15 systemd     
 1036 gdm       20   0 3492528  89676  62056 S   0.7  2.3   0:11.70 gnome-shell 
 1993 kylechen  20   0  556488  55780  24440 S   0.7  1.4   0:34.27 chrome      
    8 root      20   0       0      0      0 I   0.3  0.0   0:08.76 rcu_sched   
  983 mysql     20   0 1358648      0      0 S   0.3  0.0   0:03.85 mysqld      
 1571 kylechen  20   0  220792    156      0 S   0.3  0.0   0:03.21 at-spi2-re+ 
 2192 kylechen  20   0  486420   5828      0 S   0.3  0.1   0:01.88 sogou-qimp+ 
 5330 kylechen  20   0 2621992 450080  80948 S   0.3 11.5   1:13.24 XMind       
 5708 root      20   0       0      0      0 I   0.3  0.0   0:01.65 kworker/u8+ 
 6974 kylechen  20   0  880400 185648 107616 S   0.3  4.7   0:45.80 chrome      
 7245 root      20   0       0      0      0 I   0.3  0.0   0:00.22 kworker/2:0 
 7760 kylechen  20   0   51360   4004   3332 R   0.3  0.1   0:00.19 top    

輸出信息如上所示 一大坨 很繁瑣 咱們一行一行來分析

第一行表示 當前的進程狀態 總共有298個進程 1個處理runing 246個處於sleeping 0個處於stopped狀態

任務: 298 total,   1 running, 246 sleeping,   0 stopped

第二行表示 當前的cpu狀態 這裏顯示的狀態參數其實和mpstat那裏說的是一樣的 具體可以看上面的mpstat命令講解

%Cpu(s):  5.7 us,  1.6 sy,  0.0 ni, 92.6 id,  0.1 wa,  0.0 hi,  

**第三四行表示 **當前的內存狀態 這裏顯示的狀態參數其實和free那裏說的是一樣的 具體可以看上面的free命令講解

KiB Mem :  3920116 total,   301948 free,  2514912 used,  1103256 buff/cache
KiB Swap:   999420 total,   480272 free,   519148 used.   6183800.1 wa,  0.0 hi,  

後面幾行其實 表示的就是每個進程具體佔用的系統資源 會隨着時間動態變化

PID

進程ID,進程的唯一標識符

USER

進程所有者的實際用戶名。

PR

進程的調度優先級。這個字段的一些值是’rt’。這意味這這些進程運行在實時態。

NI

進程的nice值(優先級)。越小的值意味着越高的優先級。

VIRT

進程使用的虛擬內存。

RES

駐留內存大小。駐留內存是任務使用的非交換物理內存大小。

SHR

SHR是進程使用的共享內存。

S

這個是進程的狀態。它有以下不同的值:

D – 不可中斷的睡眠態。

R – 運行態

S – 睡眠態

T – 被跟蹤或已停止

Z – 殭屍態

I - 空閒狀態(idle)

%CPU

自從上一次更新時到現在任務所使用的CPU時間百分比。

%MEM

進程使用的可用物理內存百分比。

TIME+

任務啓動後到現在所使用的全部CPU時間,精確到百分之一秒。

COMMAND

運行進程所使用的命令。

還有許多在默認情況下不會顯示的輸出,它們可以顯示進程的頁錯誤、有效組和組ID和其他更多的信息。

進程id USER      PR  NI    VIRT    RES    SHR �  %CPU %MEM     TIME+ COMMAND     
 1590 kylechen  20   0 3974220 265424  72628 S   7.3  6.8   5:33.19 gnome-shell 
 1446 kylechen  20   0  521960  38412  19292 S   6.3  1.0   3:28.27 Xorg        
 3008 kylechen  20   0  780520  50972  32452 S   4.6  1.3   0:17.32 gnome-term+ 
 2779 kylechen  20   0 1201196 318344  79024 S   1.3  8.1  11:48.81 chrome      
 .......
 

實例

實例1:top

top - 21:25:55 up  1:27,  1 user,  load average: 1.51, 1.87, 1.49
任務: 305 total,   2 running, 250 sleeping,   0 stopped,   0 zombie
%Cpu(s): 22.7 us,  1.8 sy,  0.0 ni, 75.1 id,  0.1 wa,  0.0 hi,  0.3 si,  0.0 st
KiB Mem :  3920116 total,   121880 free,  2859016 used,   939220 buff/cache
KiB Swap:   999420 total,   333328 free,   666092 used.   182088 avail Mem 

PID  USER      PR  NI    VIRT    RES    SHR � %CPU %MEM     TIME+ COMMAND      
 2779 kylechen  20   0 1191.7m 314.5m  59.2m S 17.1  8.2  20:45.14 chrome       
 1590 kylechen  20   0 3881.1m 242.1m  70.3m R  4.8  6.3   7:19.67 gnome-shell  
 1446 kylechen  20   0  444.6m  31.1m  11.8m S  1.3  0.8   4:42.48 Xorg         
 8711 kylechen  20   0  622.0m  17.4m   5.6m S  0.7  0.5   0:02.43 gnome-termi+ 
 1955 kylechen  20   0 1458.6m 348.2m 189.5m S  0.5  9.1   7:31.10 chrome       
 1989 kylechen  20   0  653.0m 112.1m  47.2m S  0.5  2.9   7:06.33 chrome       
 8736 kylechen  20   0   50.2m   1.5m   0.8m R  0.2  0.0   0:05.51 top          
 1036 gdm       20   0 3410.7m  82.2m  55.3m S  0.1  2.1   0:15.10 gnome-shell  
 1484 kylechen  20   0  442.8m  48.0m   8.9m S  0.1  1.3   0:40.19 fcitx        
 1993 kylechen  20   0  551.4m  48.9m  17.8m S  0.1  1.3   0:45.63 chrome       
 3299 kylechen  20   0  633.0m  20.9m   5.1m S  0.1  0.5   0:17.90 chrome       
    1 root      20   0  220.6m   3.0m   0.6m S  0.0  0.1   0:10.02 systemd      
    2 root      20   0    0.0m   0.0m   0.0m S  0.0  0.0   0:00.00 kthreadd     
    4 root       0 -20    0.0m   0.0m   0.0m I  0.0  0.0   0:00.00 kworker/0:0H 
    6 root       0 -20    0.0m   0.0m   0.0m I  0.0  0.0   0:00.00 mm_percpu_wq 
    7 root      20   0    0.0m   0.0m   0.0m S  0.0  0.0   0:00.22 ksoftirqd/0  
    8 root      20   0    0.0m   0.0m   0.0m I  0.0  0.0   0:11.86 rcu_sched  

實例2: 交互式命令

top是一個交互式的命令
所以用top調出動態顯示的進程狀態以後 
在界面上繼續用鍵盤輸入指令 
會繼續在界面上執行對應的操作


交互命令1:  回車/空格

top命令默認在一個特定間隔(3秒)後刷新顯示。
要手動刷新,用戶可以輸入回車或者空格。

交互命令2:   B
一些重要信息會以加粗字體顯示。
這個命令可以切換粗體顯示。


交互命令3:  d 或s
當按下’d’或’s’時,你
將被提示輸入一個值(以秒爲單位),
它會以設置的值作爲刷新間隔。
如果你這裏輸入了1,top將會每秒刷新。

交互命令4 :‘R’
切換反向/常規排序。

交互命令5 :‘V’
切換樹視圖。

交互命令6:  ‘k’
top命令中最重要的一個命令之一。
用於發送信號給任務(通常是結束任務)。


交互命令7:  ‘e’
切換顯示的單位
依次以k ->m->g->t->p單位選擇

進程相關命令

在這裏插入圖片描述

ps

功能

ps 用來查看進程狀態
不過這種查看是靜態的 也就是隻會顯示 你輸入命令那一刻的進程狀態
不會像top那樣是動態變化的
ps命令支持三種使用的語法格式:

UNIX 風格,選項可以組合在一起,並且選項前必須有“-”連字符
BSD 風格,選項可以組合在一起,但是選項前不能有“-”連字符
GNU 風格的長選項,選項前有兩個“-”連字符
這幾種風格可以混用,但是可能會發生衝突。

輸入語法

ps[參數]

參數如下
ps 沒有屬性參數的時候顯示的是同一終端terminal下所有的進程
ps T  顯示同一個終端terminal下的所有進程 輸出信息更豐富了一些
ps a 顯示同一控制終端tty下的所有進程  結果按照進程id來排序 輸出的關鍵屬性有 進程狀態  進程控制終端
ps c  顯示進程的名稱 不顯示路徑 
ps -A 顯示所有用戶的所有進程  包括沒有控制終端的進程 結果按照進程id排序 輸出的關鍵屬性有進程的控制終端 和ps -aux 相比 它輸出的信息沒有那麼全面 比如 沒有cpu和mem列
ps -e 等於“ps -A”
ps f  顯示同一個控制終端tty下的進程  同時用樹狀結構的顯示程序間的關係 
ps -a  顯示所有用戶進程 不包括沒有控制終端的進程 結果按照進程id排序
ps -u  顯示本用戶下所有進程 不包括沒有控制終端的進程  結果按照進程id排序 而且顯示的進程信息很全面
ps  -u [用戶名] 顯示指定用戶名下的所有進程     不包括沒有控制終端的進程  結果按照進程id排序 而且顯示的進程信息很全面 比如 ps -u root
ps -x  顯示本用戶所有進程 包括沒有控制終端的進程 結果按照進程id排序

ps -au 顯示當前用戶下所有的進程  不包括沒有控制終端的進程
ps -ax 顯示所有用戶的進程 包括沒有控制終端的進程 輸出信息裏面沒有USER用戶列
ps -ux 顯示當前用戶下所有進程     包括沒有控制終端的進程
ps -aux  顯示所有用戶的所有進程 包括沒有控制終端的進程
ps -aux --sort -pcpu  顯示所有的進程 並且按照cpu使用率排序
ps -aux --sort -pmem  顯示所有的進程 並且按照cpu使用率排序
ps -auxf 顯示所有用戶的所有進程 包括沒有控制終端的進程 同時以樹形結構顯示進程間的關係
ps -e  f  (注意e和f中間有空格)顯示所有進程  包括沒有控制終端的進程   同時會用樹狀結構的顯示程序間的關係 









輸出信息



USER - 運行該過程的用戶
PID 就是這個程序的 ID 
PPID 則是其上級父程序的ID
%CPU- 進程 cpu 利用率。
%MEM - 進程駐留集大小佔計算機物理內存的百分比。
VSZ  - 進程的虛擬內存大小 KiB。
RSS- 進程正在使用的物理內存的大小。
PRI 這個是 Priority (優先執行序) 的縮寫
NI 這個是 Nice 值
ADDR 這個是 kernel function,指出該程序在內存的那個部分。如果是個 running的程序,一般就是 "-"
TTY 登入者的終端機位置
TIME 使用掉的 CPU 時間。
CMD 所下達的指令爲何
STAT 代表這個程序的狀態 
			ps工具標識進程的5種狀態碼: 
			D 不可中斷 
			R 運行 
			S 中斷 
			T 停止
			Z 僵死 
			在上面這些狀態嗎後面還會有下面這些後綴
			< 優先級高的進程
			N 優先級較低的進程
			L 有些頁被鎖進內存;
			s 進程的領導者(在它之下有子進程);
			l 多進程的(使用 CLONE_THREAD, 類似 NPTL pthreads);
			+ 位於後臺的進程組;


實例

實例1
kylechen@kyle:~$ ps
  PID TTY          TIME CMD
17796 pts/0    00:00:00 bash
24667 pts/0    00:00:00 ps

實例2
kylechen@kyle:~$ ps -T
  PID  SPID TTY          TIME CMD
17796 17796 pts/0    00:00:00 bash
24673 24673 pts/0    00:00:00 ps

實例3
kylechen@kyle:~$ ps a
  PID TTY      STAT   TIME COMMAND
 1444 tty2     Ssl+   0:00 /usr/lib/gdm3/gdm-x-session --run-script env GNOME_SH
 1446 tty2     Sl+   19:57 /usr/lib/xorg/Xorg vt2 -displayfd 3 -auth /run/user/1
 1457 tty2     Sl+    0:00 /usr/lib/gnome-session/gnome-session-binary --session
 1590 tty2     Sl+   31:32 /usr/bin/gnome-shell
 1628 tty2     Sl     0:00 ibus-daemon --xim --panel disable
 1632 tty2     Sl     0:00 /usr/lib/ibus/ibus-dconf
 1636 tty2     Sl     0:00 /usr/lib/ibus/ibus-x11 --kill-daemon
 1708 tty2     Sl+    0:01 /usr/lib/gnome-settings-daemon/gsd-power
 1710 tty2     Sl+    0:00 /usr/lib/gnome-settings-daemon/gsd-print-notification
 1711 tty2     Sl+    0:00 /usr/lib/gnome-settings-daemon/gsd-rfkill
 1714 tty2     Sl+    0:00 /usr/lib/gnome-settings-daemon/gsd-screensaver-proxy
 1717 tty2     Sl+    0:03 /usr/lib/gnome-settings-daemon/gsd-sharing
 1720 tty2     Sl+    0:00 /usr/lib/gnome-settings-daemon/gsd-smartcard
後面的篇幅太長 ...略掉
實例4
kylechen@kyle:~$ ps a
  PID TTY      STAT   TIME COMMAND
 1444 tty2     Ssl+   0:00 /usr/lib/gdm3/gdm-x-session --run-script env GNOME_SH
 1446 tty2     Sl+   19:57 /usr/lib/xorg/Xorg vt2 -displayfd 3 -auth /run/user/1
 1457 tty2     Sl+    0:00 /usr/lib/gnome-session/gnome-session-binary --session
 1590 tty2     Sl+   31:32 /usr/bin/gnome-shell
 1628 tty2     Sl     0:00 ibus-daemon --xim --panel disable
 1632 tty2     Sl     0:00 /usr/lib/ibus/ibus-dconf
 1636 tty2     Sl     0:00 /usr/lib/ibus/ibus-x11 --kill-daemon
 1708 tty2     Sl+    0:01 /usr/lib/gnome-settings-daemon/gsd-power
 1710 tty2     Sl+    0:00 /usr/lib/gnome-settings-daemon/gsd-print-notification
 1711 tty2     Sl+    0:00 /usr/lib/gnome-settings-daemon/gsd-rfkill
 1714 tty2     Sl+    0:00 /usr/lib/gnome-settings-daemon/gsd-screensaver-proxy
 1717 tty2     Sl+    0:03 /usr/lib/gnome-settings-daemon/gsd-sharing
 1720 tty2     Sl+    0:00 /usr/lib/gnome-settings-daemon/gsd-smartcard
後面的篇幅太長 ...略掉
實例5
kylechen@kyle:~$ ps a
  PID TTY      STAT   TIME COMMAND
 1444 tty2     Ssl+   0:00 /usr/lib/gdm3/gdm-x-session --run-script env GNOME_SH
 1446 tty2     Sl+   19:57 /usr/lib/xorg/Xorg vt2 -displayfd 3 -auth /run/user/1
 1457 tty2     Sl+    0:00 /usr/lib/gnome-session/gnome-session-binary --session
 1590 tty2     Sl+   31:32 /usr/bin/gnome-shell
 1628 tty2     Sl     0:00 ibus-daemon --xim --panel disable
 1632 tty2     Sl     0:00 /usr/lib/ibus/ibus-dconf
 1636 tty2     Sl     0:00 /usr/lib/ibus/ibus-x11 --kill-daemon
 1708 tty2     Sl+    0:01 /usr/lib/gnome-settings-daemon/gsd-power
 1710 tty2     Sl+    0:00 /usr/lib/gnome-settings-daemon/gsd-print-notification
 1711 tty2     Sl+    0:00 /usr/lib/gnome-settings-daemon/gsd-rfkill
 1714 tty2     Sl+    0:00 /usr/lib/gnome-settings-daemon/gsd-screensaver-proxy
 1717 tty2     Sl+    0:03 /usr/lib/gnome-settings-daemon/gsd-sharing
 1720 tty2     Sl+    0:00 /usr/lib/gnome-settings-daemon/gsd-smartcard
後面的篇幅太長 ...略掉
實例6
kylechen@kyle:~$ ps c
  PID TTY      STAT   TIME COMMAND
 1444 tty2     Ssl+   0:00 gdm-x-session
 1446 tty2     Sl+   20:05 Xorg
 1457 tty2     Sl+    0:00 gnome-session-b
 1590 tty2     Sl+   31:46 gnome-shell
 1628 tty2     Sl     0:00 ibus-daemon
 1632 tty2     Sl     0:00 ibus-dconf
 1636 tty2     Sl     0:00 ibus-x11
 1708 tty2     Sl+    0:01 gsd-power
 1710 tty2     Sl+    0:00 gsd-print-notif
 1711 tty2     Sl+    0:00 gsd-rfkill
 1714 tty2     Sl+    0:00 gsd-screensaver
 1717 tty2     Sl+    0:03 gsd-sharing
 1720 tty2     Sl+    0:00 gsd-smartcard
 1725 tty2     Sl+    0:00 gsd-xsettings
 1728 tty2     Sl+    0:00 gsd-wacom
 1735 tty2     Sl+    0:00 gsd-sound
 1746 tty2     Sl+    0:00 gsd-a11y-settin
 1747 tty2     Sl+    0:00 gsd-clipboard
 1751 tty2     Sl+    0:04 gsd-color
 1754 tty2     Sl+    0:00 gsd-datetime
 1755 tty2     Sl+    0:02 gsd-housekeepin
 1756 tty2     Sl+    0:00 gsd-keyboard
 1759 tty2     Sl+    0:01 gsd-media-keys
 1763 tty2     Sl+    0:00 gsd-mouse
 1787 tty2     Sl+    0:00 gsd-printer
 1807 tty2     Sl+    0:00 gsd-disk-utilit
 1955 tty2     SLl+  38:57 chrome
後面的篇幅太長 ...略掉
kylechen@kyle:~$ ps -aux --sort -pmem
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
kylechen  5330  0.4  9.6 2675660 377160 tty2   Sl+  2月25   4:39 /opt/XMind ZEN/XMind --type=renderer --no-sandbox --primordial-pipe-token=AE1FEBFB388740D8B17A50EFC55AA15A 
kylechen  1955  3.7  9.5 1592304 373052 tty2   SLl+ 2月25  39:07 /opt/google/chrome/chrome
kylechen 14282  4.0  7.9 1240340 312420 tty2   Sl+  2月25  35:06 /opt/google/chrome/chrome --type=renderer --disable-webrtc-apm-in-audio-service --field-trial-handle=131391
kylechen 19242  0.4  6.9 1008672 273388 tty2   Sl+  00:25   3:11 /opt/google/chrome/chrome --type=renderer --disable-webrtc-apm-in-audio-service --field-trial-handle=1313919
kylechen 24091  3.2  5.3 916448 209380 tty2    Sl+  12:50   0:38 /opt/google/chrome/chrome --type=renderer --disable-webrtc-apm-in-audio-service --field-trial-handle=1313919
kylechen  1590  3.1  5.3 3998928 208124 tty2   Sl+  2月25  32:04 /usr/bin/gnome-shell
kylechen 23859  0.6  5.3 899524 207904 tty2    Sl+  12:46   0:08 /opt/google/chrome/chrome --type=renderer --disable-webrtc-apm-in-audio-service --field-trial-handle=1313919
kylechen 19254  0.1  4.9 866404 194272 tty2    Sl+  00:25   0:50 /opt/google/chrome/chrome --type=renderer --disable-webrtc-apm-in-audio-service --field-trial-handle=1313919
kylechen  2439  0.0  3.5 1497400 140056 tty2   SLl+ 2月25   0:20 /usr/bin/gnome-software --gapplication-service
kylechen 19681  1.3  2.9 640148 114188 tty2    Sl+  00:32  10:14 /proc/self/exe --type=gpu-process --field-trial-handle=13139199688567382976,8847439337573611818,131072 --gpu
kylechen 19231  0.1  2.8 835928 110572 tty2    Sl+  00:25   0:59 /opt/google/chrome/chrome --type=renderer --disable-webrtc-apm-in-audio-service --field-trial-handle=1313919
kylechen  5263  0.2  2.1 2234672 84160 tty2    Sl+  2月25   2:06 /opt/XMind ZEN/XMind
後面篇幅過長 略掉
kylechen@kyle:~$ ps -e f
  PID TTY      STAT   TIME COMMAND
    2 ?        S      0:00 [kthreadd]
    4 ?        I<     0:00  \_ [kworker/0:0H]
    6 ?        I<     0:00  \_ [mm_percpu_wq]
    7 ?        S      0:00  \_ [ksoftirqd/0]
    8 ?        I      0:54  \_ [rcu_sched]
    9 ?        I      0:00  \_ [rcu_bh]
   10 ?        S      0:00  \_ [migration/0]
   11 ?        S      0:00  \_ [watchdog/0]
   12 ?        S      0:00  \_ [cpuhp/0]
   13 ?        S      0:00  \_ [cpuhp/1]
   14 ?        S      0:00  \_ [watchdog/1]
   15 ?        S      0:00  \_ [migration/1]
   16 ?        S      0:02  \_ [ksoftirqd/1]
   18 ?        I<     0:00  \_ [kworker/1:0H]
   19 ?        S      0:00  \_ [cpuhp/2]
   20 ?        S      0:00  \_ [watchdog/2]
   21 ?        S      0:00  \_ [migration/2]
   22 ?        S      0:01  \_ [ksoftirqd/2]
   24 ?        I<     0:00  \_ [kworker/2:0H]
   25 ?        S      0:00  \_ [cpuhp/3]
   26 ?        S      0:00  \_ [watchdog/3]
   27 ?        S      0:00  \_ [migration/3]
   28 ?        S      0:00  \_ [ksoftirqd/3]
   30 ?        I<     0:00  \_ [kworker/3:0H]
   31 ?        S      0:00  \_ [kdevtmpfs]
   32 ?        I<     0:00  \_ [netns]
   33 ?        S      0:00  \_ [rcu_tasks_kthre]
   34 ?        S      0:00  \_ [kauditd]
後面略掉

pstree

功能

清晰明瞭的用樹形圖顯示所有進程的層次關係

輸入語法

pstree

輸出信息

systemd─┬─Main───4*[{Main}]
        ├─ModemManager───2*[{ModemManager}]
        ├─NetworkManager─┬─dhclient
        │                └─2*[{NetworkManager}]
        ├─accounts-daemon───2*[{accounts-daemon}]
        ├─acpid
        ├─avahi-daemon───avahi-daemon
        ├─bluetoothd
        ├─boltd───2*[{boltd}]
        ├─chrome─┬─2*[cat]
        │        ├─chrome─┬─chrome─┬─14*[chrome───10*[{chrome}]]
        │        │        │        ├─chrome───19*[{chrome}]
        │        │        │        ├─chrome───11*[{chrome}]
        │        │        │        └─chrome───7*[{chrome}]
        │        │        └─nacl_helper
        │        ├─chrome───8*[{chrome}]
        │        ├─chrome───6*[{chrome}]
        │        ├─chrome───7*[{chrome}]
        │        └─32*[{chrome}]
        ├─colord───2*[{colord}]
        ├─cron
        ├─cups-browsed───2*[{cups-browsed}]
        ├─cupsd───dbus
        ├─2*[dbus-daemon]
        ├─fcitx───{fcitx}
        ├─fcitx-dbus-watc
        ├─fwupd───4*[{fwupd}]
        ├─gdm3─┬─gdm-session-wor─┬─gdm-x-session─┬─Xorg───3*[{Xorg}]
        │      │                 │               ├─gnome-session-b─┬─gnome-shell─┬─XMind─┬─XMind─┬─XMind───13*[{XMind}]
        │      │                 │               │                 │             │       │       └─XMind───14*[{XMind}]
        │      │                 │               │                 │             │       ├─XMind───4*[{XMind}]
        │      │                 │               │                 │             │       └─41*[{XMind}]
        │      │                 │               │                 │             ├─ibus-daemon─┬─ibus-dconf───3*[{ibus-dconf}]
        │      │                 │               │                 │             │             ├─ibus-engine-lib───3*[{ibus-engine-lib}]
        │      │                 │               │                 │             │             ├─ibus-engine-sim───2*[{ibus-engine-sim}]
        │      │                 │               │                 │             │             └─2*[{ibus-daemon}]
        │      │                 │               │                 │             └─13*[{gnome-shell}]
        │      │                 │               │                 ├─gnome-software───3*[{gnome-software}]
        │      │                 │               │                 ├─gsd-a11y-settin───3*[{gsd-a11y-settin}]
        │      │                 │               │                 ├─gsd-clipboard───2*[{gsd-clipboard}]
        │      │                 │               │                 ├─gsd-color───3*[{gsd-color}]
        │      │                 │               │                 ├─gsd-datetime───3*[{gsd-datetime}]
        │      │                 │               │                 ├─gsd-disk-utilit───2*[{gsd-disk-utilit}]
        │      │                 │               │                 ├─gsd-housekeepin───3*[{gsd-housekeepin}]
        │      │                 │               │                 ├─gsd-keyboard───3*[{gsd-keyboard}]
        │      │                 │               │                 ├─gsd-media-keys───4*[{gsd-media-keys}]
        │      │                 │               │                 ├─gsd-mouse───3*[{gsd-mouse}]
        │      │                 │               │                 ├─gsd-power───4*[{gsd-power}]
        │      │                 │               │                 ├─gsd-print-notif───2*[{gsd-print-notif}]
        │      │                 │               │                 ├─gsd-rfkill───2*[{gsd-rfkill}]
        │      │                 │               │                 ├─gsd-screensaver───2*[{gsd-screensaver}]
        │      │                 │               │                 ├─gsd-sharing───3*[{gsd-sharing}]
        │      │                 │               │                 ├─gsd-smartcard───4*[{gsd-smartcard}]
        │      │                 │               │                 ├─gsd-sound───3*[{gsd-sound}]
        │      │                 │               │                 ├─gsd-wacom───2*[{gsd-wacom}]
        │      │                 │               │                 ├─gsd-xsettings───3*[{gsd-xsettings}]
        │      │                 │               │                 ├─ssh-agent
        │      │                 │               │                 ├─update-notifier───3*[{update-notifier}]
        │      │                 │               │                 └─3*[{gnome-session-b}]
        │      │                 │               └─2*[{gdm-x-session}]
        │      │                 └─2*[{gdm-session-wor}]
        │      └─2*[{gdm3}]
        ├─gnome-keyring-d───3*[{gnome-keyring-d}]
        ├─gsd-printer───2*[{gsd-printer}]
        ├─ibus-x11───2*[{ibus-x11}]
        ├─irqbalance───{irqbalance}
        ├─2*[kerneloops]
        ├─login───bash
        ├─lvmetad
        ├─mysqld───26*[{mysqld}]
        ├─networkd-dispat───{networkd-dispat}
        ├─packagekitd───2*[{packagekitd}]
        ├─polkitd───2*[{polkitd}]
        ├─pulseaudio───2*[{pulseaudio}]
        ├─rsyslogd───3*[{rsyslogd}]
        ├─rtkit-daemon───2*[{rtkit-daemon}]
        ├─snapd───21*[{snapd}]
        ├─sogou-qimpanel───10*[{sogou-qimpanel}]
        ├─sogou-qimpanel-
        ├─sshd
        ├─systemd─┬─(sd-pam)
        │         ├─at-spi-bus-laun─┬─dbus-daemon
        │         │                 └─3*[{at-spi-bus-laun}]
        │         ├─at-spi2-registr───2*[{at-spi2-registr}]
        │         ├─dbus-daemon
        │         ├─dconf-service───2*[{dconf-service}]
        │         ├─evolution-addre─┬─evolution-addre───5*[{evolution-addre}]
        │         │                 └─4*[{evolution-addre}]
        │         ├─evolution-calen─┬─evolution-calen───8*[{evolution-calen}]
        │         │                 └─4*[{evolution-calen}]
        │         ├─evolution-sourc───3*[{evolution-sourc}]
        │         ├─gconfd-2
        │         ├─gnome-shell-cal───5*[{gnome-shell-cal}]
        │         ├─gnome-terminal-─┬─bash───pstree
        │         │                 └─3*[{gnome-terminal-}]
        │         ├─goa-daemon───3*[{goa-daemon}]
        │         ├─goa-identity-se───3*[{goa-identity-se}]
        │         ├─gvfs-afc-volume───3*[{gvfs-afc-volume}]
        │         ├─gvfs-goa-volume───2*[{gvfs-goa-volume}]
        │         ├─gvfs-gphoto2-vo───2*[{gvfs-gphoto2-vo}]
        │         ├─gvfs-mtp-volume───2*[{gvfs-mtp-volume}]
        │         ├─gvfs-udisks2-vo───2*[{gvfs-udisks2-vo}]
        │         ├─gvfsd─┬─gvfsd-dnssd───2*[{gvfsd-dnssd}]
        │         │       ├─gvfsd-network───3*[{gvfsd-network}]
        │         │       ├─gvfsd-smb-brows───3*[{gvfsd-smb-brows}]
        │         │       ├─gvfsd-trash───2*[{gvfsd-trash}]
        │         │       └─2*[{gvfsd}]
        │         ├─gvfsd-fuse───5*[{gvfsd-fuse}]
        │         ├─gvfsd-metadata───2*[{gvfsd-metadata}]
        │         ├─ibus-portal───2*[{ibus-portal}]
        │         ├─xdg-document-po───5*[{xdg-document-po}]
        │         └─xdg-permission-───2*[{xdg-permission-}]
        ├─systemd-journal
        ├─systemd-logind
        ├─systemd-resolve
        ├─systemd-timesyn───{systemd-timesyn}
        ├─systemd-udevd
        ├─thermald───{thermald}
        ├─udisksd───4*[{udisksd}]
        ├─unattended-upgr───{unattended-upgr}
        ├─upowerd───2*[{upowerd}]
        ├─whoopsie───2*[{whoopsie}]
        └─wpa_supplicant

kill

功能

發送信號到指定進程

輸入語法

有兩種方式
1.kill [命令參數] 
2.kill [信號參數] [指定進程]
kill [命令參數] 

-l  後面加信號名稱 顯示指定信號對應的編號 如果後面不加信號名稱 則顯示所有信號對應編號
-u 後面加用戶名稱 表示殺死指定用戶的所用進程 即給指定用戶的所有進程發送SIGTERM信號
kill [信號參數] [指定進程]

信號參數--就是你要給指定進程發送的信號值 可以是名稱的形式比如-SIGKILL ,-SIGHUP 也可以是編號的形式 比如-9 ,-1 分別對應SIGKILL ,SIGHUP.
指定進程--就是你想要給其發送信號的進程pid 可以通過一些手段比如ps/pstree/top等獲取


注意點:

1.也可以不指定信號參數 這樣默認發送的就是編號爲15的SIGTERM信號

2.當用kill向這些進程發送信號時,必須是這些進程的主人。
如果試圖給一個沒有權限或者不存在的進程發送信號,就會得到一個錯誤信息。

3.只有第9種信號(SIGKILL)纔可以無條件終止進程,其他信號進程都有權利忽略。
 下面是常用的信號:
SIGHUP    1    終端斷線
SIGINT     2    中斷(同 Ctrl + C)
SIGQUIT    3    退出(同 Ctrl + \)
SIGTERM   15    終止
SIGKILL    9    強制終止
SIGCONT   18    繼續(與STOP相反, fg/bg命令)
SIGSTOP    19    暫停(同 Ctrl + Z)

4.init進程是不可殺的

實例

實例1 : 顯示所有信號及其編號
kylechen@kyle:~$ kill -l
 1) SIGHUP	 2) SIGINT	 3) SIGQUIT	 4) SIGILL	 5) SIGTRAP
 6) SIGABRT	 7) SIGBUS	 8) SIGFPE	 9) SIGKILL	10) SIGUSR1
11) SIGSEGV	12) SIGUSR2	13) SIGPIPE	14) SIGALRM	15) SIGTERM
16) SIGSTKFLT	17) SIGCHLD	18) SIGCONT	19) SIGSTOP	20) SIGTSTP
21) SIGTTIN	22) SIGTTOU	23) SIGURG	24) SIGXCPU	25) SIGXFSZ
26) SIGVTALRM	27) SIGPROF	28) SIGWINCH	29) SIGIO	30) SIGPWR
31) SIGSYS	34) SIGRTMIN	35) SIGRTMIN+1	36) SIGRTMIN+2	37) SIGRTMIN+3
38) SIGRTMIN+4	39) SIGRTMIN+5	40) SIGRTMIN+6	41) SIGRTMIN+7	42) SIGRTMIN+8
43) SIGRTMIN+9	44) SIGRTMIN+10	45) SIGRTMIN+11	46) SIGRTMIN+12	47) SIGRTMIN+13
48) SIGRTMIN+14	49) SIGRTMIN+15	50) SIGRTMAX-14	51) SIGRTMAX-13	52) SIGRTMAX-12
53) SIGRTMAX-11	54) SIGRTMAX-10	55) SIGRTMAX-9	56) SIGRTMAX-8	57) SIGRTMAX-7
58) SIGRTMAX-6	59) SIGRTMAX-5	60) SIGRTMAX-4	61) SIGRTMAX-3	62) SIGRTMAX-2
63) SIGRTMAX-1	64) SIGRTMAX	
實例2 :  顯示SIGHIP的編號
kylechen@kyle:~$ kill -l SIGHUP
1

實例3: 給用戶kylechen的所有進程發送默認信號SIGTERM
kylechen@kyle:~$ kill -u kylechen
實例4  給進程26467發送默認信號 SIGTERM
kylechen@kyle:~$ kill 26467

實例5  給進程26467發送編號爲9的信號 SIGKILL
kylechen@kyle:~$ kill  -9 26467

實例5 給進程26467發送名稱爲SIGHUP的信號 
kylechen@kyle:~$ kill  -SIGHUP 26467

ulimit

功能

限制用戶使用系統的某些資源 包括可以開啓的文件數量, 可以使用的 CPU 時間,可以使用的內存總量等等。

輸入

在這裏插入圖片描述
配額可以使unlimited 這樣就設定爲無限制

磁盤相關命令

在這裏插入圖片描述
在這裏插入圖片描述

du

功能

顯示指定的目錄或文件所佔用的磁盤空間。

輸入語法


du [參數][目錄路徑或文件路徑]

常用參數:
-a 顯示指定目錄下所有單獨的文件大小 後面不加文件或者目錄路徑則表示本目錄
-b 以byte爲單位顯示
-c 除了顯示單獨的目錄或者文件的大小外,同時也顯示所有目錄或文件的總和。
-h 以K,M,G爲單位顯示,提高信息的可讀性。
如果不加參數則顯示當前目錄下總的大小

實例

kylechen@kyle:~/test$ du
20	.

ylechen@kyle:~/test$ du -a
16	./test.jpg
0	./readme.txt
20	.

kylechen@kyle:~/test$ du -ab
14491	./test.jpg
0	./readme.txt
18587	.

kylechen@kyle:~/test$ du -abc
14491	./test.jpg
0	./readme.txt
18587	.
18587	總用量


df

功能

顯示目前在Linux系統上的文件系統的磁盤使用情況統計。

輸入語法

df [參數]
df  不加參數 顯示整個磁盤空間中文件系統的使用情況
df -h 以人類友好格式顯示文件系統硬盤空間使用情況 這樣就會在顯示合適的單位 比如 K M G
df -T 顯示文件系統類型
df -t ext4 僅列出某些文件系統 比如這裏是限制只列出ext4系統的文件系統
df -x ext4 排除指定類型的文件系統 比如這裏是列出了除 ext4 類型以外的全部文件系統

輸出信息

Filesystem – Linux 系統中的文件系統
1K-blocks – 文件系統的大小,用 1K 大小的塊來表示。
Used – 以 1K 大小的塊所表示的已使用數量。
Available – 以 1K 大小的塊所表示的可用空間的數量。
Use% – 文件系統中已使用的百分比。
Mounted on – 已掛載的文件系統的掛載點。

實例

kylechen@kyle:~/test$ df
文件系統                        1K-塊      已用     可用 已用% 掛載點
udev                          1936656         0  1936656    0% /dev
tmpfs                          392016      2068   389948    1% /run
/dev/mapper/ubuntu--vg-root 243559804 181980468 49137532   79% /
tmpfs                         1960060    311900  1648160   16% /dev/shm
tmpfs                            5120         4     5116    1% /run/lock
tmpfs                         1960060         0  1960060    0% /sys/fs/cgroup
/dev/loop0                       1024      1024        0  100% /snap/gnome-logs/81
/dev/loop1                     127360    127360        0  100% /snap/vscode/93
/dev/loop2                       4352      4352        0  100% /snap/gnome-calculator/544
/dev/loop3                     144128    144128        0  100% /snap/gnome-3-26-1604/98
/dev/loop4                       1024      1024        0  100% /snap/gnome-logs/73
/dev/loop5                        256       256        0  100% /snap/gtk2-common-themes/9
/dev/loop6                     126976    126976        0  100% /snap/vscode/89
/dev/loop7                     164096    164096        0  100% /snap/gnome-3-28-1804/116
/dev/loop8                      93568     93568        0  100% /snap/core/8689
/dev/loop9                      56064     56064        0  100% /snap/core18/1668
/dev/loop11                     56064     56064        0  100% /snap/core18/1650
/dev/loop10                      4352      4352        0  100% /snap/gnome-calculator/536
/dev/loop12                     15232     15232        0  100% /snap/remmina/3995
/dev/loop13                    267008    267008        0  100% /snap/kde-frameworks-5-core18/32
/dev/loop14                       256       256        0  100% /snap/gtk2-common-themes/5
/dev/loop15                     15232     15232        0  100% /snap/remmina/3968
/dev/loop16                     15104     15104        0  100% /snap/gnome-characters/399
/dev/sda1                      523248      2284   520964    1% /boot/efi
/dev/loop17                    160512    160512        0  100% /snap/gnome-3-28-1804/110
/dev/loop18                    127872    127872        0  100% /snap/vscode/87
/dev/loop19                     15104     15104        0  100% /snap/gnome-characters/375
/dev/loop20                     98688     98688        0  100% /snap/typora-alanzanattadev/2
/dev/loop21                      3840      3840        0  100% /snap/gnome-system-monitor/123
/dev/loop22                     98176     98176        0  100% /snap/kdenlive/22
/dev/loop23                     98304     98304        0  100% /snap/kdenlive/13
/dev/loop24                     46080     46080        0  100% /snap/gtk-common-themes/1440
/dev/loop25                    144128    144128        0  100% /snap/gnome-3-26-1604/97
/dev/loop26                     45312     45312        0  100% /snap/gtk-common-themes/1353
/dev/loop27                    259584    259584        0  100% /snap/electronic-wechat/7
/dev/loop28                     93568     93568        0  100% /snap/core/8592
/dev/loop29                      3840      3840        0  100% /snap/gnome-system-monitor/127
tmpfs                          392012        16   391996    1% /run/user/121
tmpfs                          392012        36   391976    1% /run/user/1000

kylechen@kyle:~/test$ df -h
文件系統                     容量  已用  可用 已用% 掛載點
udev                         1.9G     0  1.9G    0% /dev
tmpfs                        383M  2.1M  381M    1% /run
/dev/mapper/ubuntu--vg-root  233G  174G   47G   79% /
tmpfs                        1.9G  307M  1.6G   17% /dev/shm
tmpfs                        5.0M  4.0K  5.0M    1% /run/lock
tmpfs                        1.9G     0  1.9G    0% /sys/fs/cgroup
/dev/loop0                   1.0M  1.0M     0  100% /snap/gnome-logs/81
/dev/loop1                   125M  125M     0  100% /snap/vscode/93
/dev/loop2                   4.3M  4.3M     0  100% /snap/gnome-calculator/544
/dev/loop3                   141M  141M     0  100% /snap/gnome-3-26-1604/98
/dev/loop4                   1.0M  1.0M     0  100% /snap/gnome-logs/73
/dev/loop5                   256K  256K     0  100% /snap/gtk2-common-themes/9
/dev/loop6                   124M  124M     0  100% /snap/vscode/89
/dev/loop7                   161M  161M     0  100% /snap/gnome-3-28-1804/116
/dev/loop8                    92M   92M     0  100% /snap/core/8689
/dev/loop9                    55M   55M     0  100% /snap/core18/1668
/dev/loop11                   55M   55M     0  100% /snap/core18/1650
/dev/loop10                  4.3M  4.3M     0  100% /snap/gnome-calculator/536
/dev/loop12                   15M   15M     0  100% /snap/remmina/3995
/dev/loop13                  261M  261M     0  100% /snap/kde-frameworks-5-core18/32
/dev/loop14                  256K  256K     0  100% /snap/gtk2-common-themes/5
/dev/loop15                   15M   15M     0  100% /snap/remmina/3968
/dev/loop16                   15M   15M     0  100% /snap/gnome-characters/399
/dev/sda1                    511M  2.3M  509M    1% /boot/efi
/dev/loop17                  157M  157M     0  100% /snap/gnome-3-28-1804/110
/dev/loop18                  125M  125M     0  100% /snap/vscode/87
/dev/loop19                   15M   15M     0  100% /snap/gnome-characters/375
/dev/loop20                   97M   97M     0  100% /snap/typora-alanzanattadev/2
/dev/loop21                  3.8M  3.8M     0  100% /snap/gnome-system-monitor/123
/dev/loop22                   96M   96M     0  100% /snap/kdenlive/22
/dev/loop23                   96M   96M     0  100% /snap/kdenlive/13
/dev/loop24                   45M   45M     0  100% /snap/gtk-common-themes/1440
/dev/loop25                  141M  141M     0  100% /snap/gnome-3-26-1604/97
/dev/loop26                   45M   45M     0  100% /snap/gtk-common-themes/1353
/dev/loop27                  254M  254M     0  100% /snap/electronic-wechat/7
/dev/loop28                   92M   92M     0  100% /snap/core/8592
/dev/loop29                  3.8M  3.8M     0  100% /snap/gnome-system-monitor/127
tmpfs                        383M   16K  383M    1% /run/user/121
tmpfs                        383M   36K  383M    1% /run/user/1000

kylechen@kyle:~/test$ df -T
文件系統                    類型         1K-塊      已用     可用 已用% 掛載點
udev                        devtmpfs   1936656         0  1936656    0% /dev
tmpfs                       tmpfs       392016      2068   389948    1% /run
/dev/mapper/ubuntu--vg-root ext4     243559804 181980572 49137428   79% /
tmpfs                       tmpfs      1960060    302084  1657976   16% /dev/shm
tmpfs                       tmpfs         5120         4     5116    1% /run/lock
tmpfs                       tmpfs      1960060         0  1960060    0% /sys/fs/cgroup
/dev/loop0                  squashfs      1024      1024        0  100% /snap/gnome-logs/81
/dev/loop1                  squashfs    127360    127360        0  100% /snap/vscode/93
/dev/loop2                  squashfs      4352      4352        0  100% /snap/gnome-calculator/544
/dev/loop3                  squashfs    144128    144128        0  100% /snap/gnome-3-26-1604/98
/dev/loop4                  squashfs      1024      1024        0  100% /snap/gnome-logs/73
/dev/loop5                  squashfs       256       256        0  100% /snap/gtk2-common-themes/9
/dev/loop6                  squashfs    126976    126976        0  100% /snap/vscode/89
/dev/loop7                  squashfs    164096    164096        0  100% /snap/gnome-3-28-1804/116
/dev/loop8                  squashfs     93568     93568        0  100% /snap/core/8689
/dev/loop9                  squashfs     56064     56064        0  100% /snap/core18/1668
/dev/loop11                 squashfs     56064     56064        0  100% /snap/core18/1650
/dev/loop10                 squashfs      4352      4352        0  100% /snap/gnome-calculator/536
/dev/loop12                 squashfs     15232     15232        0  100% /snap/remmina/3995
/dev/loop13                 squashfs    267008    267008        0  100% /snap/kde-frameworks-5-core18/32
/dev/loop14                 squashfs       256       256        0  100% /snap/gtk2-common-themes/5
/dev/loop15                 squashfs     15232     15232        0  100% /snap/remmina/3968
/dev/loop16                 squashfs     15104     15104        0  100% /snap/gnome-characters/399
/dev/sda1                   vfat        523248      2284   520964    1% /boot/efi
/dev/loop17                 squashfs    160512    160512        0  100% /snap/gnome-3-28-1804/110
/dev/loop18                 squashfs    127872    127872        0  100% /snap/vscode/87
/dev/loop19                 squashfs     15104     15104        0  100% /snap/gnome-characters/375
/dev/loop20                 squashfs     98688     98688        0  100% /snap/typora-alanzanattadev/2
/dev/loop21                 squashfs      3840      3840        0  100% /snap/gnome-system-monitor/123
/dev/loop22                 squashfs     98176     98176        0  100% /snap/kdenlive/22
/dev/loop23                 squashfs     98304     98304        0  100% /snap/kdenlive/13
/dev/loop24                 squashfs     46080     46080        0  100% /snap/gtk-common-themes/1440
/dev/loop25                 squashfs    144128    144128        0  100% /snap/gnome-3-26-1604/97
/dev/loop26                 squashfs     45312     45312        0  100% /snap/gtk-common-themes/1353
/dev/loop27                 squashfs    259584    259584        0  100% /snap/electronic-wechat/7
/dev/loop28                 squashfs     93568     93568        0  100% /snap/core/8592
/dev/loop29                 squashfs      3840      3840        0  100% /snap/gnome-system-monitor/127
tmpfs                       tmpfs       392012        16   391996    1% /run/user/121
tmpfs                       tmpfs       392012        36   391976    1% /run/user/1000

kylechen@kyle:~/test$ df -t ext4
文件系統                        1K-塊      已用     可用 已用% 掛載點
/dev/mapper/ubuntu--vg-root 243559804 181980664 49137336   79% /

kylechen@kyle:~/test$ df -x ext4
文件系統         1K-塊   已用    可用 已用% 掛載點
udev           1936656      0 1936656    0% /dev
tmpfs           392016   2068  389948    1% /run
tmpfs          1960060 299520 1660540   16% /dev/shm
tmpfs             5120      4    5116    1% /run/lock
tmpfs          1960060      0 1960060    0% /sys/fs/cgroup
/dev/loop0        1024   1024       0  100% /snap/gnome-logs/81
/dev/loop1      127360 127360       0  100% /snap/vscode/93
/dev/loop2        4352   4352       0  100% /snap/gnome-calculator/544
/dev/loop3      144128 144128       0  100% /snap/gnome-3-26-1604/98
/dev/loop4        1024   1024       0  100% /snap/gnome-logs/73
/dev/loop5         256    256       0  100% /snap/gtk2-common-themes/9
/dev/loop6      126976 126976       0  100% /snap/vscode/89
/dev/loop7      164096 164096       0  100% /snap/gnome-3-28-1804/116
/dev/loop8       93568  93568       0  100% /snap/core/8689
/dev/loop9       56064  56064       0  100% /snap/core18/1668
/dev/loop11      56064  56064       0  100% /snap/core18/1650
/dev/loop10       4352   4352       0  100% /snap/gnome-calculator/536
/dev/loop12      15232  15232       0  100% /snap/remmina/3995
/dev/loop13     267008 267008       0  100% /snap/kde-frameworks-5-core18/32
/dev/loop14        256    256       0  100% /snap/gtk2-common-themes/5
/dev/loop15      15232  15232       0  100% /snap/remmina/3968
/dev/loop16      15104  15104       0  100% /snap/gnome-characters/399
/dev/sda1       523248   2284  520964    1% /boot/efi
/dev/loop17     160512 160512       0  100% /snap/gnome-3-28-1804/110
/dev/loop18     127872 127872       0  100% /snap/vscode/87
/dev/loop19      15104  15104       0  100% /snap/gnome-characters/375
/dev/loop20      98688  98688       0  100% /snap/typora-alanzanattadev/2
/dev/loop21       3840   3840       0  100% /snap/gnome-system-monitor/123
/dev/loop22      98176  98176       0  100% /snap/kdenlive/22
/dev/loop23      98304  98304       0  100% /snap/kdenlive/13
/dev/loop24      46080  46080       0  100% /snap/gtk-common-themes/1440
/dev/loop25     144128 144128       0  100% /snap/gnome-3-26-1604/97
/dev/loop26      45312  45312       0  100% /snap/gtk-common-themes/1353
/dev/loop27     259584 259584       0  100% /snap/electronic-wechat/7
/dev/loop28      93568  93568       0  100% /snap/core/8592
/dev/loop29       3840   3840       0  100% /snap/gnome-system-monitor/127
tmpfs           392012     16  391996    1% /run/user/121
tmpfs           392012     36  391976    1% /run/user/1000

網絡相關命令

在這裏插入圖片描述

在這裏插入圖片描述

netstat

功能

顯示網絡狀態。

輸入


netstat [參數]

-a-顯示所有socket
-l 顯示所有處於監聽狀態的socket
-t 顯示所有使用tcp協議的socket
-u-顯示UDP傳輸協議的連線狀況。
-s 顯示所有網絡協議的統計信息。

輸出

1. 列出所有端口 (包括監聽和未監聽的)
列出所有端口:     netstat -a
列出所有tcp端口:  netstat -at
列出所有udp端口:  netstat -au
2. 列出所有處於監聽狀態的 Sockets
只顯示監聽端口:          netstat -l
只列出所有監聽tcp端口:   netstat -lt
只列出所有監聽udp端口:   netstat -lu
只列出所有監聽UNIX端口:  netstat -lx
3. 顯示每個協議的統計信息
顯示所有端口的統計信息 netstat -s

ifconfig

功能

用於顯示或設置網絡設備

輸入


語法
ifconfig [網絡設備][down up ][add<地址>][del<地址>][<hw<網絡設備類型><硬件地址>][mtu<字節>][netmask<子網掩碼>][IP地址]
參數說明:

add<地址> 設置網絡設備IPv6的IP地址。
del<地址> 刪除網絡設備IPv6的IP地址。
down 關閉指定的網絡設備。
up 啓動指定的網絡設備。
<hw<網絡設備類型><硬件地址> 設置網絡設備的類型與硬件MAC地址。

mtu<字節> 設置網絡設備的MTU。
netmask<子網掩碼> 設置網絡設備的子網掩碼。
[IP地址] 指定網絡設備的IP地址。

實例

顯示網絡設備信息

# ifconfig        
eth0   Link encap:Ethernet HWaddr 00:50:56:0A:0B:0C 
     inet addr:192.168.0.3 Bcast:192.168.0.255 Mask:255.255.255.0
     inet6 addr: fe80::250:56ff:fe0a:b0c/64 Scope:Link
     UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
     RX packets:172220 errors:0 dropped:0 overruns:0 frame:0
     TX packets:132379 errors:0 dropped:0 overruns:0 carrier:0
     collisions:0 txqueuelen:1000 
     RX bytes:87101880 (83.0 MiB) TX bytes:41576123 (39.6 MiB)
     Interrupt:185 Base address:0x2024 

lo    Link encap:Local Loopback 
     inet addr:127.0.0.1 Mask:255.0.0.0
     inet6 addr: ::1/128 Scope:Host
     UP LOOPBACK RUNNING MTU:16436 Metric:1
     RX packets:2022 errors:0 dropped:0 overruns:0 frame:0
     TX packets:2022 errors:0 dropped:0 overruns:0 carrier:0
     collisions:0 txqueuelen:0 
     RX bytes:2459063 (2.3 MiB) TX bytes:2459063 (2.3 MiB)
啓動關閉指定網卡

# ifconfig eth0 down
# ifconfig eth0 up
爲網卡配置和刪除IPv6地址

# ifconfig eth0 add 33ffe:3240:800:1005::2/ 64 //爲網卡誒之IPv6地址

# ifconfig eth0 del 33ffe:3240:800:1005::2/ 64 //爲網卡刪除IPv6地址
用ifconfig修改MAC地址

# ifconfig eth0 down //關閉網卡
# ifconfig eth0 hw ether 00:AA:BB:CC:DD:EE //修改MAC地址
# ifconfig eth0 up //啓動網卡
# ifconfig eth1 hw ether 00:1D:1C:1D:1E //關閉網卡並修改MAC地址 
# ifconfig eth1 up //啓動網卡
配置IP地址

# ifconfig eth0 192.168.1.56 
//給eth0網卡配置IP地址
# ifconfig eth0 192.168.1.56 netmask 255.255.255.0 
// 給eth0網卡配置IP地址,並加上子掩碼
# ifconfig eth0 192.168.1.56 netmask 255.255.255.0 broadcast 192.168.1.255
// 給eth0網卡配置IP地址,加上子掩碼,加上個廣播地址
啓用和關閉ARP協議

# ifconfig eth0 arp  //開啓
# ifconfig eth0 -arp  //關閉
設置最大傳輸單元

# ifconfig eth0 mtu 1500 
//設置能通過的最大數據包大小爲 1500 bytes

bash相關操作

在這裏插入圖片描述

數據流重導向

功能

將命令在終端的標準輸出 標準出錯 重定向到別的地方比如文件中
或者讀取文件的內容來取代標準輸入

輸入語法

1. 標準輸入 (stdin) :代碼爲 0 ,使用 < 或 << ; 一般和cat配合使用將一個文件的內容輸出到另外一個文件
2. 標準輸出 (stdout):代碼爲 1 ,使用 > 或 >> ; 將命令的標準輸出重定向到另外一個位置 比如文件中
3.  標準錯誤輸出(stderr):代碼爲 2 ,使用 2> 或 2>> 將命令的標註出錯重定向到另外一個位置比如文件中

實例

實例1:
將命令"ll / "的標準輸出存到 ~/rootfile這個文件中  (也可以用1>)
如果原本沒有這個文件 則這個文件將被創建 
如果原本有這個文件 則這個文件的內容將會被全部替換
[dmtsai@study ~]$ ll / > ~/rootfile 
實例2:
將命令"ll / "的標準輸出存到 ~/rootfile這個文件中(也可以用1>>)
如果原本沒有這個文件 則這個文件將被創建 
如果原本有這個文件 則會將標準輸出的內容添加到這個文件原有內容的末尾
[dmtsai@study ~]$ ll / >> ~/rootfile 
實例3:
將命令"ll / "的標準錯誤存到 ~/rootfile這個文件中 
如果原本沒有這個文件 則這個文件將被創建 
如果原本有這個文件 則這個文件的內容將會被全部替換
[dmtsai@study ~]$ ll / 2> ~/rootfile 
實例4:
將命令"ll / "的標準錯誤存到 ~/rootfile這個文件中 
如果原本沒有這個文件 則這個文件將被創建 
如果原本有這個文件  則會將標準錯誤的內容添加到這個文件原有內容的末尾
[dmtsai@study ~]$ ll / 2>>~/rootfile 
實例5:
將命令"ll / "的標準輸出存到 stdoutput.txt       將標準錯誤輸出到stderr.txt 
如果原本沒有這個文件 則這個文件將被創建 
如果原本有這個文件 則這個文件的內容將會被全部替換
[dmtsai@study ~]$ ll / 1>stdoutput.txt 2>~/stderr.txt 
實例6:
將命令"ll / "的標準輸出和標準錯誤都存到 stdoutput.txt       
如果原本沒有這個文件 則這個文件將被創建 
如果原本有這個文件  則這個文件的內容將會被全部替換
[dmtsai@study ~]$ ll / 1>stdoutput.txt  2>&1  正確寫法
[dmtsai@study ~]$ ll / 1>stdoutput.txt  2>~/stdoutput.txt   錯誤寫法 會導致文件中兩種輸出是亂序的
實例7:
將命令"ll / "的標準輸出存到 stdoutput.txt        標準錯誤存到垃圾桶(/dev/null)
  標準錯誤不會顯示 標準輸出存到文件stdoutput.txt中
[dmtsai@study ~]$ ll /   1>~/stdoutput.txt 2>/dev/null 
實例8:
利用 cat 指令來建立一個文件的簡單流程
[dmtsai@study ~]$ cat > catfile
testing 
cat file test
<==這裏按下 [ctrl]+d 來離開
實例9:
用 標準輸入 取代鍵盤的輸入以建立新文件的簡單流程
也就是將/.bashrc的內容傳到catfile裏面 (<是覆蓋 <<是補充到文件末尾)
[dmtsai@study ~]$ cat > catfile < ~/.bashrc
[dmtsai@study ~]$ ll catfile ~/.bashrc
-rw-r--r--. 1 dmtsai dmtsai 231 Mar 6 06:06 /home/dmtsai/.bashrc
-rw-rw-r--. 1 dmtsai dmtsai 231 Jul 9 18:58 catfile
# 注意看,這兩個文件的大小會一模一樣!幾乎像是使用 cp 來複制一般!
實例10:
鍵盤的輸入以建立新文件 以指定的字符作爲結束符
[dmtsai@study ~]$ cat > catfile << "eof"
> This is a test.
> OK now stop
> > eof <==輸入這關鍵詞,立刻就結束而不需要輸入 [ctrl]+d

[dmtsai@study ~]$ cat catfile
This is a test.
OK now stop <==只有這兩行,不會存在關鍵詞那一行

多個命令同時執行

功能

某些情況下,很多指令我想要一次輸入去執行,而不想要分次執行時

輸入語法

方法一:用分號連接 命令之間沒有關聯
sync; sync; shutdown -h now 
方法二:用&&連接
cmd1 && cmd2
1. 若 cmd1 執行完畢且正確執行($?=0),則開始執行 cmd2。
2. 若 cmd1 執行完畢且爲錯誤 ($?≠0),則 cmd2 不執行。
方法三:用||連接
cmd1 || cmd2
3. 若 cmd1 執行完畢且正確執行($?=0),則 cmd2 不執行。
4. 2. 若 cmd1 執行完畢且爲錯誤 ($?≠0),則開始執行 cmd

命令的多行顯示

功能

如果命令太長可以用多行顯示

輸入

用\符號分割

實例

[dmtsai@study ~]$ cp /var/spool/mail/root /etc/crontab \
> /etc/fstab /root
上面這個指令用途是將三個文件複製到 /root 這個目錄下而已。

命令的通配符

功能

對命令進行模糊匹配

輸入

在這裏插入圖片描述

實例

範例一:找出 /etc/ 底下以 cron 爲開頭的檔名
[dmtsai@study ~]$ ll -d /etc/cron*
<==加上 -d 是爲了僅顯示目錄而已

範例二:找出 /etc/ 底下文件名『剛好是五個字母』的文件名
[dmtsai@study ~]$ ll -d /etc/?????

範例三:找出 /etc/ 底下文件名含有數字的文件名
[dmtsai@study ~]$ ll -d /etc/*[0-9]*
<==記得中括號左右兩邊均需 *

範例四:找出 /etc/ 底下,檔名開頭非爲小寫字母的文件名:
[dmtsai@study ~]$ ll -d /etc/[^a-z]*
<==注意中括號左邊沒有 *

範例五:將範例四找到的文件複製到 /tmp/upper 中
[dmtsai@study ~]$ mkdir /tmp/upper; cp -a /etc/[^a-z]* /tmp/upper

命令的定時執行

功能

即crontab命令 ,設定某個命令的週期性執行

輸入

首先要介紹一下 crond,因爲 crontab 命令需要 crond服務支持。
cron 是 Linux 下用來週期地執行某種任務或等待處理某些事件的一個守護進程,
和 Windows 中的計劃任務有些類似。 所以要先打開cron服務
在這裏插入圖片描述
crontab
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

命令的執行歷史

功能

即history命令 ,獲取你在終端輸入的命令歷史

[dmtsai@study ~]$ history [n]
[dmtsai@study ~]$ history [-c]
 n :數字,意思是『要列出最近輸入的 n條命令 』
-c :將目前的 shell 中的所有 history 內容全部消除

命令的別名

功能

即 給命令指定一個別名 主要用在命令比較長的時候

 alias lm='ls -al | more' 比如這個把ls -al | more重命名爲lm
unalias lm  撤銷剛纔的重命名

命令的解釋

功能

即獲取命令的manpage 用man命令

變量相關命令

變量的聲明賦值

在這裏插入圖片描述

功能

相當於是聲明一個變量 同時給變量賦值

輸入

聲明方法1: 通過 賦值符號 =
在這裏插入圖片描述
聲明方法2: 通過read

用read以後 變量賦值是通過終端等待用戶的鍵盤輸入 來執行

[dmtsai@study ~]$ read [-pt] variable
選項與參數:
-p :後面可以接提示字符!
-t :後面可以接等待的『秒數!』

實例

變量的普通賦值形式
[dmtsai@study ~]$ CHENWEIJIE=0820
讓用戶由鍵盤輸入一內容,將該內容變成名爲 atest 的變量
[dmtsai@study ~]$ read ates
This is a test <==此時光標會等待你輸入!請輸入左側文字看看
[dmtsai@study ~]$ echo ${atest}
This is a test <==你剛剛輸入的數據已經變成一個變量內
讓用戶由鍵盤輸入一內容, 會有提示的字符串提示你輸入 , 然後將該內容變成名爲 name 的變量
kylechen@kyle:~$ read -p"請輸入你的姓名:" -t 5 name
請輸入你的姓名:
kylechen@kyle:~$ echo $name
chenweijie

變量的查看轉換

功能

查看或轉化指定的變量

輸入

echo 查看指定單個變量的值 可以用用**echo PATH** 或者 **echo ${PATH}** 格式
env  查看所有環境變量
set 查看所有變量(包括用戶設定的變量和環境變量,其他bash接口變量)
export  變量名=變量值 將自定義變量轉化成環境變量

關於環境變量:
1.  環境變量是用來定義系統運行環境的一些參數,比如每個用戶不同的家目錄(HOME)、郵件存放位置(MAIL)等。
2.   環境變量所有終端下所有程序都可直接取用的  可以理解爲 環境變量=全局變量  自定義變量=局部變量
3.   可以通過export將自定義變量設定爲當前終端下的環境變量 但是也就是隻能當前終端下的父子進程可以取用 其他終端不行
 4.  可以通過自定義變量的export語句添加到個人目錄下的.bashrc文件中 這樣當前用戶的所有程序都可以使用這個環境變量
5.   可以通過將自定義變量的export語句添加到/etc/profile文件下 這樣所有用戶的所有程序都可以使用這個環境變量

實例

輸出自定義變量myname

[dmtsai@study ~]$ echo ${myname}
 <==這裏並沒有任何數據~因爲這個變量尚未被設定!是空的[
 dmtsai@study ~]$ myname=VBird
 [dmtsai@study ~]$ echo ${myname}
 VBird <==出現了!因爲這個變量已經被設定
輸出變量PATH
[dmtsai@study ~]$ echo  $PATH
/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/dmtsai/.local/bin:/home/dmtsai/b
輸出變量PATH
[dmtsai@study ~]$ echo  ${PATH}
/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/dmtsai/.local/bin:/home/dmtsai/b
列出目前的 shell 環境下的所有環境變量與其內容。
[dmtsai@study ~]$ env
列出目前的 shell 環境下的所有變量。
[dmtsai@study ~]$ set
將自定義的變量CHENWEIJIE轉換成環境變量
export CHENWEIJIE=0820 

變量的類型指定

功能

變量聲明的時候指定類型

輸入

$ declare [-aixr] variable

選項與參數:
-a :將後面名爲 variable 的變量定義成爲數組 (array) 類型
-i :將後面名爲 variable 的變量定義成爲整數數字 (integer) 類型
-x :用法與 export 一樣,就是將後面的 variable 變成環境變量;
-r :將變量設定成爲 readonly 類型,該變量不可被更改內容,也不能 unset

實例

範例一:讓變量 sum 進行 100+300+50 的加總結果
[dmtsai@study ~]$ sum=100+300+5
[dmtsai@study ~]$ echo ${sum}100+300+50 <==咦!怎麼沒有幫我計算加總?因爲這是文字型態的變量屬性啊![dmtsai@study ~]$ declare -i sum=100+300+50
[dmtsai@study ~]$ echo ${sum}
450 
範例二:將 sum 變成環境變量
[dmtsai@study ~]$ declare -x sum
[dmtsai@study ~]$ export | grep sum
declare -ix sum="450" <==果然出現了!包括有 i 與 x 的宣告!

範例三:讓 sum 變成只讀屬性,不可更動![dmtsai@study ~]$ declare -r sum
[dmtsai@study ~]$ sum=tesgtin-bash: sum: readonly variable <==老天爺~不能改這個變數了!

範例四:讓 sum 變成非環境變量的自定義變量吧
[dmtsai@study ~]$ declare +x sum <== 將 - 變成 + 可以進行『取消』動作

[dmtsai@study ~]$ declare -p sum <== -p 可以單獨列出變量的類型
declare -ir sum="450" <== 看吧!只剩下 i, r 的類型,不具有 x 

變量的比較判斷

功能

類似test命令
利用中括號等運算符判斷裏面的變量是否爲空
裏面的變量比較是否爲真等任務

輸入

[ "$HOME" == "$MAIL"]  判斷變量HOME和MAIL是否相同
 [ -z "${HOME}" ]  判斷變量HOME是否爲空
 
如上所示 中括號的使用方法與 test 幾乎一模一樣啊
只不過需要有以下注意點

使用注意點:

1.在中括號內的變量,最好都以雙引號括號起來; 因爲可能出現以下問題

在這裏插入圖片描述

2/在中括號內的常數,最好都以單或雙引號括號
3.在中括號 [] 內的每個組件都需要有空格鍵來分隔;
使用中括號必須要特別注意,因爲中括號用在很多地方,
包括通配符與正規表示法等等,
所以如果要在 bash 的語法當中使用中括號作爲 shell 的判斷式時,
必須要注意中括號的兩端需要有空格符來分隔
 假設我空格鍵使用『□』符號來表示,那麼,在這些地方你都需要有空格鍵:

在這裏插入圖片描述

管道相關命令

在這裏插入圖片描述

cut

功能

主要的用途在於將『同一行裏面的數據進行分解!』 處理的訊息是以『行』爲單位
以某些字符當作分割的參數,然後來將數據加以切割,
以取得我們所需要的數據。

輸入

cut[參數]

在這裏插入圖片描述
在這裏插入圖片描述

實例

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

grep

功能

剛剛的 cut 是將一行訊息當中,取出某部分我們想要的,
而 grep 則是分析一行訊息, 若當中有我
們所需要的信息,就將該行拿出來~

輸入

在這裏插入圖片描述

實例

在這裏插入圖片描述

sort

功能

把輸出的結果進行排序

輸入

在這裏插入圖片描述

實例

在這裏插入圖片描述
在這裏插入圖片描述

uniq

功能

將重複的資料僅列出一個顯示

輸入

在這裏插入圖片描述

實例

在這裏插入圖片描述

wc

功能

統計有多少字符 多少行

輸入

在這裏插入圖片描述

實例

在這裏插入圖片描述

Shell腳本相關命令

在這裏插入圖片描述

介紹

一句話說明shell腳本是個啥
shell腳本就是將多個shell指令彙集到一起去完成一個複雜的功能
類似windows下的批處理文件 一般以sh爲文件後綴

語法

程序結構

一張圖說明shell腳本的結構是怎樣的
在這裏插入圖片描述
如上圖所示
右邊就是最簡單的一個shell腳本 , 功能是打印出"Hello World
左邊就是它對應的一個程序結構 ,依次是 shell版本聲明 註釋部分聲明 環境變量聲明 程序主體 退出返回
下面依次講解

shell版本聲明

第一行 #!/bin/bash 聲明這個 腳本 使用的shell版本:
因爲shell有很多種類型 比如sh,bash,csh,tcsh 
如果不指定版本 系統會不知道用哪一個版本的shell去處理這個腳本
所以會報錯
一般linux發行版默認內置的是bash 所以一般是寫#!/bin/bash

註釋部分聲明

說明程序的作者 功能 編輯時間等等信息

環境變量聲明

環境變量是用來定義系統運行環境的一些參數的變量
比如每個用戶不同的家目錄(HOME)、郵件存放位置(MAIL)等。
具體可以看後端開發必須掌握的Linux命令[變量篇]中的講解

其中比較重要的一個環境變量是PATH
它代表的是一系列路徑的字符串集合
它默認存放了下面的路徑地址 如 
usr/local/sbin
/usr/local/bin
/usr/sbin
/usr/bin等等
比如當你在shell腳本中調用命令echo的時候
本質上系統就會從PATH存放的路徑集合中
去尋找這些路徑中是不是包含了命令echo對應的可執行文件
如果找的到 就執行 如果找不到的話你調用echo就會報錯
這樣就有一個問題 
假如你調用的一個比較陌生的命令
它所對應的文件路徑 
不在PATH默認的路徑集合中中

你就需要把它加入PATH (用冒號 等於號)
然後在對它重新聲明爲環境變量(用export)

  這樣纔可以 否則還是會報錯的
 一般常用的命令比如ls echo 等等
 是默認已經包含在PATH變量的路徑集合中了 所以開頭不需要聲明
 這裏只是爲了講解程序的標準結構故引出來了

程序主體

普通語句

就是用普通的命令組成的語句

條件語句

簡單的if …then

在這裏插入圖片描述
實例:
在這裏插入圖片描述

複雜的if …then

在這裏插入圖片描述
實例:
在這裏插入圖片描述

在這裏插入圖片描述
case…esac

在這裏插入圖片描述
實例:
在這裏插入圖片描述

循環語句

while do done

當while中的條件爲真的時候就繼續執行
在這裏插入圖片描述
實例:
在這裏插入圖片描述

until do done

當until中的條件爲真的時候就結束執行
在這裏插入圖片描述
實例:
在這裏插入圖片描述

for…do…done

在這裏插入圖片描述
實例:
在這裏插入圖片描述

for…do…done的數值處理結構

在這裏插入圖片描述
實例:
在這裏插入圖片描述

退出返回

在我們這個例子當中,使用 exit 0 ,
這代表離開 script 並且回傳一個 0 給系統,
所以執行完這個 script 後,若接着下達 echo $? 則可得到0 值!
利用這個 exit n (n 是數字) 的功能,我們還可以自定義錯誤返回值 從而使程序更聰明

執行

假設我們編寫好的shell腳本的文件名爲hello.sh,文件位置在/data/shell目錄中並已有執行權限

執行方法一:通過路徑

1、相對路徑
cd /data/shell
./hello.sh

2、絕對路徑
/data/shell/hello.sh

執行方法二:通過sh或bash

sh
cd /data/shell
sh hello.sh


bash
cd /data/shell
bash hello.sh

執行方法三:通過 source 或.(點號)

source
cd /data/shell
source hello.sh

.
cd /data/shell
. hello.sh

區別:

1.絕對路徑和相對路徑沒有什麼區別,兩種方式都需要提前賦予腳本以執行權限。

2.sh或者bash方式是把腳本當做bash的調用來處理,所以,腳本不需要有執行權限就可以執行。
前兩種方式都是在當前shell中打開一個子shell來執行腳本內容,當腳本內容結束,則子shell關閉,回到父shell中。

3.source或者.方式是使腳本內容在當前shell裏執行,而不是單獨開子shell執行。

4.開子shell與不開子shell的區別就在於,環境變量的繼承關係,如在子shell中設置的當前變量,
不做特殊通道處理的話,父shell是不可見的。
而在當前shell中執行的話,則所有設置的環境變量都是直接生效可用的。

調試

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章