Linux知識歸檔

計算機發展的五代:
電子管、晶體管、中小規模集成電路、超大規模集成電路、AI人工智能

馮.諾依曼體系結構的五大組成部分:
存儲器、運算器、控制器、輸入設備、輸出設備

內存跟外存的區別:內存(如內存條)的數據在斷電後就會丟失,而外存(如硬盤、U盤、光盤等)的數據在斷電後是不會丟失的。

Linux內核的創始人是林納斯·本納第克特·託瓦茲1991年的十月開發
常見的3個Linux系統名稱Redhat紅帽、CentOS社區版的Linux 、面向於服務器、Ubuntu、Debian

CLI:命令行界面,提供用鍵盤輸入命令的操作方式。
GUI:圖形用戶界面,提供用鼠標操作的圖形化操作界面。
CLI命令行界面管理文件:查、增、改、刪除
清屏:ctrl+L 或 clear

Linux的完整命令格式命令、選項、參數
命令的功能分類:文件管理、用戶管理、權限管理、磁盤管理(存儲管理)、日誌管理、進程管理、服務管理等

目錄結構
/ :根目錄,是路徑的最頂層。所有文件都將位於此目錄下。

/root :root用戶的家目錄,存放root用戶的隱私文件

/home :普通用戶家目錄的主目錄。如jin用戶的家目錄是/home/jin
/bin或/usr/bin :存放普通用戶的命令程序文件。
/sbin或/usr/sbin:存放超級(super)用戶的命令程序文件。

/tmp:存放臨時文件的目錄,臨時文件通常是系統運行程序時自動生成
/var:存放可變的文件,
/mnt或/media:光盤、U盤等設備的文件系統掛載目錄
/proc:進程文件目錄,也稱爲虛擬文件系統,程序在內存中運行時生成的文件
/opt:是選項目錄,可以用來安裝第三方軟件到此目錄中

/usr:是unix soft resource的縮寫,即unix軟件資源文件目錄。
/dev:設備(device)文件目錄,存放硬盤、分區、tty終端等設備文件。

/boot:系統引導程序文件的目錄。

/etc:配置文件目錄。存放系統、用戶、服務的配置信息文件

文件路徑:描述文件位置的一種方法。如/etc/sysconfig就是一個文件路徑。

絕對路徑:路徑左側以/根開頭的路徑。

相對路徑:路徑左側不以/根開頭的路徑。

less more head tail

head /etc/passwd 默認的看頭10行
head -2 /etc/passwd 看頭兩行
tail /etc/passwd 看尾10行,默認顯示的是10行
tail -1 /etc/passwd 看尾1行
tail /var/log/messages
tail -30 /var/log/messages 看尾30行
tail -f /root/桌面/aa.txt //-f 動態查看文件尾部信息
tail f /root/桌面/aa.txt

文件管理主要做的事:查、增、刪、改
常用命令:
查:ls 查看文件名列表
pwd 顯示當前工作目錄的絕對路徑

  增:touch  文件名      功能:新建文件
      mkdir  -pv 目錄名      功能:新建目錄(即文件夾)
      例:mkdir  -pv   a/b/c/d    創建多級目錄(-p是創建父級目錄)

  改:移動:mv  -v  源文件   目標位置或新文件名
      複製:cp  -rv  源文件   目標位置或新文件名
      切換工作目錄(即打開文件夾):cd   路徑
            例:cd  /etc/sysconfig/network-scripts   進入指定路徑的目錄。
                cd  ..   切換到上一級目錄
                cd  /    切換到根目錄中
                cd   或  cd  ~   回家(切換到自己的家目錄中)

  刪:rm  -rfv   文件名或目錄名
      說明:-r 是遞歸操作,用於目錄
            -f 是強制操作,即不提示yes/no
            -v 顯示執行過程  

文件 touch
touch file1.txt //無則創建,有則修改時間
touch file2 file3
touch /home/file4.txt
touch /home/file5 file6
touch file{1..20}
touch file{a..c}
touch chen{a,b} //{}集合,等價touch chena chenb
touch a{1..5}{1,5}.txt

目錄 mkdir
mkdir dir1
mkdir /home/dir2 /home/dir3
mkdir /home/{dir4,dir5}
mkdir -v /home/{dir6,dir7}
mkdir -v /home/dir8/111/222
mkdir -pv /home/dir8/111/222 //包括其父母的創建,不會有任何消息輸出
mkdir -pv /home/{yang/{dir1,111},xiaochen}



文件管理之:文件類型  

文件類型有:目錄d、普通文件-、軟鏈接文件l、塊設備文件b、字符設備文件c、套接字文件s、管道文件p  

目錄d:即文件夾        

ls   -l    /          說明:ls  -l結果中的第1個字符是文件類型的標識符

普通文件-:即文本文件、圖片、音樂、視頻等都是普通文件。
軟鏈接(link)文件l(即快捷方式):
塊設備文件b(block):常見的塊設備有硬盤、分區、U盤
字符設備文件c(Charact ):常見的字符設備文件有tty終端設備文件
套接字文件s(socket):是指網絡進程設備文件。裏面存放網絡連接的端口號。
管道文件p(pipe):例:在根目錄及其子目錄中查找管道類型的文件  find  /  -type p 

文件管理的命令:查、增、改、刪

    查:ls、pwd
   查文件內容:cat、head、tail、more、less

    增:touch、mkdir

    改:cd、mv、cp

刪:rm -rf、rmdir

查看文件和目錄列表:ls 統計/bin目錄下一共有多少個文件:ls  /bin | wc -l
說明:wc  -l的功能是統計行數。  

               |  是管道符,作用是將第1個命令的結果傳給第2個命令繼續處理

查看系統的硬件信息
CPU信息:
     CPU信息:cat /proc/cpuinfo 或 lscpu

     內存信息:cat /proc/meminfo

     內存使用狀態:free

     硬盤空間使用狀態:df 或 df -hT

     硬盤分區信息:fdisk -l;fdisk -l /dev/sda

查看命令的幫助:命令 --help   如:查看ls命令的幫助信息:ls --help
                       man    如:查看ls命令的幫助信息:man ls   q鍵退出操作

vi/vim編輯器
vi、vim:是文本編輯,只能編輯一些純文本(無格式)的內容不能打開word文檔。

