運維大作戰之linux基礎命令大全

一.

  1. 顯示日期:date
    顯示格式:date +%Y/%m/%d date +%H:%M
    日曆指令:cal
    計算器:bc 顯示幾位小數點:scale=number 退出計算器:quit
    2.[Tab]熱鍵:輸入gr 命令時連按兩下爲有哪些以gr開頭的命令,文件時連按兩下爲有哪些以gr開頭的文件。
  2. man page 說明後面的數字中,1 代表一般賬號可用指令,8 代表系統管理員常用指令,5 代表系統配置文件
    4.關機:shutdown [-krhc] [時間] ‘信息’
    選項與參數:
    -k : 不是真的關機,只是發送警告訊息出去!
    -r : 在將系統的服務停掉之後就重新啓動(常用)
    -h : 將系統的服務停掉後,立即關機。 (常用)
    -c : 取消已經在進行的 shutdown 指令內容。
    5.查詢當前主機在線人員:who
    將數據同步寫入硬盤中的指令:sync(關機前都執行一下,養成好習慣)

二.Linux 的文件權限與目錄配置
1.用戶記錄在/etc/passwd文件中
密碼記錄在/etc/shadow文件中
組名記錄在/etc/group文件中
2.改變文件所屬羣組:chgrp [-R] dirname/filename
選項與參數:
-R : 進行遞歸(recursive)的持續變更,亦即連同次目錄下的所有文件、目錄
都更新成爲這個羣組之意。常常用在變更某一目錄內所有的文件之情況。
改變文件所屬者:chown [-R] 賬號名稱 文件或目錄
chown [-R] 賬號名稱:組名 文件或目錄
選項與參數:
-R : 進行遞歸(recursive)的持續變更,亦即連同次目錄下的所有文件都變更
改變文件權限:chmod [-R] xyz 文件或目錄
選項與參數:
xyz : 就是剛剛提到的數字類型的權限屬性,爲 rwx 屬性數值的相加。
-R : 進行遞歸(recursive)的持續變更,亦即連同次目錄下的所有文件都會變更
3.文件的權限:
• r (read):可讀取此一文件的實際內容,如讀取文本文件的文字內容等;
w (write):可以編輯、新增或者是修改該文件的內容(但不含刪除該文件);
x (eXecute):該文件具有可以被系統執行的權限。
目錄的權限:
w:o 建立新的文件與目錄;
o 刪除已經存在的文件與目錄(不論該文件的權限爲何!)
o 將已存在的文件或目錄進行更名;
o 搬移該目錄內的文件、目錄位置。
x:代表可以進入該目錄(可以想象爲抽屜的鑰匙)

