計算機發展的五代:
電子管、晶體管、中小規模集成電路、超大規模集成電路、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