命令模式(按Esc或Ctrl+[進入):進入vim之後的默認模式,能執行移動光標、複製yy、粘貼p、刪除dd和x、撤消u、反撤消ctrl+r等命令
插入模式(按i、a、o鍵進入):用於輸入文本內容。
末行模式:以:冒號或/斜槓開頭的命令,可以實現保存w、退出q、強制保存退出wq!、設置set等命令
可視化/可視塊模式
//快速增加代碼註釋
1. 確保vim編輯器所在模式爲命令模式
2. 把光標停留在想註釋行的第一行的行首
3. 鍵入"ctrl+v"
4. 使方向鍵向下選中要註釋的所有行
5. 鍵入 "I"(大寫)
6. 輸入 "#"
7. 連續按兩下"Esc"
//快速取消被註釋的代碼塊
1. 確保vim編輯器所在模式爲命令模式
2. 把光標停留在想取消註釋行的第一行的行首
3. 鍵入"ctrl+v"
4. 使方向鍵向下選中要取消註釋的所有行
5. 鍵入 "d"

插入命令
i 在當前位置前插入(插隊insert)
I 在當前行首插入
a 在當前位置後插入(append追加)
A 在當前行尾插入
o 在當前行之後插入一行
O 在當前行之前插入一行

查找命令
/text  從上往下查找text,按n鍵查找下一個,按N鍵查找前一個。
?text  從下往上查找text,反向查找,按n鍵查找下一個,按N鍵查找前一個。
:set  nu      顯示行號
:set  nonu   不顯示行號
:set ignorecase  忽略大小寫的查找
:set noignorecase  不忽略大小寫的查找(默認設置)
:set hlsearch  設置查找高亮
:nohlsearch  取消查找高亮

替換命令
:s/old/new/ 將old替換new,替換當前行的第一個匹配
:s/old/new/g 用old替換new,替換當前行的所有匹配(全局global)
:%s/old/new/ 用old替換new,替換所有行的第一個匹配
:%s/old/new/g 用old替換new,替換整個文件的所有匹配
:10,20 s/^/    /g 在第10行至第20行每行前面加四個空格,用於縮進

撤銷和重做**
u 撤銷(Undo)
U 撤銷對整行的操作(整行的修改都會丟失)
Ctrl + r 重做(Redo),即撤銷的撤銷(反撤消)

刪除命令
x 刪除當前字符(等同於del鍵)
dd 刪除光標所在行的一整行
dG 刪除光標所在行之後的所有行(包含光標所在行)
:1,10d 刪除1-10行
:11,$d 刪除11行及以後所有的行
:1,$d 刪除所有行

移動命令 
G 快速切換到文件的最後一行的行首
gg 快速切換到文件的第一行的行首
home 快速切換到文件行的行首
end 快速切換到文件行的行尾

拷貝和粘貼
yy 複製光標所在行
nyy 複製光標所在行在內的n行內容
p 粘貼yy所複製的內容

退出命令
:6 光標定位到第6行
:q 正常退出 
:q! 強制退出
:w  保存
:wq 保存並退出=ZZ
:wq! 強制保存並退出
:x  保存並退出

用戶和組管理
1.用戶、組的賬號和密碼文件
用戶賬號文件:/etc/passwd
例:查看/etc/passwd的前2行內容。head   -2   /etc/passwd 
格式:root:x:0:0:root:/root:/bin/bash       注:用man  5  passwd看格式解釋
說明:1.每行一個用戶賬號;2.每行有七列(字段)信息,每列的意思如下
1- root:用戶名,用戶登錄的賬號名
2-  x:密碼位,是否需要密碼來登錄,x表示需要密碼,爲空則無需密碼登錄。
3-  0:UID,用戶號,類似於人的×××號
4- 0:GID,組號(羣號)
5- root:備註信息,可以爲空,通常寫對此用戶賬號的說明信息。
6-  /root:用戶的家目錄
7-  /bin/bash:用戶登錄的shell命令行解釋器,用cat  /etc/shells可查看所有的shehll,常見的shell有bash、sh、nologin等。nologin是不允許登錄。

用戶密碼文件:/etc/shadow      用passwd命令修改密碼會影響此文件內容
例:查看/etc/shadow的前2行內容。head   -2   /etc/shadow 
格式:root:$6$nSGIlk:17903:0:99999:7:::
bin:*:17834:0:99999:7:  :   :
       注:用man  5  shadow看格式解釋
說明:1.每行一個用戶賬號;2.每行有9列(字段)信息,每列的意思如下
1.用戶名:root
2.加密的密碼:$6$nSGIlk
3.最後一次修改密碼的日期17903:是從1970年1月1日開始的天數
4.密碼的最小年齡 0: 0爲隨時能改密碼,2爲2天后才能改密碼
5.密碼的最大有效期(天數) 99999
6.密碼警告時間段 7
7.密碼過期之後多少天之內還能用(寬限期):爲空則不限制
8.賬戶有效期(失效的年月日時間):爲空則不限制
9.保留:爲後期擴展功能而保留
例、將bin用戶的密碼最大有效期設置成3000天
passwd  bin  -x  3000 
passwd  -S  bin    查bin用戶的密碼狀態信息 

組賬號文件:/etc/group
例:查看/etc/group的前2行內容。head   -2   /etc/group 
格式:root:x:0:
      組名:組密碼位:GID組號:組成員
例:將bin用戶加入到root組中,再將bin從root組中刪除。
gpasswd root  -a  bin      (a是append追加),做完後用head  /etc/group查
gpasswd root  -d  bin      (d是delete追加)

組密碼文件:/etc/gshadow
例:查看/etc/gshadow的前2行內容。head   -2   /etc/gshadow 
格式:root:xxjks::
      組名:加密後的密碼:組管理員:組成員
例:將lp用戶設置成root組的管理員,然後查詢,再將lp用戶從root組管理員列表中清除。
head  -2  /etc/gshadow
gpasswd  root  -A lp

例:執行以下命令,體驗用戶的創建、管理過程
1、創建sky用戶:useradd sky
2、設置密碼:passwd sky
3、查用戶id號:id sky
4、臨時切換到sky用戶: su - sky
5、顯示當前工作路徑:pwd
6、退出登錄:exit
7、遞歸刪除用戶賬號及其家目錄和郵件:userdel -r sky

查看用戶id信息:id  [選項]  用戶名
查看用戶相關信息:who、whoami、w、last
創建用戶:useradd    [選項]  用戶名
切換用戶:su  [選項]  用戶名
刪除用戶:userdel  [選項]  用戶名
設置登錄密碼:passwd  [選項]  用戶名
修改用戶信息:usermod  [選項]  用戶

useradd命令
useradd   [選項]  用戶名
        實例
-h  即--help,顯示此命令的幫助信息  useradd  -h
-b  爲新用戶指定家目錄的主目錄   useradd  -D  -b  /home
-D  顯示或修改創建新用戶的默認配置 useradd  -D
-c  爲新建的用戶設置備註(context)信息   useradd  lily  -c "my girl friend"  
-d  給新用戶指定家目錄(directory)    useradd  sky  -d  /opt/sky   
-e  指定賬號的過期日期(有效期限) useradd  u1  -e  2018-10-01 
-f  新賬戶的密碼不活動期(即寬限天數)   useradd  u2  -f  20 
-u  用戶uid號  useradd  u3  -u  888
-U  創建與用戶同名的組   useradd  u4  -U
-g  主組,必須是已存在的組 選項  功能
-G  附屬組 useradd  u6  -G  root,adm,lp
-m  創建家目錄   useradd  u7  -m
-M  不創建家目錄  useradd  -M  u8
-N  不創建與用戶同名的組  useradd  -N  u9
-r  創建系統賬號  useradd  -r  u10
-s  指定用戶登錄的shell,常見的shell有bash、sh、nologin、false等。
用cat  /etc/shells可查。    useradd  -s  /sbin/nologin  u11
-o  --non-unique,允許使用不唯一的UID號   useradd  -o  -u  0  u12
-p  創建用戶時指定加密後的密碼。(此密碼無法登錄) useradd  -p  01  u13
-Z  指定selinux安全參數   
useradd創建用戶的其他實例
綜合實例:創建tom用戶,並設置uid爲800,gid爲0,附屬組GID爲1、2、3,設置備註爲“tomer”,設置家目錄爲/tmp/tom,設置shell爲nologin。查看passwd文件中包含tom關鍵字的內容。
useradd  tom  -u  800  -g  0  -G  1,2,3  -c  tomer  -d  /opt/tom  -s  /sbin/nologin 
grep  tom  /etc/passwd      查看/etc/passwd文件中包含tom關鍵字的內容

userdel命令
刪除用戶:userdel  [選項]  用戶名
   功能   實例
即--help,顯示此命令的幫助信息  userdel  -h
刪除用戶的家目錄和郵件 userdel  -r  u100
即--force,強制刪除用戶的文件  userdel  -f  u111
即--selinux-user,刪除用戶的selinux映射信息    

passwd命令
設置登錄密碼:passwd  [選項]  [用戶名]
說明:下面的實例的驗證方法:passwd  -S  用戶名
選項  功能  實例
-?  即--help,顯示此命令的幫助信息  passwd  -?
-S  顯示已命名帳號的密碼狀態(只有root能查)  passwd  -S  root
-k  保持(keep)身份驗證令牌不過期   passwd  -k  root
-d  刪除已命名帳號的密碼(只有root能做)    passwd  -d  u15
-l  即--lock,鎖定用戶賬號(只有root能做)    passwd  -l  adm
-u  即--unlock,解鎖用戶賬號(只有root能做)  passwd  -u  adm
-e  終止指定帳戶的密碼expire(只有root能做)   passwd  -e  adm
-f  即--force,強制執行操作(只有root能做)   
-x  即--maximum,密碼的最長有效時限(只有root能做)  passwd  -x  120  adm
-n  即--minimum,密碼的最短有效時限(只有root能做)  passwd  -n  60  adm
-w  即--warning,密碼過期前的警告時間(只有root能做) passwd  -w  12  adm
-i  即--inactive,密碼過期多少天后禁用賬號(只有root能做)  passwd   -i  3  adm
--stdin 從標準輸入讀取密碼令牌(只有root能做)   echo  01 | passwd  --stdin  adm
--usage 顯示此命令能使用方法(命令的幫助信息) passwd  --usage

usermod命令
修改用戶信息:usermod  [選項]  用戶名          注:usermod是user  modify用戶修改的縮寫
說明:下面實例的驗證方法:grep  用戶名  /etc/passwd  /etc/shadow  或 passwd  -S  用戶名
選項  功能  實例
-h  即--help,顯示此命令的幫助信息  usermod  -h
-c  即--comment,修改用戶的描述信息    usermod  root -c "admin user"
-d  修改用戶的家目錄。(新家目錄提前準備好)    usermod  u19  -md  /opt/u19 (搬家)
-e  即--expiredate,修改賬號過期的日期 usermod  adm  -e  2019-05-20
-f  即--inactive,修改密碼過期後的寬限時間    usermod  adm  -f   8
-g  修改用戶的gid值。  usermod  u19  -g  5
-G  給用戶設置新的附屬組  usermod  adm  -G  root,lp,bin
-a  將一個用戶追加到指定的組中   usermod  adm  -a   root
-l  修改用戶的登錄名稱(即修改用戶名)   usermod  u20  -l  u200
-L  鎖定用戶[鎖定後,shadow中的密碼左側有!號]   usermod  adm  -L
-U  解鎖用戶    usermod  adm  -U
-m  給用戶搬家。  
-o  允許使用不唯一的UID號    usermod  u19  -o  -u  0 
-p  修改加密後的密碼(不是登錄密碼)    usermod  adm  -p  01
-s  修改用戶登錄的shell    usermod  u19  -s  /sbin/nologin 
-u  修改用戶的uid值   usermod  u19  -u  999
-Z  修改用戶的selinux參數  

組管理
創建組:groupadd  [選項]  組名
刪除組:groupdel  [選項]  組名
修改組信息:groupmod  [選項]  組名
設置組成員(可設置組的管理密碼):gpasswd  [選項]  組名
查看用戶的組信息:groups  [選項]  用戶名  

groupadd命令
創建組:groupadd  [選項]  組名
選項  功能  實例
-h  即--help,顯示此命令的幫助信息  groupadd   -h
-g  創建組時指定組的gid號    groupadd  -g  520  g1
-o  允許創建不唯一的gid的組   groupadd  -o  -g  0  g2
-p  即--passwd,指定組管理員加密後的密碼  groupadd  -p  01  g3
-r  即--system,創建一個系統組,組號範圍是201~999  groupadd  -r  g4
-k  覆蓋/etc/login.defs中的默認值  
-f  即--force,如果指定的gid存在,也會強制創建組 groupadd  -f  -g  123  g5

groupdel命令
刪除組:groupdel  組名
實例:創建名稱爲g6的組,然後查看group文件中包含g6關鍵字的內容,刪除g6組。
groupadd  g6
grep  g6  /etc/group
groupdel  g6

groupmod命令
修改組信息:groupmod  [選項]  組名
選項  功能  實例
-h  即--help,顯示此命令的幫助信息  groupmod  -h
-g  修改組的gid號    groupmod  -g  300  g7
-n  即--new-name,修改組名    groupmod  -n  g70  g7
-o  允許使用不唯一的gid號(即允許用相同的組號) groupmod  -o  -g  0  g9
-p  即--password,修改組加密後的密碼   groupmod  -p  01  g9

gpasswd命令**
設置組成員:gpasswd  [選項]  組名
功能:設置組成員名單、且可以設置組的管理員密碼。
說明:下面實例驗證的方法:grep  組名  /etc/group  /etc/gshadow
選項  功能  實例
-a  即--add,在組中添加一個用戶    gpasswd  adm  -a  root
-d  即--delete,從組中刪除一個用戶 gpasswd  adm  -d  root
-r  即--remove-password,刪除組管理的密碼 gpasswd  -r  adm
-R  即--restrict,restrict access to GROUP to its members 
-M  即--members,重新設置組的成員列表   gpasswd  adm  -M  root,bin,lp
-A  即--administrators,給組重新設置多個組長(即組管理員) gpasswd  adm  -A   root

groups命令
查看用戶的組信息:groups  [選項]  用戶名  
實例:查看當前用戶的組信息,查看root、adm、games、lp用戶的組信息。
groups
groups  root  adm  games  lp

練習:某公司有sales、tech這兩個部門,sales部門有2位職員lucy、lily。tech部門有3位職員alice、jack、peter。要求在linux服務器上採用用戶和組來管理公司的這兩個部門和員工賬號。
mkdir  -v  /opt/sales   /opt/tech
groupadd   sales
groupadd   tech
useradd  -Db  /opt/sales
useradd  -D
useradd  lucy  -g  sales
useradd  lily  -g  sales
useradd  -Db  /opt/tech
useradd  -D
useradd  alice  -g  tech
useradd  jack  -g  tech
useradd  peter  -g  tech
echo  01 | passwd  --stdin  lucy
echo  01 | passwd  --stdin  lily
echo  01 | passwd  --stdin  alice
echo  01 | passwd  --stdin  jack
echo  01 | passwd  --stdin  peter

文件的UGO權限基礎(即普通權限)
Linux系統中一切都是文件,文件和目錄的所屬與權限——來分別規定所有者、所有組、其餘人的讀,寫,執行權限。
讀(read),寫(write),執行e(execute)簡寫即爲(r,w,x),亦可用數字(4,2,1)表示

chmod命令
      功能:修改權限的命令:chmod  [選項]  權限  文件名或目錄名
       常用選項:--help
                 -v    顯示執行過程
                 -R    遞歸修改目錄及其子目錄的所有文件權限
權限修改中的代號:
u   g   o   a   +   -   =
用戶  組   其他用戶    所有用戶    添加權限    減掉權限    設置新的權限

例:chmod  -v  u+rw   /b.txt       給文件的屬主(user)權限設置成rw可讀可寫
chmod  -v  g+r    /b.txt       給文件的屬組(group)權限設置成r可讀
chmod  -v  o+r    /b.txt       給文件的其他(other)用戶權限設置成r可讀
chmod  -v   a+x   /b.txt       給文件的所有(all)用戶設置x可執行權限
chmod  -v   u=rw,g=r,o=r   /b.txt   或chmod  -v  644   /b.txt   給文件的屬主、屬組、其他人重新授權
chmod  -v   a-r   /b.txt       給文件的所有用戶減掉r可讀的權限

chown命令
   功能:修改文件的擁有者(屬主)和擁有組(屬組):chown  [選項]   用戶名:組名     文件名
   常用選項:--help  
          -v    顯示操作過程
          -R    遞歸修改目錄及其子目錄的所有屬主、屬組。
   例:chown   -v   bin   /a.mp3       修改/a.mp3文件的屬主爲bin
       chown   -v    :adm   /a.mp3      修改/a.mp3文件的屬組爲adm
       chown   -v   root.root   /a.mp3   同時修改文件的屬主和屬root
       chown  -v  --reference=a.txt  b.txt 將a.txt的屬主和屬組特徵傳遞給b.txt。

umask命令
  文件權限的掩碼:umask  [權限]
  umask默認值:root用戶的是022,普通用戶的是002。
  umask的功能:會影響到用戶創建的新文件、目錄的最終權限。
   文件、目錄最終權限的算法:滿權限-umask權限=最終權限
滿權限 777 666 666
umask   022 022 031
計算過程

    777-022
rwx  rwx  rwx
---   -w-   -w- 666-022
rw-  rw-  rw-
---   -w-   -w- 666-031
rw-  rw-   rw-  滿權限
---   -wx   --x  要去掉的權umask限
權限結果    rwx  r-x   r-x
即755    rw-  r--   r--
即644    rw-   r--  rw-
即646

FACL文件訪問控制列表
        FACL:文件訪問控制列表file  access  control  list,控制文件和目錄訪問權限的一種方式,FACL的級別高於普通的UGO權限(即用chmod設置的權限)。
getfacl命令
      查看文件、目錄的FACL權限:getfacl    文件名
                                 getfacl  /a.txt

選項  功能  選項  功能
--help  顯示命令幫助  -k  刪除默認的ACL權限
-m  即modify,設置或修改ACL權限  -R  遞歸設置ACL權限(對目錄及其子文件)
-x  刪除指定用戶的文件的ACL權限 -d  即default,設置默認的ACL權限(僅用於目錄,目錄中新創建的文件會繼承ACL權限)
-b  刪除所有的ACL權限      

例:查a.txt文件的ACL權限    getfacl  a.txt
    在a.txt文件上添加adm用戶的ACL權限  setfacl  -m  u:adm:rw-   a.txt
    在a.txt文件上添加bin組的ACL權限   setfacl  -m  g:bin:rw-   a.txt
    查a.txt文件的ACL權限  getfacl  a.txt
    強制刪除a.txt文件 rm  -f   a.txt
setfacl  -m  d:g:group:r--  test/       d表示default默認的ACL權限
在/pas.txt文件中刪除u1用戶的acl權限  setfacl  -x  u:u1   /pas.txt
清空/pas.txt文件中的所有ACL權限  setfacl  -b  /pas.txt

文件的特殊權限(三種S權限):有SUID(u+s)、SGID(g+s)、Sticky  bit(o+t)這三種。
SUID權限:
功能:讓命令的執行者臨時擁有命令的屬主(root)權限(僅對有可執行權限的二進制程序[即命令]有效)
設置suid權限的方法:chmod  u+s  文件名
SGID權限:
功能:在該目錄中創建的文件自動繼承此目錄的組屬性(只可以對目錄設置),通常用於做文件共享時對某個目錄設置g+s權限
設置SGID權限:chmod  g+s   目錄名
SBIT(Sticky Bit)權限:
功能:只允許root和文件的屬主刪除目錄中的文件(僅對目錄有效,通常用於做文件共享的目錄)
添加t權限的方法:chmod  o+t   目錄

chmod命令用於修改文件或目錄的權限,格式爲:”chmod  [參數]  權限  文件或目錄名稱”。
chown命令用於修改文件或目錄的所屬主與所屬組,格式爲:“chown [參數]  所屬主:所屬組  文件或目錄名稱”

文件的隱藏屬性attribute (文件系統權限)
chattr命令
chattr命令用於設置文件的隱藏屬性(特殊屬性),格式爲:“chattr  [選項]  文件”。
+/-i    將無法對文件內容進行修改,若對目錄設置後則僅能修改子文件而不能新建或刪除。
+/-a    僅允許補充(追加)內容.無法覆蓋/刪除(Append Only)。通常用於日誌文件。

lsattr命令
lsattr命令用於顯示文件的隱藏權限,格式爲:“lsattr  文件”

計劃任務服務(at、crontab)
計劃任務是特定的時間做特定的任務
操作內容:計劃任務的查詢(atq、at  -c  序號)、新增(at  時間)、刪除atrm 序號
at的time時間表示方式如下
HH:MM YYYY-MM-DD或者:
HH[pm:am]+number[min;hours;days;week]
HH:MM
HH[pm;vam ] 
進入at模式以後輸入指令
ctrl+d可以退出
例: at now +5minutes/hours/days/weeks/  任務在5分鐘後運行
    Fixed: at midnight      任務在午夜運行
    Fixed: at 10:30pm       任務在晚上10點30分開始 
    Fixed: at 1:00 12/20/2004   任務在2004年12月20日凌晨1點開始
    Fixed: at 1:00 2017-05-03   任務在2017年05月03日凌晨1點開始
一般用at命令創建計劃任務有交互式與非交互式兩種方法
at  now  +2min
at >wall  “welcome  to  my  server”
at >按Ctrl+D退出
直接用echo語句將要執行的命令傳送給at命令:
      echo "systemctl start httpd" | at 23:30
      job 4 at Mon Apr 27 23:30:00 2015

非交互方式創建計劃任務
1、先將要執行的命令用vi或vim寫到一個文件中。
   vi  /plan1.txt   文件內容如下
   wall  hello
   wall  ni  hao
   date  >> /tmp/pa.txt
   head  -6  /etc/passwd  >> /tmp/pa.txt
   cat  -n /tmp/pa.txt >> /tmp/pa.txt
2、創建計劃任務時指定任務命令的文件(-f是file的縮寫)。
   at  now  +3  min  -f  /plan1.txt
   atq
   at  -c  任務號      查詢此任務號的具體計劃內容
3、等待3分鐘後驗證計劃任務執行的結果:
   cat   /tmp/pa.txt
at計劃任務的黑白名單管理:
功能:控制讓某些用戶能使用(白名單/etc/at.allow)、或不能使用(黑名單/etc/at.deny)at計劃任務功能。
警告:當有at.allow白名單文件時,其他的的用戶全部都是黑戶(不能用At命令),只有at.allow文件中的用戶能用at命令。白名單的優先級高於黑名單。
白名單的優先級高於黑名單:即當at.allow白名單和at.deny黑名單文件同時存在時,那麼只有白名單中的用戶才能使用at命令定製計劃任務。
編輯at.deny黑名單文件
將tom用戶設置成黑戶     vi  /etc/at.deny   添加如下內容tom
將jack用戶設置成白戶    vi  /etc/at.allow   添加如下內容jack

crontab週期性計劃任務:
    功能:按指定的時間規律會重複執行某些命令。
        創建、編輯、刪除某個計劃任務:crontab  -e  [-u 用戶名]
        查看計劃任務:crontab  -l [-u 用戶名]
        刪除所有的計劃任務:crontab  -r [-u 用戶名]

crontab  -e   添加如下計劃任務內容
*/2  *   *    *   *    wall  ni  hao
*/5  *   *    *   *    head  -3  /etc/passwd  >>  /tmp/pb.txt
分  時  日   月  周    任務的命令(可以是一個腳本文件)
查看計劃任務詳細任務cat  /etc/crontab
*/2表示60/2=30次。*表示每時每刻

tar打包命令:
   功能:進行文件的打包壓縮、解包解壓縮。
   打包壓縮:tar  -czvf   文件名.tar.gz   要打包的文件名列表
   解包解壓縮:tar  -xzvf   文件名.tar.gz  -C  目標位置 
   選項解釋:-c  創建(create)打包文件
-z  調用gzip程序進行壓縮
-v  顯示執行過程(verbose)
-f  是file,即指定打包後的文件名
-C  是change,即指定文件解壓到的目標目錄,必須是已存在的目錄
-x  是extract,即解包
-t  是list,即顯示tar包中的文件名列表
date命令:
   用法:date   [選項]   [+格式 ]
   功能:查看、修改系統時間。查看時間可以指定時間的顯示格式。
   選項:-s  修改系統時間。如date  -s  '20190214 14:30'
   格式代號:+%F  以2019-01-10(YYYY-MM-DD)格式來顯示時間,等價於 %Y-%m-%d
%Y    年份
%m   month (01..12)
%d    按月計的日期(例如:01)
%H    小時(00-23)
%I     小時(00-12)
%M   minute (00..59)
顯示日期和時間
date  +%F     ;date  +%Y-%m-%d 
date  +%F_%H:%M   ;date  +%Y-%m-%d_%H:%M
用不同的時間格式爲名稱創建文件。
touch  `date  +%F`.txt    創建名稱爲“年-月-日.txt”的文件
touch  $(date  +%F) .txt  (同上)說明:`命令`和$(命令)被稱作“命令替換”或“命令置換”功能
touch  `date  +%Y-%m-%d_%H:%M`.jpg    創建名稱爲“年-月-日_小時:分.jpg”的文件

  rpm:是紅帽軟件包管理(Redhat  Package  manage)的縮寫
  rpm軟件包:可以在Linux系統光盤的Packages目錄中找,也可以在網上下載*.rpm格式的文件。
  rpm測試環境說明:是將光盤掛載到了/dvd目錄
 rpm軟件包名稱規則:vsftpd-2.2.2-11.el7.x86_64.rpm  軟件名—主版本號.次版本號.修訂號.系統版本.硬件平臺.rpm
rpm命令的選項:
    -i  即install安裝
-v  即verbose顯示執行過程
-h  以#號方式顯示安裝進度條
-U  升級安裝軟件
--nodeps   不檢查依賴關係
-qi  查軟件的信息。例:rpm  -qi  at  -q  查軟件是否已安裝
-l   即list查軟件安裝後的所有文件列表
-c   即config,查軟件的配置文件列表
-e   即erase,卸載軟件
-f   查文件所在的軟件包。例:rpm  -qf  /bin/cat
-qa  查系統中已安裝的所有rpm格式的軟件
依賴關係:安裝某個軟件前,必須先安裝另一個軟件,否則軟件安裝不了。

yum軟件管理器
  yum是管理rpm軟件包(Yellowdog Updater Modified)
  yum的工作原理:執行yum命令――>讀取/etc/yum.repos.d/*.repo的yum源配置文件中的baseurl路徑――>查找可用yum倉庫的rpm軟件包――>安裝一個或多個rpm格式的軟件包。
  本地yum源:是指yum源配置文件*.repo中的baseurl倉庫路徑是在本機上。即rpm包是在本機上的目錄中。
  網絡yum源:是指yum源配置文件*.repo中的baseurl倉庫路徑是在文件共享服務器上(ftp、nfs、http等)。
   yum源文件*.repo的路徑:/etc/yum.repos.d

編輯/etc/rc.d/rc.local文件
掛載/dev/cdrom光盤到/dvd目錄
臨時關閉firewalld防火牆
查firewalld防火牆的當前狀態
將Selinux設置爲寬容(permissive)模式
查詢selinux的當前狀態
測試腳本的運行 vim  /etc/rc.d/rc.local    在文件最後添加如下內容
mount  /dev/cdrom   /dvd
systemctl  stop  firewalld
systemctl  status  firewalld
setenforce  0
getenforce
.  /etc/rc.local

任務:創建/soft目錄,將/dvd/Packages目錄中的 *ftp* 複製到 /soft目錄中,在/soft目錄中生成yum的數據庫文件repodata,創建yum源文件/etc/yum.repos.d/ftp-soft.repo,ftp-soft.repo文件中的baseurl路徑指向/soft目錄。

功能  命令
創建/soft目錄
複製指定的文件
生成yum數據庫文件
創建ftp-soft.repo配置文件 mkdir  -v  /soft
cp  -v  /dvd/Packages/*ftp*   /soft
createrepo   /soft    注:如果沒有createrepo命令,請先安裝createrepo軟件
vim  /etc/yum.repos.d/ftp-soft.repo    配置文件內容如下
源標識(即倉庫標識)
源名稱(即倉庫名稱)
倉庫路徑
啓用此倉庫
禁用gpgcheck驗證功能  [ftp-soft]
name=ftp-soft haha
baseurl=file:///soft
enabled=1
gpgcheck=0
清除yum緩存文件
查詢yum倉庫列表信息 yum  clean  all
yum  repolist
結果分析    發現ftp-soft倉庫中的“狀態”值是6,即6個rpm軟件包

熟悉yum的所有命令。
命令  作用
yum  clean  all 清除所有倉庫緩存
yum  repolist all   列出所有yum源和倉庫信息。
yum list all    列出倉庫中所有軟件包。list中帶有@的軟件包是已經安裝了的。例:yum  list  |grep  @
yum info 軟件包名稱  查看軟件包信息。例如:yum  info  vsftpd  ftp  dhcp
yum install 軟件包名稱   安裝軟件包。例如:yum  install  -y  vsftpd  ftp  mysql-server  mysql 
cetnos 7的案例:yum  install   -y   vsftpd  ftp  mariadb-server   mariadb
yum reinstall 軟件包名稱 重新安裝軟件包
yum update 軟件包名稱    升級軟件包
yum remove 軟件包  移除軟件包。例如:yum  remove  -y  vsftpd  ftp  mysql-server  mysql
cetnos 7的案例:yum  remove   -y   vsftpd  ftp  mariadb-server   mariadb
yum  check-update   檢查可更新的軟件包
yum  grouplist  分組查看rpm軟件包的信息
yum  groupinstall  軟件包組 安裝指定的軟件包組
yum  groupremove  軟件包組  移除指定的軟件包組
yum  groupinfo  軟件包組    查詢指定的軟件包組信息。例如:yum  groupinfo  虛擬化主機  開發工具
yum  search  軟件名    查詢指定名稱的軟件包。例如:yum  search  mariadb-server  vsftpd
yum  provides   文件路徑    查詢指定文件所在的軟件包。例如:yum  provides  /bin/ls   /bin/cat
yum  history    查詢yum的安裝操作記錄
yum  history  redo  N   重新執行yum安裝歷史中的編號爲N個操作。N爲數字

yum  history  undo  N   重新執行yum安裝歷史中的編號爲N個操作的回滾操作(安裝的反操作爲卸載)。N爲數字
下載軟件包到指定的目錄 yum install --downloadonly --downloaddir=/soft  <package-name>
例1:yum install --downloadonly --downloaddir=/soft/nginx   nginx
例2:yum install --downloadonly --downloaddir=/soft/zabbix   zabbix

yum的history功能:
查yum歷史:yum  history
(回退)撤消yum中的2號歷史操作:yum  history  undo  2
(前進)重做yum中的2號歷史操作:yum  history  redo  2
rpm和yum的小結:
1、rpm是什麼?rpm對軟件包的查(rpm  -qlc)、增(rpm  -ivh)、刪(rpm  -evh)、改(升級安裝rpm  -Uvh)
2、yum是什麼?yum管理的是rpm軟件包。yum源配置文件dvd.repo的內容代碼。用yum對rpm軟件包進行如下操作
清緩存:yum  clean  all
查:yum  repolist  、  yum  list  、  yum  grouplist   、  yum  info  、  yum  history
增(安裝):yum  install   、  yum   reinstall  、  yum   groupinstall
刪(卸載): yum  remove
改(升級update): yum   update

源碼包的編譯安裝流程:
1、安裝gcc、gcc-c++編譯器
2、下載軟件的源碼包、解包解壓縮
3、生成安裝配置文件: ./configuration   [選項]
4、根據配置文件編譯源碼文件:make
5、安裝:make  install
nginx源碼包的安裝實例:
1、安裝gcc、gcc-c++編譯器:yum  install  -y  gcc  gcc-c++   wget  curl
2、用wget下載nginx軟件的源碼包、解包解壓縮:http://nginx.org
wget  http://nginx.org/download/nginx-1.15.8.tar.gz
ls
tar  -xvf   nginx-1.15.8.tar.gz
3、生成安裝配置文件Makefile:
cd  nginx-1.15.8
yum  install  -y  pcre-devel  openssl-devel
./configure
4、根據Makefile配置文件編譯源碼文件:make
5、安裝:make  install
6、創建nginx命令的快捷方式:ln  -s  /usr/local/nginx/sbin/nginx   /bin/nginx
7、啓動nginx服務:
nginx  -h     查nginx命令的幫助 
nginx  -t     檢測nginx配置文件語法
nginx         啓動nginx服務
nginx  -s  reload   重啓nginx服務
nginx  -s  stop     停止nginx服務

8、訪問nginx的默認網站:curl   192.168.11.11
瀏覽器訪問nginx的默認網站:http://192.168.11.11

打包壓縮文件命令
打包tar:將多個文件包裝(也稱封裝)成一個文件。打包後的文件容量不發生變化。
壓縮zip:將多個文件包裝(也稱封裝)並壓縮成一個文件。壓縮後的文件容量會變小。
    打包並壓縮文件:“tar  -czvf  壓縮包名.tar.gz   文件名”
解壓並展開壓縮包:“tar -xzvf  壓縮包名.tar.gz”
選項  作用
-c  創建tar包文件。create
-x  解開tar包文件。extract
-t  查看tar包內有那些文件
-z  調用Gzip壓縮或解壓
-j  調用bzip2壓縮或解壓
-v  顯示壓縮或解壓的過程
-f  目標文件名(即tar包文件名)
-r  在tar包中追加新的文件
-p  即--preserve-permissions,保留原始的權限與屬性
-P  即Path,使用絕對路徑來壓縮
-C  即change,指定解壓到的目錄(警告,-C後面的目錄必須已存在)
-delete 刪除包中的某個文件
-A  將某個文件增加到包中
打包壓縮命令:tar  -czvf  conf.tar.gz   /etc/*.conf
解包解壓縮命令:tar  -xzvf  conf.tar.gz   -C  /tmp/

zip壓縮和解壓:
壓縮:zip   文件名.zip  -r   要壓縮的文件或目錄
解壓縮:unzip  文件名.zip    -d    目標目錄
zip壓縮:zip  conf.zip  /etc/*.conf
unzip壓縮:unzip  conf.zip  -d  /tmp/

文件和磁盤容量統計:
查某個文件(不是目錄)的大小:ls  -lh  文件名
注:-h  是human人性化顯示容量單位(k、M、G、T)。
例:查/etc/*.conf文件的大小。
ls  -lh  /etc/*.conf
選項  功能
-h  即human,以易讀的方式顯示文件的容量,即帶上k、M、G、T等單位。例如:du  -hs  /root/jy
-s  即sum,統計佔用的總容量。例如:du  -hs  /etc

df顯示磁盤容量狀態:
用法:df   [選項-hT]   參數
說明:df是disk  free磁盤空閒的縮寫。常用選項如下:
-h  即human,以易讀的方式顯示文件的容量,即帶上k、M、G、T等單位。
-T  即Type類型,顯示文件系統類型,類型有ext3、ext4、xfs、iso9660、vfat、NTFS、nfs、smb等。

文件查詢搜索命令
whatis    which    whereis     locate    updatedb     grep   find(功能最強大)

grep命令用於查看某個文件中包含關鍵字的整行內容,格式爲:“grep  [選項]   關鍵字  [文件]”。
搜索某個關鍵詞:“grep 關鍵詞 文本文件” 
例:顯示/etc/passwd文件中包含root關鍵字的內容:grep  root   /etc/passwd
選項  作用
特殊代號    ^ 定位開頭。例:顯示/etc/passwd文件中以root開頭的內容:grep  ^root   /etc/passwd
$ 定位結尾。例:顯示/etc/passwd文件中以bash結尾的內容。grep  bash$   /etc/passwd
^$  表示空白行。例:顯示/etc/yum.conf文件中的空白行內容,並附上行號。grep  -n  ^$  /etc/yum.conf
-b  將可執行文件(binary)當作文本文件(text)來搜索
-c  僅顯示找到的次數(行數)。例:grep  -c  root  /etc/passwd
-i  忽略大小寫。例:grep  -i  RooT  /etc/passwd
-n  顯示行號。例如:grep  -n  root  /etc/passwd   顯示passwd文件中包含root關鍵字的內容並顯示行號
-v  反向選擇——僅列出沒有“關鍵詞”的行。(特殊關鍵字:  ^$ 表示空白行)。例:grep  -v   127  /etc/hosts
-w  完全匹配(精確匹配)。例:grep  -w   bin   /etc/passwd
-E  啓用基本正則(extended-regexp)表達式功能。即使用 |   .  ?   []等正則表達式的特殊符號。
例:grep -E  'root|adm|lp' /etc/passwd   顯示passwd文件中包含root或adm或lp關鍵字的內容。
--color=auto    以彩色方式顯示“關鍵字”。(centos 7中默認開啓了此功能,因爲系統中用alias給grep命令設置了別名“即快捷鍵”)
-B  數字  是before,打印以文本起始的NUM 行。grep  root  -B  2  /etc/passwd
-A  數字  是after,打印以文本結尾的NUM 行。grep  root  -A  3  /etc/passwd
-c  是count計數,打印輸出文本NUM 行。grep  root  -c  /etc/passwd

alias命令別名:
alias查看命令別名,或給命令臨時設置別名(即快捷鍵),命令格式:alias  別名=“命令”
alias    查看所有的命令別名
alias  rt='rm  -rf  /tmp/* ; ls  /tmp/ '    定義命令別名(即快捷鍵)
rt     使用rt命令別名
unalias   rt     刪除rlt這個命令別名

設置永久的別名:vi  /etc/bashrc  在文件最後添加如下內容,然後保存並退出。
alias  rt='rm  -rf  /tmp/*;ls  /tmp/'
然後exit退出登錄,再重新登錄,此命令別名就會生效(用alias命令查看)。 

stat查看文件的狀態信息:
例:stat  /etc/hosts
文件的三個時間:
名詞  功能  解釋
atime   訪問時間access time 是指用ls、cat、head等命令訪問過文件的時間
mtime   更改時間modifye  time   是指用vim、>覆蓋、>>追加等方式修改過文件內容的時間
ctime   改動時間change  time    是指用chown、chmod命令改動過文件權限的時間

find命令
find命令用於查找文件,格式爲:“find  [查找路徑]  尋找條件  操作”。
win7系統的文件查找界面:Win+F3
查找條件    作用
-name   匹配名稱。例1:find  /etc  -name  host*      例2:find  /dev  -name  std*
-perm   匹配權限(mode爲完全匹配,-mode爲包含即可)。例1:find  /  -perm   000
-user   匹配所有者。例:useradd   sky  ;  find   /  -user   sky
-group  匹配所有組。例:find   /  -group   sky
-mtime -n +n    匹配修改內容(modify)的時間(-n指n天以內,+n指n天以前)
例:在根目錄下查找mtime爲3天以前的文件:  find  /   -mtime  +3
例:在根目錄下查找mtime爲3天以內的文件:  find  /   -mtime  -3
-atime -n +n    匹配訪問(access)文件的時間-n指n天以內,+n指n天以前
-ctime -n +n    匹配修改權限(change)的時間-n指n天以內,+n指n天以前
-nouser 匹配無所有者的文件  [這種情況通常是文件屬主的用戶名被刪除了,只剩下uid]
-nogroup    匹配無所有組的文件  [這種情況通常是文件屬組的賬號被刪除了,只剩下gid]
-newer f1 !f2   匹配比文件f1新卻比f2舊的文件
-type b/d/c/p/l/f   匹配文件類型(b塊設備、d目錄、c字符設備、p管道、l鏈接文件、f普通文件)
例1:find  /dev  -type  b   例2:find  /dev  -type  c  例3:find  /dev  -type  p  
-size   匹配文件的大小(+50k查找超過50k的文件,而-50k則代表查找小於50k的文件)
例:在/boot目錄下查找大小爲大於6M的文件:find  /boot   -size  +6M
-prune  忽略某個目錄
-exec  操作 {} \; 自動對找到的文件執行“某個操作”,如ls、cp、rm  -rfv等。例:在/etc目錄中查找以.conf文件結尾的所有文件,並複製到/tmp/目錄中。
find   /etc  -name  *.conf  -exec  cp  -rv  {}  /tmp/   \;     大括號{}表示用find找到的所有文件
-ok  操作  {} \;  手動交互(手動yes確認)對找到的文件執行“某個操作”,如ls、cp等。
例:find   /etc  -name  *.conf  -ok  cp  -v  {}  /tmp/   \;  

日誌文件:
  日誌文件的功能:
將系統中發生的事情,按照發生時間的先後順序,分門別類的記載到不同的文件中稱爲記錄日誌,文件就是日誌文件。
日誌文件通常會記錄的信息:  什麼時候?什麼主機(IP或主機名)?什麼人(用戶)?做了什麼事(執行的命令或進程)?
查看secure安全日誌文件的最後10行內容:tail   /var/log/secure
日誌軟件名:rsyslog   查:rpm  -q  rsyslog
        日誌軟件配置文件:rsyslog.conf   查:rpm  -qc  rsyslog
    查日誌軟件的所有文件列表:rpm  -ql  rsyslog
    重啓rsyslog服務:systemctl  restart  rsyslog

日誌的種類
1、系統自帶的應用日誌:/var/log/messages、/var/log/secure等
2、文件系統日誌:ext2、 ext3、ext4、xfs
3、應用程序自帶日誌:crontabs、ssh、dhcp、vsftpd、http、mysql等服務都有相應的日誌
系統日誌文件默認位置:/var/log目錄
大部分Linux發行版默認的日誌守護進程爲 rsyslog,位於 /etc/rsyslog 或 /etc/rsyslogd,默認配置文件爲 /etc/rsyslog.conf,任何希望生成日誌的程序都可以向 rsyslog 發送信息。 

常見日誌文件名:/var/log目錄中的所有文件
日誌文件    作用
/var/log/messages   該日誌文件是許多進程日誌文件的彙總
/var/log/cron   計劃任務日誌
/var/log/boot.log   系統啓動日誌
/var/log/dmesg  開機內核自檢信息,主要是硬件驅動加載的信息,用dmesg查看內容
/var/log/wtmp   永久記錄所有用戶的登錄、註銷信息,  用last查看
/var/log/btmp   記錄錯誤登錄的日誌。是二進制文件,要用lastb命令查看
/var/log/utmp   記錄當前已登錄的用戶信息,是二進制文件。用w、who、users查看
/var/log/maillog    郵件日誌
/var/log/secure 安全日誌。記錄授權和驗證信息。記錄創建和刪除用戶、su切換用戶、本地登錄、ssh遠程登錄、sudo等操作的信息。
/var/log/lastlog    記錄系統中所有用戶最後一次的登錄時間。是二進制文件。用lastlog命令查看。
/var/log/cups   打印日誌
/var/log/http目錄 Apache HTTP 服務日誌。
/var/log/samb目錄 samba 軟件日誌

日誌的類型?

日誌類型    作用
authpriv    只能被特定用戶查看
cron    系統定期執行計劃任務時產生的日誌
mail    郵件日誌
ntp 網絡時間協議(ntp)產生的消息
local0~local7   日誌優先級

日誌的8個等級?
    優先級 說明
0   emerg   緊急情況,系統不可用(例如系統崩潰),一般會通知所有用戶。
1   alert   報警信息。需要立即修復,例如系統數據庫損壞。
2   crit    危險情況,例如硬盤錯誤,可能會阻礙程序的部分功能。
3   err 一般錯誤消息。
4   warning 警告。
5   notice  提示、提醒信息。不是錯誤,但是可能需要處理。
6   info    通用性消息,一般用來提供有用信息。
7   debug   調試程序產生的信息。

查詢rsyslog軟件的信息:
查詢rsyslog軟件是否已安裝:rpm  -q  rsyslog
查rsyslog軟件的所有文件列表:rpm  -ql  rsyslog
查rsyslog軟件的配置文件:rpm  -qc  rsyslog

日誌轉儲logrotate

日誌輪替(交替、輪滾):logrotate
    日誌軟件名:logrotate   查:rpm  -q  logrotate
    主配置文件:logrotate.conf    查:rpm  -qc  logrotate
    自定義日誌輪滾策略文件:/etc/logrotate.d/*
    查日誌軟件的所有文件列表:rpm  -ql  logrotate
    測試日誌輪滾策略:logrotate  -vf  /etc/logrotate.conf
日誌輪替的作用:防止單個日誌文件過大,定期自動清除舊日誌
例:
在/var/log目錄中創建lol文件
創建lolk日誌切割策略文件  touch  /var/log/lol 
vi  /etc/logrotate.d/lolk   切割策略如下
日誌文件的路徑  {策略
lol文件不存在也不報錯
每天切割1次
創建新日誌文件
最多生成3個備份文件
不啓用壓縮功能
    /var/log/lol {
  missingok
  daily
  create
  rotate  3
  #compress
}
測試lolk切割策略(強制執行切割測試):logrotate  -vf  /etc/logrotate.d/lolk
 ls  -l  /var/log/lol*

光盤的掛載和rpm軟件的安裝
手動掛載:將Linux系統光盤鏡像文件讀到/dvd目錄中(即掛載)
創建/dvd目錄:mkdir   -pv  /dvd
臨時手動掛載:mount  -v  /dev/cdrom  /dvd
查看/dvd目錄的文件列表:ls  /dvd
命令格式說明:mount   設備   掛載點目錄
-v是顯示執行過程
什麼是掛載:就是將一個設備的內容讀到一個目錄中。
卸載光驅設備(類似於u盤的安全彈出):umount   /dev/cdrom   或  umount   /dvd

自動掛載的實現:
在系統的/etc/fstab文件系統表配置文件中添加光盤等設備的自動掛載設置。
1、編輯/etc/fstab文件:vi   /etc/fstab    在文件最後添加如下內容
/dev/cdrom  /dvd             iso9660       defaults       0         0
設備     掛載點目錄    文件系統格式    掛載選項    是否dump備份     是否fsck磁盤掃描
2、手動測試自動掛載:mount   -av
-a   即all,是掛載/etc/fstab文件中的所有設備。
3、查看已掛載的所有設備:mount

磁盤管理
 新硬盤的管理流程:分區fdisk或parted--〉格式化mkfs--〉手動掛載mount(或fstab自動掛載)
硬盤分區(disk partition):
GPT分區管理:parted命令
GPT:是GUID(Globally Unique Identifier) Partition Table全局唯一標識分區表的縮寫。GPT分區表中只有主分區這個管理概念。允許創建128個主分區。GPT分區表可以用來管理總容量大於2TB以上的硬盤。硬盤的UUID號可用blkid命令來查。
例:將2GB的硬盤sdb用GPT分區表進行管理,要求給sdb硬盤創建2個主分區,第1個主分區容量是1.5G,另一個主分區的容量使用所有剩餘空間。
查塊設備列表(list  block):lsblk
定義分區表標籤(即格式):parted  -s  /dev/sdb   mklabel  gpt
創建第1個1.5G的主分區:parted  -s  /dev/sdb   mkpart  primary  1M   1.5G
創建第2個主分區(使用所有剩餘空間-1):parted  -s  /dev/sdb   mkpart  primary  '1.5G   -1'
查看sdb硬盤的分區表信息:lsblk   或  fdisk  -l  /dev/sdb
parted命令的附加功能:
顯示(print)sdb硬盤的分區表:parted  /dev/sdb  p
刪除(remove)sdb硬盤的2號分區:parted  -s /dev/sdb  rm  2

mount掛載:將分區的文件系統內容讀取到一個目錄中。訪問這個掛載點目錄就等同於訪問這個分區文件系統中的文件

例:查分區:lsblk
格式化1號分區:mkfs.ext4  /dev/sdb1   或 mkfs  -t  ext4  /dev/sdb1
格式化2號分區:mkfs.xfs  /dev/sdb2    或 mkfs  -t  xfs  /dev/sdb1
創建掛載點目錄:mkdir  -pv  /mnt/sdb{1,2}  或 mkdir  -pv  /mnt/sdb1  /mnt/sdb2
手動掛載:mount  /dev/sdb1   /mnt/sdb1  ;  mount  /dev/sdb2  /mnt/sdb2
查掛載信息:lsblk   或  df  -hT   或  mount
寫入數據:touch  /mnt/sdb1/{a.txt,b.mp3}  ; cp  -v  /etc/host*   /mnt/sdb2
遞歸(-R)顯示/mnt目錄中的文件名列表:ls  -R  /mnt

fdisk分區命令:鍵盤操作分區
功能:對硬盤進行分區的查、增、刪、改等操作。
用法:fdisk  [選項]  磁盤設備
選項:-l  顯示分區表信息
例:用lsblk顯示磁盤塊設備,用fdisk命令顯示sdb硬盤的分區表信息。
lsblk
fdisk  -l  /dev/sdb

刪除sdb硬盤的分區表:parted  -s  /dev/sdb  mklabel  msdos
顯示塊設備列表:lsblk
fdisk的常用快捷鍵:
    m:顯示命令幫助
    p 顯示分區表信息(print)
    n 新建一個分區(new)
    d 刪除一個分區(delete)
    w 保存並退出(write)
    q 不保存退出(quit)
    l 顯示(list)分區的文件系統類型標籤代號
    t 修改分區的文件系統類型(type)標籤
    a 激活(active),即給分區添加bootable允許引導的標記(通常用於boot引導程序的分區)

MBR分區表管理:
MBR:是主引導記錄(main  boot record)的縮寫。
MBR:是保存在硬盤的0磁道0柱面1扇區的位置,佔用512字節(因爲1個扇區默認的大小是512字節)。其中bootloader引導程序佔用446字節,DPT(disk partition table)分區表佔用64字節,magic佔用2字節。
MBR的分區表特點:
0.只能管理總容量在2TB以內的硬盤。
1.最多隻允許分4個主分區,因爲DPT分區表總容量是64字節,每個分區佔用16字節,即64/16=4。
2.如果想分的個以上的分區,可採用分一個主分區(primary)和一個擴展分區(extend),然後在擴展分區中創建邏輯(logical)分區來實現。
3.主分區的編號爲1~4,第1個邏輯分區的編號默認爲5。
4.只能在主分區和邏輯分區上格式化創建文件系統。並且只能在主分區和邏輯分區上寫入文件。
硬盤分5個分區的方案(用MBR分區表):
方案一、1個主分區,1個擴展分區,4個邏輯分區。
方案二、3個主分區,1個擴展分區,2個邏輯分區。
查分區表信息:lsblk
卸載分區的文件系統:umount   /mnt/sdb1   /mnt/sdb2
刪除分區表(修改分區表格式標籤即可):parted  -s  /dev/sdb  mklabel  msdos
查分區表信息:lsblk

MBR分區創建:
查分區表信息:lsblk
cfdisk管理分區:cfdisk  /dev/sdb 
cfdisk快捷鍵:n是new新建    p是primary主分區    l是logical邏輯分區    
              W(大寫)是wite保存(寫入)           q是quit退出
創建主分區:n新建==>p主分區==>1.2G回車==>beginning回車==>W(大寫)保存==>yes回車
創建邏輯分區1:選free空閒空間==> n新建==>l邏輯分區==>600M回車==>beginning回車
創建邏輯分區2:選free空閒空間==> n新建==>l邏輯分區==>600M回車==>beginning回車==>W保存==>yes回車==>q鍵退出

fstab自動掛載:fstab自動掛載配置文件:fstab是file  system  table文件系統表的縮寫。是用來記錄磁盤分區設備自動掛載信息的配置文件。系統啓動時會讀取/etc/fstab文件中的掛載配置信息,並自動掛載裏面的設備。
例:
依次卸載sdd1、sdd2分區
查看硬盤空間使用狀態
依次查看2個目錄的文件列表
編輯fstab自動掛載配置文件 umount   /dev/sdd1    /dev/sdd2
df  -hT
ls   /d1   /d2
vi   /etc/fstab     添加下行的內容
sdd1的掛載設置
sdd2的掛載設置   /dev/sdd1   /d1   ext4    defaults,noexec   0        0
/dev/sdd2   /d2   ext4    defaults         0        0
fstab文件功能說明 設備     掛載點  類型       選項           dump備份    是否fsck
自動掛載測試
查看  用mount  -av做。  
lsblk   或   df  -hT

mount手動掛載的缺點:當系統重啓後,用戶必須重新手動將分區的文件系統掛載到指定的目錄。但是用戶可以將mount手動掛載的命令寫到/etc/rc.d/rc.local開機運行腳本文件中,系統在啓動時會自動執行rc.local腳本中的命令
例:   vi  /etc/rc.d/rc.local
sdd1的掛載設置
sdd2的掛載設置   mount  /dev/sdd1   /d1   ext4    defaults,noexec   0        0
mount  /dev/sdd2   /d2   ext4    defaults         0        0
自動掛載測試
顯示已掛載的設備    用mount  -av做。  
lsblk   或   df  -hT

磁盤管理
RAID磁盤陣列
    應用場景:公司購買了5塊2G的硬盤,要求工程師將這5塊硬盤用某種技術從邏輯上組合成一個大容量的存儲空間(如2G*5=10G)。此時我們就需要用到raid磁盤陣列或LVM邏輯卷管理技術。

Raid:是冗餘磁盤陣列的縮寫,簡稱磁盤陣列。
Raid功能:提供了容量組合、高讀寫性能、同步備份等功能
raid的缺點:raid陣列組中的後期無法添加新的成員來擴充整體容量。
raid實現方式:
硬raid:用raid磁盤陣列卡來實現。通過raid卡專用的軟件來管理磁盤。
軟raid:用操作系統中提供的raid軟件來實現磁盤陣列功能。成本低,性能比硬Raid低,因爲軟raid會佔用一定的cpu資源。

Raid等級:(根據功能不同來分類)n爲單塊硬盤的容量
等級號 名稱  功能  最少硬盤數   允許損壞的磁盤數量   可用容量
0   條帶化 高讀寫性能、容量組合  >=2 0   2n+n
1   鏡像化 同步備份、數據安全   =2  1   n
5   分佈式奇偶校驗的條帶化 高讀寫性能、數據安全  >=3 1   3n-n
6   雙組分佈式奇偶校驗的條帶化   高讀寫性能、數據安全  >=4 2   4n-2n
10  鏡像化+條帶化 容量組合、同步備份   總容量的50% 壞一半 4n+2n

linux系統中的軟raid管理工具軟件:mdadm
    查mdadm命令由哪個Rpm包提供:yum  provides  mdadm
    查軟件是否安裝了:rpm  -q  mdadm
    安裝mdadm軟件:yum  install  -y   mdadm

mdadm命令選項:
    -C  即create,創建raid設備
    -l  即level,指定raid等級號,等級可以是0、1、5、6、10等
    -n  即number,指定raid中的磁盤設備數量
    -x  即spare空格,指定raid設備中的熱備(備胎、替補)磁盤數量
    -D  即detail詳細,顯示raid設備的詳細信息
    -s  即scan掃描,掃描出系統中所有的raid設備
    -v  即verbose,顯示執行過程
    -S  即stop,停用指定的raid設備
    -A  即active,激活(啓用)指定的raid設備
    -a  即add,在指定的raid設備組中添加新的成員
    -f  即faulty錯誤的,指定raid設備組中有故障的磁盤
    -r  即remove移除,在指定的raid設備組中刪除有故障的磁盤
顯示磁盤設備列表:lsblk
顯示raid設備列表:mdadm  -Dsv
創建名稱爲md5的raid 5設備:mdadm  -C  md5  -l  5   -n  3   -x  1   /dev/sd{b..e}
顯示名稱爲md5的raid 5設備的詳細信息:mdadm  -D   /dev/md/md5
顯示raid設備列表:mdadm  -Dsv
生成raid配置文件:mdadm  -Dsv  >  /etc/mdadm.conf
停用md5這個raid設備:mdadm  -S  /dev/md/md5
啓用md5這個raid設備:mdadm  -A  /dev/md/md5
        警告:要想在停用raid設備之後再啓用,必須保證mdadm.conf配置文件
指定sdc硬盤爲壞盤(fail):mdadm  /dev/md/md5   -f   /dev/sdc
將sdc硬盤從md5這個raid組中移除(remove):mdadm  /dev/md/md5   -r   /dev/sdc
將sdf硬盤添加(add)到md5這個raid組中:mdadm  /dev/md/md5   -a   /dev/sdf
raid創建的完整管理流程:創建raid--〉生成mdamd.conf配置文件--〉格式化Raid設備--〉掛載raid設備--〉寫入新數據。
raid的刪除管理流程:卸載raid設備--〉停用raid設備--〉刪除mdadm.conf配置文件。

LVM邏輯卷管理:
LVM的主要功能:容量組合,動態調整容量大小。
LVM是將多塊硬盤從邏輯上組合成一個大容量的存儲空間(即VG卷組),最終要劃分成小的LV邏輯捲來使用這些空間。
LVM的管理流程:先給硬盤分區(也可以不分區),再創建PV物理卷(volnume),再創建VG卷組,再創建LV邏輯卷,再mkfs格式化LV,再mount手動或fstab自動掛載LV,再寫入數據。
 LVM的管理流程:查磁盤設備列表--〉創建PV--〉創建VG--〉創建LV--〉格式化LV--〉mount手動掛載或fstab自動掛載LV

物理磁盤Physical Device: 整個硬盤設備或使用fdisk、cfdisk命令建立的硬盤分區
物理卷(PV,Physical Volume) :用pvcreate在硬盤上創建PE的結果。查PV的結果用pvdisplay。
卷組(VG,Volume Group)    :由一個或多個物理卷(PV)組成的整體。
邏輯卷(LV,Logical Volume)  :從卷組(VG)中切割出的空間,用於格式化(即創建文件系統),大小由PE的個數決定。
物理擴展(PE,Physical Extent):是卷組中的最小容量單元,每個PE默認爲4MB的基本塊。
邏輯擴展(LE,Logical  Extent):LV中的最小單元。默認的每個LE大小跟PE的大小一致。

LVM管理的命令表:
功能/命令   物理卷管理     卷組管理     邏輯卷管理    
掃描scan    pvscan        vgscan       lvscan 
建立create    pvcreate    vgcreate     lvcreate   
顯示display   pvdisplay   vgdisplay    lvdisplay  
狀態status    pvs vgs     lvs 
刪除remove    pvremove    vgremove    lvremove    
擴展(增加容量)extend  vgextend    lvextend或lvresize
縮容(縮小容量)reduce  vgreduce    lvreduce或lvresize
調整系統中看到的容量:resize2fs    

例:
顯示磁盤塊設備列表:lsblk
查PV狀態:pvs
創建PV物理卷:pvcreate  /dev/sdb  /dev/sdc
顯示所有的PV詳細信息:pvdisplay               [/dev/sdb   /dev/sdc]

查VG狀態:vgs
創建名稱爲myvg的卷組,將sdb、sdc拉進卷組中:vgcreate myvg /dev/sdb  /dev/sdc
查myvg這個VG詳細信息:vgdisplay   myvg

查看VG狀態:vgs
創建容量爲3G,名稱爲mylv的LV邏輯卷:lvcreate  -L  3G  -n  mylv   myvg
查LV狀態:lvs
查mylv這個LV的詳細信息:lvdisplay   /dev/myvg/mylv

掃描並顯示系統中所有的LV設備:lvscan
格式化:mkfs.ext4  /dev/myvg/mylv
創建掛載點目錄:mkdir  -pv  /mnt/mydata
手動掛載:mount  /dev/myvg/mylv   /mnt/mydata
顯示已掛載的設備信息:lsblk   或  df  -h
寫入文件:cp  -v   /etc/host*   /mnt/mydata

LVM擴容練習:查看現有的PV、VG、LV狀態信息,將sdd和sde加入到myvg這個卷組中,將mylv的容量從3G調整到7G,將mylv的文件系統容量信息同步更新成7G。
LVM擴容思路:先檢查VG的剩餘容量,看是否需要擴VG容量,然後擴LV容量,最後刷新LV的文件系統容量值。
查PV狀態:pvs
查VG狀態:vgs
查LV狀態:lvs
將sdd、sde創建成PV:pvcreate  /dev/sdd   /dev/sde
查VG狀態:vgs
在myvg這個卷組中擴容添加sdd、sde這兩個成員:vgextend   myvg   /dev/sdd   /dev/sde
查VG狀態:vgs
查LV狀態:lvs
將mylv容量擴充爲7G:方法一:lvextend  -L  +4G  /dev/myvg/mylv
                    方法二:lvresize  -L  7G   /dev/myvg/mylv
查LV狀態:lvs
同步文件系統的容量信息:resize2fs   /dev/myvg/mylv

顯示磁盤分區的文件系統使用狀態:df  -h    會發現mylv的容量還是3G,信息不同步
同步文件系統的容量信息:resize2fs   /dev/myvg/mylv
顯示磁盤分區的文件系統使用狀態:df  -h    發現mylv的容量變成了7G
LVM縮容練習:查看現有的PV、VG、LV狀態信息,先將mylv的文件系統容量信息縮減成1G,然後將mylv的容量從7G調整到1G,手動掛載mylv到/mnt/mydata目錄,用ls查看掛載點目錄中的文件名列表,並用cat查看掛載點目錄中的hosts文件內容是否正常。將sdb硬盤中的數據遷移到sdd硬盤中,將myvg這個卷組中sdb、sdc、sde硬盤從組中移除。

LVM縮容思路:先用df  -h檢查文件系統的使用狀態信息,卸載要縮容的LV的文件系統,然後用e2fsck掃描檢查文件系統數據,然後用resize2fs調整文件系統容量,然後縮減lv的容量爲文件系統容量值,重新手動掛載LV。然後縮減VG的容量,刪除不需要的PV。
顯示磁盤空間使用狀態:df  -h
卸載掛載點所對應的設備:umount  /mnt/mydata
掃描檢查磁盤設備 :e2fsck  -f  /dev/myvg/mylv
調整文件系統容量爲1G:resize2fs   /dev/myvg/mylv  1G
顯示LV的狀態:lvs
LV的容量縮減:
    方法一:lvresize  -L  1G   /dev/myvg/mylv
    方法二:lvreduce  -L  -6G  /dev/myvg/mylv
顯示LV的狀態:lvs
手動掛載指定設備:mount  /dev/myvg/mylv  /mnt/mydata
顯示指定目錄的文件列表:ls  /mnt/mydata
顯示指定文件的全文內容:cat /mnt/mydata/hosts

VG卷組的縮容(縮減容量):
顯示VG狀態:vgs
顯示PV狀態:pvs
遷移sdb磁盤的數據到sdd硬盤中:pvmove  /dev/sdb  /dev/sdd
顯示PV狀態:pvs
顯示VG狀態:vgs
卷組的縮容在myvg卷組中移除sdb、sdc、sde這三個成員:vgreduce  myvg  /dev/sd{b,c,e}
顯示VG狀態:vgs
顯示pvg狀態:pvs

LVM快照(即snapshot備份)管理:
LVM快照的工作原理:LVM的快照卷也是一個LV邏輯卷,快照卷跟源邏輯卷共享數據,當用戶修改源邏輯卷中的文件時,LVM後臺程序會自動將修改之前的文件複製一份到快照卷中。
例:對LVM練習中的mylv這個邏輯卷創建一個容量爲500M且名稱爲mylv-snap的快照。然後將mylv-snap這個快照卷手動掛載/mnt/mylv-snap目錄中,顯示掛載點目錄的文件名列表。
顯示vg狀態:vgs
顯示lv狀態:lvs
創建mylv-snap快照卷:lvcreate  -L  500M  -s  -n  mylv-snap  /dev/myvg/mylv
顯示lv狀態:lvs
創建掛載點目錄:mkdir  -pv  /mnt/mylv-snap
手動掛載:mount  /dev/myvg/mylv-snap  /mnt/mylv-snap
顯示已掛載的設備信息:df  -h   或  lsblk
顯示文件名列表:ls  -R  /mnt
顯示掛載點目錄中hosts文件的全文內容:cat  /mnt/mydata/hosts   

恢復mylv-snap快照中的數據。注意:恢復快照後,快照卷會被自動刪掉。
思路:先卸載源邏輯卷--〉恢復快照--〉掛載邏輯卷
卸載:umount  /dev/myvg/mylv   /dev/myvg/mylv-snap
恢復快照:lvconvert  --merge  /dev/myvg/mylv-snap
掛載:mount  /dev/myvg/mylv   /mnt/mydata
顯示掛載點目錄中的文件內容:cat  /mnt/mydata/hosts

使用swap分區
如果硬盤有空閒空間來創建swap分區時,可以在硬盤上創建一個swap分區並啓用swap。
目標:在sde硬盤上創建一個500M的swap分區,並啓用這個Swap分區。
1、使用parted命令在sde硬盤上創建一個swap分區:
查看分區表
設置分區表類型爲msdos(即MBR)
創建1個500M的主分區
設置爲swap分區類型
查看塊設備   fdisk   -l  |grep  sd
parted   -s  /dev/sde  mklabel  msdos
parted   -s  /dev/sde  mkpart  primary   1   500M
parted   -s  /dev/sde   set  1  swap  on
lsblk
2、使用mkswap將/dev/sde1文件格式化爲swap格式:
mkswap   /dev/sde1
3、使用swapon來啓用/dev/sde1
查看內存狀態
啓用此swap文件

查看swap狀態    free
swapon  /dev/sde1
free
swapon  -s
4、使用swapoff關閉/dev/sde1
關閉swap文件
    swapoff   /dev/sde1
free

文件系統和軟硬鏈接
文件系統是對存儲空間的管理和分配,負責文件的存儲並對存入的文件進行保護和檢索的系統
windows常見的文件系統:fat32、ntfs
fat32:是一個32位的文件系統,只能存儲單個小於4G的文件,如果做文件共享安全性差
ntfs:是新技術文件系統(new  technology  file  system)的縮寫。支持存儲單個大於4G的文件,安全性高,可以對每個文件單獨設置權限(FACL)
fat32轉換成ntfs格式的文件系統:convert  盤符:    /fs:ntfs
文件分配表故障的修復:chkdsk  盤符:   /f   

linux系統中的文件系統:ext3、ext4、xfs
ext:是延伸文件系統(英語:Extended file system)的縮寫,也譯爲擴展文件系
XFS一種高性能的日誌文件系統
硬盤分區的文件系統組成:由inode索引目錄和block數據塊區域兩部分組成,inode類似於書籍的目錄,block類似於書籍的正文。

inode是信息節點的意思。inode中記錄了inode信息節點號、文件權限、以及inode號和所對應的block數據塊之間的映射關係等信息。
硬鏈接訪問文件內容的過程:硬鏈接文件名--〉inode索引號--〉block數據塊--〉sector扇區。
軟鏈接訪問文件內容的過程:軟鏈接文件名--〉i硬鏈接文件名--〉inode索引號--〉block數據塊--〉sector扇區
在當前目錄中給/etc/hosts文件創建一個名稱爲ht的硬鏈接:
硬鏈接的創建:ln  源文件名   新文件名   例:ln  /etc/hosts   ht
硬鏈接的缺點:1.目錄不能創建硬鏈接      2.硬鏈接不能跨分區來創建
在當前目錄中給/etc/passwd文件創建一個名稱爲pwsds的軟鏈接:
ln  目標路徑 文件名稱  例:ln  -s  /etc/passwd   pwsds
查文件的屬性:ls  -l  ht  pwsds

ln創建硬鏈接的命令格式:ln  源文件名  新文件名
硬鏈接的應用場合:提高文件的安全性,如果不小心刪除了硬鏈接中的其中一個文件名,可以給備用的硬鏈接文件名重新創建一個硬鏈接名。
硬鏈接訪問文件的過程:
文件名1--->inode索引號--->多個block塊--->多個sector扇區
文件名2-----↑  ↑
文件名3-----------↑

項目任務:將passwd文件中的前3行內容覆蓋寫入到/pa.txt文件中,然後給/pa.txt創建2個硬鏈接文件/pb和/pc,查看這三個文件的詳細信息(即屬性)。然後用cat分別查看這三個文件的內容,最後查看這三個文件的狀態信息。
將passwd文件的前3行覆蓋寫入/pa.txt中   head  -3  /etc/passwd  >  /pa.txt
進入/根目錄  cd  /
給pa.txt創建硬鏈接文件pb    ln  pa.txt  pb
給pa.txt創建硬鏈接文件pc    ln  pa.txt  pc
查看/根目錄中包含p字母的所有文件的屬性    ls  -li  /  |grep  p
    cat  /pa.txt  ;  cat  /pb  ;cat  /pc
查看/pa.txt、/pb、/pc文件的狀態信息    stat  /pa.txt   /pb  /pc

項目任務:將/etc目錄中的fstab、hosts、inittab文件用硬鏈接的方式備份到/fbak目錄中,然後刪除/etc/hosts文件,再用硬鏈接的方式恢復hosts文件到/etc目錄中,查看這兩個hosts文件的inode號是否一致,查看內容是否一致。
    mkdir  /fbak
    cd  /etc
ln  fstab  /fbak/fstab.bak
ln  hosts   /fbak/hosts.bak
ln  inittab   /fbak/inittab.bak

用硬鏈接的方式恢復hosts文件    rm  -f  /etc/hosts
cat  /etc/hosts
ln   /fbak/hosts.bak  /etc/hosts

    ls  -li  /fbak/hosts.bak  /etc/hosts
stat  /fbak/hosts.bak  /etc/hosts
cat  /fbak/hosts.bak
cat  /etc/hosts
警告:group、passwd、shadow用戶和組的相關文件不能用硬鏈接的方式備份,因爲每次創建、刪除用戶時,系統會重新創建passwd文件,導致此文件的inode索引號發生變化。
警告2:硬鏈接不能跨分區,也就是sdb1分區上的文件名不能創建硬鏈接到sdc1分區中。

軟鏈接也稱爲符號鏈接(symbolic link)即“僅僅包含它索要鏈接文件的路徑名”因此能做目錄鏈接也可以跨越文件系統(即跨分區),但原始文件被刪除後鏈接文件也將失效,如同Winodw™中的“快捷方式”。
軟鏈接的應用場合:當某個文件或文件夾的路徑太長了,我們可以在/根目錄中給它創建一個軟鏈接(即快捷方式),訪問起來更方便。

軟鏈接訪問文件的過程:
軟鏈接名--->源文件名--->inode索引號--->多個block塊--->多個sector扇區

項目任務:將passwd文件中的前3行內容覆蓋寫入到/sa.txt文件中,然後給/sa.txt創建1個硬鏈接文件/h1,創建1個軟鏈接/s1,查看這三個文件的詳細信息(即屬性)。然後用cat分別查看這三個文件的內容,最後查看這三個文件的狀態信息。刪除/sa.txt文件。
將passwd文件的前3行覆蓋寫入/pa.txt中   head  -3  /etc/passwd  >  /sa.txt
進入/根目錄  cd  /
給sa.txt創建硬鏈接文件h1    ln  sa.txt  h1
給sa.txt創建軟鏈接文件s1    ln  -s  sa.txt  s1
查看根目錄中的sa.txt和h1文件的詳細信息 ls  -li  /sa.txt  /h1   /s1
查看/sa.txt、/h1、/s1文件的狀態信息    stat  /sa.txt   /h1  /s1
刪除sa.txt文件  rm  -f  /sa.txt
查看/h1、/s1文件的屬性及inode索引號 ls  -li  /h1  /s1  發現s1屬性最右邊的sa.txt變紅色塊了,說明sa.txt文件丟失了
用/h1這個硬鏈接來恢復/sa.txt文件   ln  /h1  /sa.txt     然後用上一條命令查看文件的屬性有何變化

ln命令用於創建鏈接文件,格式爲:“ln [選項] 目標”。
創建硬鏈接:“ln  文件名  鏈接名”
創建軟鏈接:“ln  -s  文件名  連接名”
選項  作用
-s  創建"符號鏈接"(默認是硬鏈接)
-f  強制創建文件或目錄的鏈接(強制覆蓋已存在的文件名)
-i  覆蓋前先詢問
-v  顯示創建鏈接的過程
對/etc目錄做出一個名爲etcs的軟連接。
[root@sky ~]# ln -s /etc  /etcs
[root@sky ~]# ls  -ld  /etc*

quota磁盤配額

應用場合:
公司內部的文件共享服務,網絡雲環境中網盤(百度網盤、微雲)空間限制。廣泛應用在雲存儲、文件共享、郵件、Web網站等服務器。

配額控制的對象:用戶、分區、容量、文件數量

quota的磁盤配額可以限制用戶的硬盤可用空間或最大創建文件數量,並且還有軟/硬限制的區別:
soft軟限制:當達到軟限制時會提示用戶,但允許用戶在規定期限內繼續使用。
hard硬限制:當達到硬限制時會提示用戶,且強制終止用戶的操作。
block塊:限制用戶能使用的容量。
inode索引號:限制用戶能創建的文件數量。

quota磁盤配額的實施思路(精簡):
掛載分區時啓用“磁盤配額功能”:mount  -o  usrquota,grpquota   分區設備  掛載點
生成quota的主配置文件:quotacheck  -cvug  掛載點
激活quota功能:quotaon  掛載點
顯示磁盤配額報表:repquota  -av
給用戶或組設置quota配額方案edquota -u 用戶
測試配額的效果,查看配額使用情況

磁盤配額實驗流程:(只有root用戶才能設置quota限額參數)
0、臨時關閉Selinux安全功能:setenforce  0     查狀態:getenforce
1、對磁盤分區指定quota選項(usrquota,grpquota):手動mount或更改fstab文件再掛載  mount  -o  usrquota,grpquota  /dev/sdf1   /f1
3、掃描並生成quota配置文件:quotacheck  -cvug  掛載點
4、開啓quota配額方案:quotaon  掛載點
2、創建用戶、組
5、爲用戶、組設置配額參數:edquota  [-u -g]
6、做文件寫入測試,驗證配額是否生效:touch  dd  cp……
7、查看當前用戶的quota使用狀態:quota
root用戶查看某個用戶的quota使用狀態:quota  -u  用戶名
查看quota軟件的工作狀態:quotastats

quota精簡筆記OK版:
說明:以下是對sdf硬盤創建一個主分區,然後對這個分區的文件系統做quota磁盤配額控制。
lsblk    顯示塊設備
parted  -s  /dev/sdf   mklabel  msdos    設置分區表格式標籤爲msdos(即MBR分區表)
parted  -s  /dev/sdf   mkpart  primary  '1  -1 '    創建主分區,使用所有容量
lsblk    顯示塊設備
mkfs.ext4   /dev/sdf1     格式化sdf1分區爲ext4文件系統
mkdir  -pv  /f1     創建掛載點目錄
mount  -o  usrquota,grpquota  /dev/sdf1   /f1     手動掛載sdf1設備,並使用磁盤配額功能
setenforce  0     臨時關閉Selinux安全功能
getenforce        查selinux的工作狀態
quotacheck  -cvug   /f1     生成quota主配置文件
ls   /f1       顯示/f1目錄的文件名列表
quotaon  -v  /f1    激活quota功能,如果未激活,後期切換到用戶後,用quota查狀態會出沒有權限
useradd  -Db  /f1     修改useradd創建用戶時的用戶家目錄的基目錄爲/f1
useradd   fa     創建fa用戶
repquota  -av    顯示quota配額狀態信息報表
edquota  -u  fa   給fa用戶設置文件數量配額,軟限制爲15個文件,硬限制爲18個文件。

su  -  fa   切換到fa用戶
quota      顯示當前用戶的quota配額使用狀態信息
touch  {1..5}    會提示quota  exceeded配額超出,即超出了軟限制。
touch  {6..10}   會提示超出磁盤限額,無法創建。即超出了硬限制。
exit    退出當前用戶

su  -  u1
pwd   顯示當前工作目錄的絕對路徑
quota    查看當前用戶的配額使用狀態
dd  if=/dev/zero  of=2m  bs=1M  count=2    創建一個2M的文件2m
cp  2m  22m    複製2m文件爲22m
cp  2m  222m   複製不成功,因爲限額爲5M,其中2m文件是2兆,22m是2兆,222m只能複製出1M到硬盤上。
ls    顯示當前目錄的文件名列表
quota    查看當前用戶的配額使用狀態

edquota命令補充:
將fa用戶的配額方案複製給fb用戶:edquota   -p  fa  zk
例:創建一個5M的文件:dd  if=/dev/zero  of=/tmp/5m.txt  bs=1M  count=5
    dd數據轉儲:data   dump
    選項說明:文件的大小=bs*count=1M*5=5M
             if 是input file(輸入文件)的縮寫,即指定來源文件
             of 是output file(輸出文件)的縮寫,即指定目標文件
             bs 是base size基本大小的縮寫,即指定每次讀寫的大小
             count 是計數的意思,即讀寫的次數

通配符、管道、重定向、命令的邏輯運行
通配符:是用來在文件搜索時代替文件名中一個或多個真正字符。
?  匹配任意單個字符。例1:ls  /dev/tty?   例2:ls  /dev/tty??
*   匹配任意0個或多個字符(即一串字符)。例:ls  /dev/tty*
[]  匹配[]中的任意單個字符。例:ls  /dev/tty[123]5
[1-5]  匹配一個連續範圍,範圍可以是數字[0-9]、字母[a-z]或[A-Z]或[a-Z]。
例:ls  /dev/tty[1-4]3
例:用ls列出/dev目錄中以tty1、tty5開頭,後面一個字符是1、3、5、7的文件。
ls  /dev/tty[15][1357]
例:用ls列出/dev目錄中以tty開頭,後面接任意單個字符,最後接1、5、9字符的文件。
ls  /dev/tty?[159]

----------

管道符 | :將前一個命令的結果(標準輸出)傳給後一個命令繼續處理。
例:統計根目錄下的文件數量。
ls  /  |  wc  -l
說明:wc是字符統計(word count)的縮寫。-l是統計行數。
例:查看/etc/passwd文件的前6行內容,要求同時顯示出行號。
head  -6  /etc/passwd  | cat  -n
例:統計出/etc目錄下有多少個普通文件。統計出/etc目錄下有多少個目錄。
ls  -l  /etc  | grep  ^-  | wc  -l 
ls  -l  /etc  | grep  ^d  | wc  -l 

例:提取ifconfig  ens33結果中包含IP地址的整行信息。
方法一:ifconfig ens33 | head -2 | tail -1
方法二:ifconfig ens33 | grep  netmask
例:提取ifconfig  ens33結果中包含MAC地址的整行信息。
方法一:ifconfig ens33 | head -4 | tail -1
方法二:ifconfig ens33 | grep  ether
例:將ifconfig命令的結果進行分頁顯示來查看。
ifconfig | more   或 ifconfig | less

windows的管道符實例:在cmd下將systeminfo命令的結果進行分頁顯示來查看。
    systeminfo | more

---------
重定向:重新定義方向,即改變信息的輸出或輸入方向。

查標準輸入、輸出文件以及錯誤輸出文件:ll  /dev/std*
標準輸入stdin: 通常是指鍵盤。    數字代號(fd文件描述符)是 0
標準輸出(命令的正確結果)sdtout:通常是指顯示屏。  數字代號(fd文件描述符)是 1
錯誤輸出(命令的報錯信息)stderr:通常是指顯示屏。  數字代號(fd文件描述符)是 2

重定向輸出:操作中有>覆蓋寫入、>>追加寫入這兩種操作功能。通常是將原本顯示在屏幕上的信息指向某個文件。

重定向輸出的常見符號:
>  覆蓋寫入(覆蓋輸出)。例:ls  /opt  /xxx   >  /tmp/1.txt
>> 追加寫入(追加輸出)。例:date  >> /tmp/1.txt
2> 錯誤信息的覆蓋寫入。例:ls  /opt  /xxx   2>  /tmp/2.txt
2&1>  將正確和錯誤信息都覆蓋寫入到文件中。例:ls  /opt  /xxx   &>  /tmp/21.txt
例:將date命令的結果覆蓋寫入到/tmp/a.txt文件中。再將free -h命令的結果追加寫入到/tmp/a.txt文件中。最後用more命令分頁顯示/tmp/a.txt文件內容。
date  > /tmp/a.txt
free  -h  >> /tmp/a.txt
more  /tmp/a.txt

重定向輸入:將原本要用鍵盤輸入的信息指向某個文件。很少用。
例:用cat查看/etc/hosts文件。
cat  /etc/hosts  或  cat  < /etc/hosts
例:以腳本方式用cat命令創建包含指定內容的文件。(EOF是end of file的縮寫,即定義文件內容的結束字符)。注意:EOF標記必須是文件正文內容未出現的字符。
cat  > a.txt <<EOF
hello linux
hi  vim
ni hao

EOF

--
命令的邏輯運行:其實就是if條件語句的簡單寫法。
無邏輯(順序執行):ls ;pwd ;date
邏輯與: 命令1 && 命令2  當命令1執行成功(狀態碼是0)就執行命令2
邏輯或: 命令1 || 命令2  當命令1執行失敗(狀態碼是1)就執行命令2
例:執行date命令,用echo  $?查上一條命令執行結果的狀態碼。再執行ls  /xxxx,同樣查命令的執行結果的狀態碼。
date
echo  $?
ls  /xxxx
echo  $?
xxxxx
echo  $?
例:執行如下命令的邏輯執行命令。
邏輯與:date  &&  pwd
邏輯或:haha  ||  date
例:查詢系統中是否安裝了vsftpd軟件,如果沒有安裝,就用yum安裝此軟件。
rpm  -q  vsftpd  || yum install  -y  vsftpd
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章