三.Linux目錄與文件管理
1.建立新目錄:mkdir [-mp] 目錄名稱
選項與參數:
-m :配置文件案的權限喔!直接設定,不需要看預設權限 (umask) 的臉色~
-p :幫助你直接將所需要的目錄(包含上層目錄)遞歸建立起來!
2.刪除目錄:rmdir或rm

  1. 文件與目錄的檢視:ls [-aAdfFhilnrRSt] 文件名或目錄名稱..
    ls [--color={never,auto,always}] 文件名或目錄名稱..
    ls [--full-time] 文件名或目錄名稱..
    選項與參數:
    -a :全部的文件,連同隱藏檔( 開頭爲 . 的文件) 一起列出來(常用)
    -A :全部的文件,連同隱藏檔,但不包括 . 與 .. 這兩個目錄
    -d :僅列出目錄本身,而不是列出目錄內的文件數據(常用)
    -f :直接列出結果,而不進行排序 (ls 預設會以檔名排序!)
    -F :根據文件、目錄等信息,給予附加數據結構,例如:
    *:代表可執行文件; /:代表目錄; =:代表 socket 文件; |:代表 FIFO 文件;
    -h :將文件容量以人類較易讀的方式(例如 GB, KB 等等)列出來;
    -i :列出 inode 號碼,inode 的意義下一章將會介紹;
    -l :長數據串行出,包含文件的屬性與權限等等數據;(常用)
    -n :列出 UID 與 GID 而非使用者與羣組的名稱 (UID 與GID 會在賬號管理提到!)
    -r :將排序結果反向輸出,例如:原本檔名由小到大,反向則爲由大到小;
    -R :連同子目錄內容一起列出來,等於該目錄下的所有文件都會顯示出來;
    -S :以文件容量大小排序,而不是用檔名排序;
    -t :依時間排序,而不是用檔名。
    --color=never :不要依據文件特性給予顏色顯示;
    --color=always :顯示顏色
    --color=auto :讓系統自行依據設定來判斷是否給予顏色
    --full-time :以完整時間模式 (包含年、月、日、時、分) 輸出
    --time={atime,ctime} :輸出 access 時間或改變權限屬性時間 (ctime)
    而非內容變更時間 (modification time)
  2. 複製文件或目錄:cp [-adfilprsu] 來源文件(source) 目標文件(destination)
    cp [options] source1 source2 source3 .... directory
    選項與參數:
    -a :相當於 -dr --preserve=all 的意思,至於 dr 請參考下列說明;(常用)
    -d :若來源文件爲鏈接文件的屬性(link file),則複製鏈接文件屬性而非文件本身;
    -f :爲強制(force)的意思,若目標文件已經存在且無法開啓,則移除後再嘗試一次;
    -i :若目標文件(destination)已經存在時,在覆蓋時會先詢問動作的進行(常用)
    -l :進行硬式連結(hard link)的連結檔建立,而非複製文件本身;
    -p :連同文件的屬性(權限、用戶、時間)一起復制過去,而非使用默認屬性(備份常用);
    -r :遞歸持續複製,用於目錄的複製行爲;(常用)
    -s :複製成爲符號鏈接文件 (symbolic link),亦即『快捷方式』文件;
    -u :destination 比 source 舊才更新 destination,或 destination 不存在的情況下才複製。
    --preserve=all :除了 -p 的權限相關參數外,還加入 SELinux 的屬性, links, xattr 等也複製了。
    最後需要注意的,如果來源檔有兩個以上,則最後一個目的文件一定要是『目錄』才行!
    1. 移除文件或目錄:rm [-fir] 文件或目錄
      選項與參數:
      -f :就是 force 的意思,忽略不存在的文件,不會出現警告訊息;
      -i :互動模式,在刪除前會詢問使用者是否動作
      -r :遞歸刪除啊!最常用在目錄的刪除了!這是非常危險的選項!!!
    2. 移動文件與目錄,或更名:mv [-fiu] source destination
      mv [options] source1 source2 source3 .... directory
      選項與參數:
      -f :force 強制的意思,如果目標文件已經存在,不會詢問而直接覆蓋;
      -i :若目標文件 (destination) 已經存在時,就會詢問是否覆蓋!
      -u :若目標文件已經存在,且 source 比較新,纔會更新 (update)
    3. 直接檢視文件內容:cat [-AbEnTv]
      選項與參數:
      -A :相當於 -vET 的整合選項,可列出一些特殊字符而不是空白而已;
      -b :列出行號,僅針對非空白行做行號顯示,空白行不標行號!
      -E :將結尾的斷行字符 $ 顯示出來;
      -n :打印出行號,連同空白行也會有行號,與 -b 的選項不同;
      -T :將 [tab] 按鍵以 ^I 顯示出來;
      -v :列出一些看不出來的特殊字符
    4. 非純文本檔:od [-t TYPE] 文件
      選項或參數:
      -t :後面可以接各種『類型 (TYPE)』的輸出,例如:
      a :利用默認的字符來輸出;
      c :使用 ASCII 字符來輸出
      d[size] :利用十進制(decimal)來輸出數據,每個整數佔用 size bytes ;
      f[size] :利用浮點數(floating)來輸出數據,每個數佔用 size bytes ;
      o[size] :利用八進制(octal)來輸出數據,每個整數佔用 size bytes ;
      x[size] :利用十六進制(hexadecimal)來輸出數據,每個整數佔用 size bytes ;
    5. 修改文件時間或建置新檔:touch [-acdmt] 文件
      選項與參數:
      -a :僅修訂 access time;
      -c :僅修改文件的時間,若該文件不存在則不建立新文件;
      -d :後面可以接欲修訂的日期而不用目前的日期,也可以使用 --date="日期或時間"
      -m :僅修改 mtime ;
      -t :後面可以接欲修訂的時間而不用目前的時間,格式爲[YYYYMMDDhhmm]
      10.查閱預設權限:umask (或umask –S)
      修改預設權限:umask number(eg:022(要拿掉的權限))
  3. 配置文件案隱藏屬性:chattr [+-=][ASacdistu] 文件或目錄名稱
    選項與參數:
    • :增加某一個特殊參數,其他原本存在參數則不動。
      • :移除某一個特殊參數,其他原本存在參數則不動。
        = :設定一定,且僅有後面接的參數

a :當設定 a 之後,這個文件將只能增加數據,而不能刪除也不能修改數據,只有root 才能設定這屬性
i :這個 i 可就很厲害了!他可以讓一個文件『不能被刪除、改名、設定連結也無法寫入或新增數據!』對於系統安全性有相當大的幫助!只有 root 能設定此屬性
注意1:屬性設定常見的是 a 與 i 的設定值,而且很多設定值必須要身爲 root 才能設定
注意2:xfs 文件系統僅支援 AadiS 而已
顯示文件隱藏屬性:lsattr [-adR] 文件或目錄
選項與參數:
-a :將隱藏文件的屬性也秀出來;
-d :如果接的是目錄,僅列出目錄本身的屬性而非目錄內的文件名;
-R :連同子目錄的數據也一併列出來!

  1. SUID/SGID/SBIT 權限設定
    4 爲SUID(僅用在文件) 執行者將具有該程序擁有者(owner) 的權限(前提:執行者需具有x權限)
    • 2 爲SGID(可用於文件與目錄)對文件:執行者在執行的過程中將會獲得該程序羣組 的 的支持。
    • 對目錄:若用戶在此目錄下具有w 的權限(可以新建 文 文件),則使用者所建立的新文件,該新文件 的 的羣組與此目錄的羣組相同
    • 1 爲SBIT(僅用於目錄) 當用戶在該目錄下建立文件或目錄時,僅有自己與root 纔有 有權力刪除該文件
    chmod 4755 test <==加入具有 SUID 的權限
    chmod 7666 test; ls -l test
    -rwSrwSrwT 1 root root 0 Jun 16 02:53 test <==具有空的 SUID/SGID/SBIT權限(因爲文件沒有x權限,所以給予特殊權限也是空的,大寫字母表示空權限)

13.:文件檔名的搜尋

  1. whereis [-bmsu] 文件或目錄名
    選項與參數:
    -l :可以列出 whereis 會去查詢的幾個主要目錄而已
    -b :只找 binary 格式的文件
    -m :只找在說明文件 manual 路徑下的文件
    -s :只找 source 來源文件
    -u :搜尋不在上述三個項目當中的其他特殊文件

  2. locate [-ir] keyword(使用前要先updatedb)
    選項與參數:
    -i :忽略大小寫的差異;
    -c :不輸出檔名,僅計算找到的文件數量
    -l :僅輸出幾行的意思,例如輸出五行則是 -l 5
    -S :輸出 locate數據庫紀錄的文件/目錄數量等
    -r :後面可接正規表示法的顯示方式
    1. find [PATH] [option] [action]
      選項與參數:
    2. 與時間有關的選項:共有 -atime, -ctime 與 -mtime ,以 -mtime 說明
      -mtime n :n 爲數字,意義爲在 n 天之前的『一天之內』被更動過內容的文件;
      -mtime +n :列出在 n 天之前(不含 n 天本身)被更動過內容的文件檔名;
      -mtime -n :列出在 n 天之內(含 n 天本身)被更動過內容的文件檔名。
      -newer file :file 爲一個存在的文件,列出比 file 還要新的文件檔名
    3. 與使用者或組名有關的參數:
      -uid n :n 爲數字,這個數字是用戶的賬號 ID,亦即 UID ,這個 UID 是記錄在
      /etc/passwd 裏面與賬號名稱對應的數字。
      -gid n :n 爲數字,這個數字是組名的 ID,亦即 GID,這個 GID 記錄在/etc/group。
      -user name :name 爲使用者賬號名稱喔!例如 dmtsai
      -group name:name 爲組名喔,例如 users ;
      -nouser :尋找文件的擁有者不存在 /etc/passwd 的人!
      -nogroup :尋找文件的擁有羣組不存在於 /etc/group 的文件!
      當你自行安裝軟件時,很可能該軟件的屬性當中並沒有文件擁有者,這是可能的!在這個時候,就可以使用 -nouser 與 -nogroup 搜尋。
    4. 與文件權限及名稱有關的參數:
      -name filename:搜尋文件名爲 filename 的文件;
      -size [+-]SIZE:搜尋比 SIZE 還要大(+)或小(-)的文件。這個 SIZE 的規格有:c: 代表 byte, k: 代表 1024bytes。所以,要找比 50KB還要大的文件,就是『 -size +50k 』
      -type TYPE :搜尋文件的類型爲 TYPE 的,類型主要有:一般正規文件 (f), 裝置文件 (b, c),目錄 (d), 連結檔 (l), socket (s), 及 FIFO (p) 等屬性。
      -perm mode :搜尋文件權限『剛好等於』 mode 的文件,這個 mode 爲類似 chmod的屬性值,舉例來說, -rwsr-xr-x 的屬性爲 4755 !
      -perm -mode :搜尋文件權限『必須要全部囊括 mode 的權限』的文件,舉例來說,我們要搜尋 -rwxr--r-- ,亦即 0744 的文件,使用 -perm -0744,當一個文件的權限爲 -rwsr-xr-x ,亦即 4755 時,也會被列出來,因爲 -rwsr-xr-x 的屬性已經囊括了 -rwxr--r-- 的屬性了。
      -perm /mode :搜尋文件權限『包含任一 mode 的權限』的文件,舉例來說,我們搜尋-rwxr-xr-x ,亦即 -perm /755 時,但一個文件屬性爲 -rw-------也會被列出來,因爲他有 -rw.... 的屬性存在!
    5. 額外可進行的動作:
      -exec command :command 爲其他指令,-exec 後面可再接額外的指令來處理搜尋到的結果。
      -print :將結果打印到屏幕上,這個動作是預設動作!
      eg:find /usr/bin /usr/sbin -perm /7000 -exec ls -l { } \; # -exec後指令不支持命令別名
      •{} 代表的是『由find 找到的內容』,如上圖所示,find 的結果會被放置到{} 位置中;
      •-exec 一直到\; 是關鍵詞,代表find 額外動作的開始(-exec) 到結束(\;) ,在這中間的就是find 指令內的額外動作。在本例中就是『ls -l {} 』囉!
      •因爲『; 』在bash 環境下是有特殊意義的,因此利用反斜槓來跳脫。
  1. gzip [-cdtv#] 檔名 (壓縮後源文件就不存在了)
    選項與參數:
    -c :將壓縮的數據輸出到屏幕上,可透過數據流重導向來處理;
    eg:gzip -c services > services.gz(源文件會保留)
    -d :解壓縮的參數;(或gunzip指令)
    -t :可以用來檢驗一個壓縮文件的一致性~看看文件有無錯誤;
    -v :可以顯示出原文件/壓縮文件案的壓縮比等信息;
    -# :# 爲數字的意思,代表壓縮等級,-1 最快,但是壓縮比最差、-9 最慢,但是壓縮比最好!預設是 -6
    zcat 檔名.gz #查看壓縮包文檔內容 (zcat/zmore/zless)
    zgrep ‘關鍵字’檔名.gz #從壓縮包拮取關鍵字

bzip2 [-cdkzv#] 檔名
選項與參數:
-c :將壓縮的過程產生的數據輸出到屏幕上!
-d :解壓縮的參數
-k :保留源文件,而不會刪除原始的文件喔!
-z :壓縮的參數 (默認值,可以不加)
-v :可以顯示出原文件/壓縮文件案的壓縮比等信息;
-# :與 gzip 同樣的,都是在計算壓縮比的參數, -9 最佳, -1 最快!
bzcat 檔名.bz2 #查看壓縮包文檔內容 (bzcat/bzmore/bzless)
bzgrep ‘關鍵字’檔名.gz #從壓縮包拮取關鍵字

xz [-dtlkc#] 檔名
選項與參數:
-d :就是解壓縮啊!
-t :測試壓縮文件的完整性,看有沒有錯誤
-l :列出壓縮文件的相關信息
-k :保留原本的文件不刪除~
-c :同樣的,就是將數據由屏幕上輸出的意思!
-# :同樣的,也有較佳的壓縮比的意思!
xcat 檔名.xz #查看壓縮包文檔內容 (xzcat/xzmore/xzless)
xzgrep ‘關鍵字’檔名.gz #從壓縮包拮取關鍵字

tar [-z|-j|-J] [cv] [-f 待建立的新檔名] filename... <==打包與壓縮
tar [-z|-j|-J] [tv] [-f 既有的 tar 檔名] <==察看檔名
tar [-z|-j|-J] [xv] [-f 既有的 tar 檔名] [-C 目錄] <==解壓縮
選項與參數:
-c :建立打包文件,可搭配 -v 來察看過程中被打包的檔名(filename)
-t :察看打包文件的內容含有哪些檔名,重點在察看『檔名』就是了;
-x :解打包或解壓縮的功能,可以搭配 -C (大寫) 在特定目錄解開
特別留意的是, -c, -t, -x 不可同時出現在一串指令列中。
-z :透過 gzip 的支持進行壓縮/解壓縮:此時檔名最好爲 .tar.gz
-j :透過 bzip2 的支持進行壓縮/解壓縮:此時檔名最好爲
.tar.bz2
-J :透過 xz 的支持進行壓縮/解壓縮:此時檔名最好爲 *.tar.xz
特別留意, -z, -j, -J 不可以同時出現在一串指令列中
-v :在壓縮/解壓縮的過程中,將正在處理的文件名顯示出來!
-f filename:-f 後面要立刻接要被處理的檔名!建議 -f 單獨寫一個選項囉!(比較不會忘記)
-C 目錄 :這個選項用在解壓縮,若要在特定目錄解壓縮,可以使用這個選項。
其他後續練習會使用到的選項介紹:
-p(小寫) :保留備份數據的原本權限與屬性,常用於備份(-c)重要的配置文件
-P(大寫) :保留絕對路徑,亦即允許備份數據中含有根目錄存在之意;
--exclude=FILE:在壓縮的過程中,不要將 FILE 打包!
•壓 縮:tar -jcv -f filename.tar.bz2 要被壓縮的文件或目錄名稱
•查 詢:tar -jtv -f filename.tar.bz2
•解壓縮:tar -jxv -f filename.tar.bz2 -C 欲解壓縮的目錄

僅解開單一文件的方法:1.tar -jtv -f /root/etc.tar.bz2 | grep 'shadow'(只解開壓縮包裏的shadow)2.tar -jxv -f 打包檔.tar.bz2 待解開檔名

  1. useradd [-u UID] [-g 初始羣組] [-G 次要羣組] [-mM] [-c 說明欄] [-d 家目錄絕對路徑] [-s shell] 使用者賬號名
    選項與參數:
    -u :後面接的是 UID ,是一組數字。直接指定一個特定的 UID 給這個賬號;
    -g :後面接的那GID,該羣組的 GID 會被放置到 /etc/passwd 的第四個字段內。
    -G :後面接的組名則是這個賬號還可以加入的羣組。
    -M :強制!不要建立用戶家目錄!(系統賬號默認值)
    -m :強制!要建立用戶家目錄!(一般賬號默認值)
    -c :這個就是 /etc/passwd 的第五欄的說明內容啦~可以隨便我們設定的啦~
    -d :指定某個目錄成爲家目錄,而不要使用默認值。務必使用絕對路徑!
    -r :建立一個系統的賬號,這個賬號的 UID 會有限制 (參考 /etc/login.defs)
    -s :後面接一個 shell ,若沒有指定則預設是 /bin/bash 的啦~
    -e :後面接一個日期,格式爲『YYYY-MM-DD』此項目可寫入 shadow 第八字段,亦即賬號失效日的設定項目囉;
    -f :後面接 shadow 的第七字段項目,指定密碼是否會失效。0 爲立刻失效,
    -1 爲永遠不失效(密碼只會過期而強制於登入時重新設定而已。)
    -p 設置密碼

passwd [--stdin] [賬號名稱] <==所有人均可使用來改自己的密碼
passwd [-l] [-u] [--stdin] [-S] [-n 日數] [-x 日數] [-w 日數] [-i 日期] 賬號 <==root 功能

選項與參數:
--stdin :可以透過來自前一個管線的數據,作爲密碼輸入,對 shell script 有幫助!
-l :是 Lock 的意思,會將 /etc/shadow 第二欄最前面加上 ! 使密碼失效;
-u :與 -l 相對,是 Unlock 的意思!
-S :列出密碼相關參數,亦即 shadow 文件內的大部分信息。
-n :後面接天數,shadow 的第 4 字段,多久不可修改密碼天數
-x :後面接天數,shadow 的第 5 字段,多久內必須要更動密碼
-w :後面接天數,shadow 的第 6 字段,密碼過期前的警告天數
-i :後面接『日期』,shadow 的第 7 字段,密碼失效日期

密碼參數顯示:chage
chage [-ldEImMW] 賬號名
選項與參數:
-l :列出該賬號的詳細密碼參數;
-d :後面接日期,修改 shadow 第三字段(最近一次更改密碼的日期),格式 YYYY-MM-DD
-E :後面接日期,修改 shadow 第八字段(賬號失效日),格式 YYYY-MM-DD
-I :後面接天數,修改 shadow 第七字段(密碼失效日期)
-m :後面接天數,修改 shadow 第四字段(密碼最短保留天數)
-M :後面接天數,修改 shadow 第五字段(密碼多久需要進行變更)
-W :後面接天數,修改 shadow 第六字段(密碼過期前警告日期)

usermod [-cdegGlsuLU] username
選項與參數:
-c :後面接賬號的說明,即 /etc/passwd 第五欄的說明欄,可以加入一些賬號的說明。
-d :後面接賬號的家目錄,即修改 /etc/passwd 的第六欄;
-e :後面接日期,格式是 YYYY-MM-DD 也就是在 /etc/shadow 內的第八個字段數據啦!
-f :後面接天數,爲 shadow 的第七字段。
-g :後面接初始羣組,修改 /etc/passwd 的第四個字段,亦即是 GID 的字段!
-G :後面接次要羣組,修改這個使用者能夠支持的羣組,修改的是 /etc/group 囉~
-a :與 -G 合用,可『增加次要羣組的支持』而非『設定』喔!
-l :後面接賬號名稱。亦即是修改賬號名稱, /etc/passwd 的第一欄!
-s :後面接 Shell 的實際文件,例如 /bin/bash 或 /bin/csh 等等。
-u :後面接 UID 數字啦!即 /etc/passwd 第三欄的資料;
-L :暫時將用戶的密碼凍結,讓他無法登入。其實僅改 /etc/shadow 的密碼欄。
-U :將 /etc/shadow 密碼欄的 ! 拿掉,解凍啦!

userdel [-r] username
選項與參數:
-r :連同用戶的家目錄也一起刪除

16.groupadd [-g gid] [-r] 組名
選項與參數:
-g :後面接某個特定的 GID ,用來直接給予某個 GID ~
-r :建立系統羣組啦!與 /etc/login.defs 內的 GID_MIN 有關。
groupmod [-g gid] [-n group_name] 羣組名
選項與參數:
-g :修改既有的 GID 數字;
-n :修改既有的組名
groupdel [groupname]

gpasswd:羣組管理員功能:
#關於系統管理員(root)做的動作:
gpasswd groupname
gpasswd [-A user1,...] [-M user3,...] groupname
gpasswd [-rR] groupname
選項與參數:
:若沒有任何參數時,表示給予 groupname 一個密碼(/etc/gshadow)
-A :將 groupname 的主控權交由後面的使用者管理(該羣組的管理員)
-M :將某些賬號加入這個羣組當中!
-r :將 groupname 的密碼移除
-R :讓 groupname 的密碼欄失效
#關於羣組管理員(Group administrator)做的動作:
gpasswd [-ad] user groupname
選項與參數:
-a :將某位使用者加入到 groupname 這個羣組當中!
-d :將某位使用者移除出 groupname 這個羣組當中。

17.ACL:針對單一使用者,單一文件或目錄來進行r,w,x 的權限規範
•setfacl:設定某個目錄/文件的ACL 規範。
•getfacl:取得某個文件/目錄的ACL 設定項目;
setfacl [-bkRd] [{-m|-x} acl 參數] 目標文件名
選項與參數:
-m :設定後續的 acl 參數給文件使用,不可與 -x 合用;
-x :刪除後續的 acl 參數,不可與 -m 合用;
-b :移除『所有的』 ACL 設定參數;
-k :移除『預設的』 ACL 參數,關於所謂的『預設』參數於後續範例中介紹;
-R :遞歸設定 acl ,亦即包括次目錄都會被設定起來;
-d :設定『預設 acl 參數』的意思!只對目錄有效,在該目錄新建的數據會引用此默認值

#設定規範:『 u:[使用者賬號]:[rwx] 』:
setfacl -m u:chenmingchang:rx acl_test1
#設定規範:『 g:[羣組列表]:[rwx] 』:
setfacl -m g:mygroup1:rx acl_test1
針對有效權限 mask 的設定方式:
#設定規範:『 m:[rwx] 』 setfacl -m m:r acl_test1
使用者或羣組所設定的權限必須要存在於 mask 的權限設定範圍內纔會生效

getfacl 指令用法: getfacl filename

查詢用戶相關信息:id finger
last 可以列出從系統建立之後到目前爲止的所有登入者信息!
每個賬號的最近登入的時間:lastlog
查詢在線用戶:who

18.擷取命令: cut, grep
cut -d'分隔字符' -f fields <==用於有特定分隔字符
cut -c 字符區間 <==用於排列整齊的訊息
選項與參數:
-d :後面接分隔字符。與 -f 一起使用;
-f :依據 -d 的分隔字符將一段訊息分區成爲數段,用 -f 取出第幾段的意思;
-c :以字符 (characters) 的單位取出固定字符區間;
grep [-acinv] [--color=auto] '搜尋字符串' filename
選項與參數:
-a :將 binary 文件以 text 文件的方式搜尋數據
-c :計算找到 '搜尋字符串' 的次數
-i :忽略大小寫的不同,所以大小寫視爲相同
-n :順便輸出行號
-v :反向選擇,亦即顯示出沒有 '搜尋字符串' 內容的那一行!
--color=auto :可以將找到的關鍵詞部分加上顏色的顯示喔!

統計文件裏面有多少字?多少行?多少字符:wc [-lwm]
選項與參數:
-l :僅列出行;
-w :僅列出多少字(英文單字);
-m :多少字符;

sed [-nefr] [動作]
選項與參數:
-n :使用安靜(silent)模式。在一般 sed 的用法中,所有來自 STDIN 的數據一般都會被列出到屏幕上。但如果加上 -n 參數後,則只有經過 sed 特殊處理的那一行(或者動作)纔會被列出來。
-e :直接在指令列模式上進行 sed 的動作編輯;
-f :直接將 sed 的動作寫在一個文件內, -f filename 則可以執行 filename 內的 sed 動作;
-r :sed 的動作支持的是延伸型正規表示法的語法。(預設是基礎正規表示法語法)
-i :直接修改讀取的文件內容,而不是由屏幕輸出。
動作說明: [n1[,n2]]function
n1, n2 :不見得會存在,一般代表『選擇進行動作的行數』,舉例來說,如果我的動作是需要在 10 到 20 行之間進行的,則『 10,20[動作行爲] 』
function 有底下這些咚咚:
a :新增, a 的後面可以接字符串,而這些字符串會在新的一行出現(目前的下一行)~
c :取代, c 的後面可以接字符串,這些字符串可以取代 n1,n2 之間的行!
d :刪除,因爲是刪除啊,所以 d 後面通常不接任何咚咚;
i :插入, i 的後面可以接字符串,而這些字符串會在新的一行出現(目前的上一行);
p :打印,亦即將某個選擇的數據印出。通常 p 會與參數 sed -n 一起運作~
s :取代,可以直接進行取代的工作哩!通常這個 s 的動作可以搭配正規表示法!
例如 1,20s/old/new/g 就是啦!(sed ‘s/要被取代的字符串/新的字符串/g’)

19.比較文件差異:
diff [-bBi] from-file to-file
選項與參數:
from-file :一個檔名,作爲原始比對文件的檔名;
to-file :一個檔名,作爲目的比對文件的檔名;
注意,from-file 或 to-file 可以 - 取代,那個 - 代表『Standard input』之意。
-b :忽略一行當中,僅有多個空白的差異(例如 "about me" 與 "about me" 視爲相同
-B :忽略空白行的差異。
-i :忽略大小寫的不同。

20.工作排程:
只執行一次:
at [-mldv] TIME
at -c 工作號碼
選項與參數:
-m :當 at 的工作完成後,即使沒有輸出訊息,亦以 email 通知使用者該工作已完成。
-l :at -l 相當於 atq,列出目前系統上面的所有該用戶的 at 排程;
-d (jobnumber):at -d 相當於 atrm ,可以取消一個在 at 排程中的工作;
-v :可以使用較明顯的時間格式欄出 at 排程中的任務欄表;
-c :可以列出後面接的該項工作的實際指令內容。
TIME:時間格式,這裏可以定義出『什麼時候要進行 at 這項工作』的時間,格式有:
HH:MM ex> 04:00
在今日的 HH:MM 時刻進行,若該時刻已超過,則明天的 HH:MM 進行此工作。
HH:MM YYYY-MM-DD ex> 04:00 2015-07-30
強制規定在某年某月的某一天的特殊時刻進行該工作!
HH:MM[am|pm] [Month] [Date] ex> 04pm July 30
也是一樣,強制在某年某月某日的某時刻進行!
HH:MM[am|pm] + number [minutes|hours|days|weeks]
ex> now + 5 minutes ex> 04pm + 3 days
就是說,在某個時間點『再加幾個時間後』才進行。

循環執行:
crontab [-u username] [-l|-e|-r]
選項與參數:
-u :只有 root 才能進行這個任務,亦即幫其他使用者建立/移除 crontab 工作排程;
-e :編輯 crontab 的工作內容
-l :查閱 crontab 的工作內容
-r :移除所有的 crontab 的工作內容,若僅要移除一項,請用 -e 去編輯。
使用crontab 後, 他的工作會被記錄到/var/spool/cron/* 裏頭去!但請注意,不要使用vi 直接編輯該文件, 因爲可能由於輸入語法錯誤,會導致無法執行cron 喔!另外,cron 執行的每一項工作都會被紀錄到/var/log/cron 這個登錄檔中。

範例一:用 dmtsai 的身份在每天的 12:00 發信給自己
[dmtsai@study ~]$ crontab -e
#此時會進入 vi 的編輯畫面讓您編輯工作!注意到,每項工作都是一行。
0 12 * mail -s "at 12:00" dmtsai < /home/dmtsai/.bashrc
#分 時 日 月 周 |<==============指令串========================>|

關機狀態下,任務過期,開機會重新執行任務:
anacron [-sfn] [job]
anacron -u [job]
選項與參數:
-s :開始一連續的執行各項工作 (job),會依據時間記錄文件的數據判斷是否進行;
-f :強制進行,而不去判斷時間記錄文件的時間戳;
-n :立刻進行未進行的任務,而不延遲 (delay) 等待時間;
-u :僅更新時間記錄文件的時間戳,不進行任何工作。
job :由 /etc/anacrontab 定義的各項工作名稱。

21.進程管理
觀察目前的背景工作狀態: jobs
jobs [-lrs]
選項與參數:
-l :除了列出 job number 與指令串之外,同時列出 PID 的號碼;
-r :僅列出正在背景 run 的工作;
-s :僅列出正在背景當中暫停 (stop) 的工作。

把正在執行的工作丟到背景:Ctrl+Z (工作會暫停)
將背景工作拿到前景來處理:fg %jobnumber (jobnumber 爲工作號碼(數字)。注意,那個 % 是可有可無的!)

讓工作在背景下的狀態變成運作中: bg %jobnumber

管理背景當中的工作: kill
kill -signal %jobnumber
[root@study ~]# kill -l
選項與參數:
-l :這個是 L 的小寫,列出目前 kill 能夠使用的訊號 (signal) 有哪些?
signal :代表給予後面接的那個工作什麼樣的指示囉!用 man 7 signal 可知:
-1 :重新讀取一次參數的配置文件 (類似 reload);
-2 :代表與由鍵盤輸入 [ctrl]-c 同樣的動作;
-9 :立刻強制刪除一個工作;
-15:以正常的進程方式終止一項工作,與 -9 是不一樣的。(默認值)

22.ps :將某個時間點的進程運作情況擷取下來
ps aux <==觀察系統所有的進程數據
ps -lA <==也是能夠觀察所有系統的數據
ps axjf <==連同部分進程樹狀態
選項與參數:
-A :所有的 process 均顯示出來,與 -e 具有同樣的效用;
-a :不與 terminal 有關的所有 process ;
-u :有效使用者 (effective user) 相關的 process ;
x :通常與 a 這個參數一起使用,可列出較完整信息。輸出格式規劃:
l :較長、較詳細的將該 PID 的的信息列出;
j :工作的格式 (jobs format)
-f :做一個更爲完整的輸出。
直接背兩個比較不同的選項, 一個是隻能查閱自己 bash 進程的『ps -l 』一個則是可以查閱所有系統運作的進程『ps aux 』!注意,你沒看錯,是『ps aux 』沒有那個減號(-) !

top:動態觀察進程的變化
top [-d 數字] | top [-bnp]
選項與參數:
-d :後面可以接秒數,就是整個進程畫面更新的秒數。預設是 5 秒;
-b :以批次的方式執行 top ,還有更多的參數可以使用喔!通常會搭配數據流重導向來將批次的結果輸出成爲文件。
-n :與 -b 搭配,意義是,需要進行幾次 top 的輸出結果。
-p :指定某些個 PID 來進行觀察監測而已。在 top 執行過程當中可以使用的按鍵指令:
? :顯示在 top 當中可以輸入的按鍵指令;
P :以 CPU 的使用資源排序顯示;
M :以 Memory 的使用資源排序顯示;
N :以 PID 來排序喔!
T :由該 Process 使用的 CPU 時間累積 (TIME+) 排序。
k :給予某個 PID 一個訊號 (signal)
r :給予某個 PID 重新制訂一個 nice 值。
q :離開 top 軟件的按鍵。

kill -signal PID
選項與參數:
-1: 啓動被終止的進程,可讓該 PID 重新讀取自己的配置文件,類似重新啓動
-9: 代表強制中斷一個進程的進行,如果該進程進行到一半, 那麼尚未完成的部分可能會有『半產品』產生,類似 vim 會有 .filename.swp 保留下來。
-15: 以正常的結束進程來終止該進程。由於是正常的終止, 所以後續的動作會將他完成。不過,如果該進程已經發生問題,就是無法使用正常的方法終止時, 輸入這個 signal 也是沒有用的。

killall –signal 指令名稱:
killall [-iIe]/–signal [command name]
選項與參數:
-i :interactive 的意思,交互式的,若需要刪除時,會出現提示字符給用戶;
-e :exact 的意思,表示『後面接的 command name 要一致』,但整個完整的指令不能超過 15 個字符。
-I :指令名稱(可能含參數)忽略大小寫。

nice :新執行的指令即給予新的nice 值
nice [-n 數字] command
選項與參數:
-n :後面接一個數值,數值的範圍 -20 ~ 19。

renice :已存在進程的nice 重新調整
renice [number] PID
選項與參數:
PID :某個進程的 ID 啊!

系統資源的觀察

  1. free :觀察內存使用情況
    free [-b|-k|-m|-g|-h] [-t] [-s N -c N]
    選項與參數:
    -b :直接輸入 free 時,顯示的單位是 Kbytes,我們可以使用 b(bytes),m(Mbytes)k(Kbytes), 及 g(Gbytes) 來顯示單位喔!也可以直接讓系統自己指定單位 (-h)
    -t :在輸出的最終結果,顯示物理內存與 swap 的總量。
    -s :可以讓系統每幾秒鐘輸出一次,不間斷的一直輸出的意思!對於系統觀察挺有效!
    -c :與 -s 同時處理~讓 free 列出幾次的意思~

  2. uname:查閱系統與核心相關信息
    uname [-asrmpi]
    選項與參數:
    -a :所有系統相關的信息,包括底下的數據都會被列出來;
    -s :系統核心名稱
    -r :核心的版本
    -m :本系統的硬件名稱,例如 i686 或 x86_64 等;
    -p :CPU 的類型,與 -m 類似,只是顯示的是 CPU 的類型!
    -i :硬件的平臺 (ix86)

  3. uptime:觀察系統啓動時間與工作負載

  4. netstat :追蹤網絡或插槽文件
    netstat -[atunlp]
    選項與參數:
    -a :將目前系統上所有的聯機、監聽、Socket 數據都列出來
    -t :列出 tcp 網絡封包的數據
    -u :列出 udp 網絡封包的數據
    -n :不以進程的服務名稱,以埠號 (port number) 來顯示;
    -l :列出目前正在網絡監聽 (listen) 的服務;
    -p :列出該網絡服務的進程 PID

fuser:藉由文件(或文件系統)找出正在使用該文件的進程
fuser [-umv] [-k [i] [-signal]] file/dir
選項與參數:
-u :除了進程的 PID 之外,同時列出該進程的擁有者;
-m :後面接的那個檔名會主動的上提到該文件系統的最頂層,對 umount 不成功很有效!
-v :可以列出每個文件與進程還有指令的完整相關性!
-k :找出使用該文件/目錄的 PID ,並試圖以 SIGKILL 這個訊號給予該 PID;
-i :必須與 -k 配合,在刪除 PID 之前會先詢問使用者意願!
-signal:例如 -1 -15 等等,若不加的話,預設是 SIGKILL (-9) 囉!

lsof :列出被進程所開啓的文件檔名
lsof [-aUu] [+d]
選項與參數:
-a :多項數據需要『同時成立』才顯示出結果時!
-U :僅列出 Unix like 系統的 socket 文件類型;
-u :後面接 username,列出該使用者相關進程所開啓的文件;
+d :後面接目錄,亦即找出某個目錄底下已經被開啓的文件!

pidof :找出某支正在執行的程序的PID
pidof [-sx] program_name
選項與參數:
-s :僅列出一個 PID 而不列出所有的 PID
-x :同時列出該 program name 可能的 PPID 那個進程的 PID

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