NSD2005班第一次串講筆記

NSD2005班第一次串講筆記

命令基礎

  • 命令的執行依賴於解釋器(默認的解釋器:/bin/bash)

    • 用戶—》解釋器—》內核—》硬件
     [root@localhost ~]# cat /etc/shells     #查看當前系統有哪些解釋器
    
  • 命令行的一般格式基本用法

    • 命令字 [選項]… [參數1] [參數2]…
  • Linux執行大多數命令,都要找到對應的執行程序

    • which 查看命令對應的執行程序
      • 大多數命令是有對應的執行程序的
  • 命令行的快捷鍵

    • Ctrl+C 廢棄當前編輯的命令行、結束當前正在運行的命令
    • Ctrl+L 清空屏幕
    • ALT/ESC+. 粘貼上一條命令的最後一個參數
    • Ctrl+U 清楚光標前的內容
    • Ctrl+W 以空格爲界定,刪除一個參數或命令
    • Tab 自動補全

一、文件和目錄管理

1.1、Linux系統的目錄結構

  • Linux系統的目錄結構:樹形結構
    • 哲學理念:一切皆文件。
    • 根目錄:用 **“ / ”**表示
      • Linux系統的起點

  • /root:管理員用戶的家目錄
  • /bin :存放二進制可執行文件
  • /boot:存放啓動系統所需要的引導文件
  • /etc :存放的是系統管理所用到的配置文件
  • /home:存放普通用戶家目錄的
  • /dev :存放硬件設備的目錄
  • /var :常態性變動的文件,包括日誌文件以及某些軟件運作所產生的文件

1.2、文件和目錄的管理命令

1.2.1、pwd

  • (Print Working Directory)顯示出完整的當前工作目錄的名稱
[root@localhost ~]# pwd
/root

1.2.2、cd

  • (Change Directory)切換目錄

  • 命令格式:cd [目標文件夾位置]

[root@localhost ~]# cd /opt/
[root@localhost opt]# pwd
/opt
  • cd 命令常用的幾種方式

    1. 直接使用 cd 會切換到當前登錄用戶的家目錄、
    [root@localhost opt]# cd 
    [root@localhost ~]# pwd
    /root
    
    1. cd … 切換到當前目錄的父目錄
    [root@localhost ~]# cd ..
    [root@localhost /]# pwd
    /
    
    1. cd ~用戶名 切換到目標用戶的家目錄
    [root@localhost ~]# useradd nsd2005
    [root@localhost ~]# cd ~nsd2005
    [root@localhost nsd2005]# pwd
    /home/nsd2005
    
  • 絕對路徑和相對路徑

    • 絕對路徑:以根目錄開始的完整路徑
    • 相對路徑:以當前所在的目錄爲參照物的路徑

1.2.3、ls

  • (list)顯示指定目錄下的內容(列出當前工作目錄所含文件及子目錄)

  • 命令格式:ls [選項] [目錄或文件名]…

[root@localhost ~]# ls
anaconda-ks.cfg       公共  視頻  文檔  音樂
initial-setup-ks.cfg  模板  圖片  下載  桌面
  • 常用的選項

    • -l 長格式顯示文件的詳細屬性
    [root@localhost ~]# ls -l /etc/passwd
    -rw-r--r--. 1 root root 2727 6月   8 10:24 /etc/passwd
    
    - -A  顯示目標目錄下所有的文件和目錄,包括隱藏文件
    
    [root@localhost ~]# ls -A /root/
    
    • -d 顯示目錄本身的屬性
    [root@localhost ~]# ls -ld /etc
    
    • -h 提供一個易讀的單位
    [root@localhost ~]# ls -lh /etc/passwd
    
    • -R 遞歸顯示內容
    [root@localhost ~]# ls -R /etc/
    

1.2.4、du

  • 統計文件或者目錄使用硬盤空間的大小

  • 命令格式 : du [選項] 文件或目錄

  • 常用選項

    • -s 顯示文件或目錄的大小
    • -h 加一個易讀的單位
    [root@localhost ~]# du -sh /etc/passwd
    

1.2.5、cat

  • 將[文件]或標準輸入組合輸出到標準輸出。

  • 命令格式:cat [選項]… [文件]…

[root@localhost ~]# cat /etc/passwd
  • 常用的選項

    • -n 對輸出的所有行編號
    [root@localhost ~]# cat -n /etc/passwd
    

1.2.6、head和tail

  • 查看部分內容的命令

  • head命令格式:head [-n] 數字 文件名

    • 默認查看文件前10行
    [root@localhost ~]# head /etc/passwd		//顯示前十行內容
    
    [root@localhost ~]# head -2 /etc/passwd		//顯示前兩行內容
    
  • tail命令格式: tail [-n] 數字 文件名

    • 默認查看文件後10行
    [root@localhost ~]# tail /etc/passwd		//顯示後十行內容
    
    [root@localhost ~]# tail -2 /etc/passwd		//顯示後兩行內容
    

1.2.7、grep工具

  • 輸出包含指定字符串的行
  • 命令格式: grep 查找條件 目標文件
[root@localhost ~]# grep ^root /etc/passwd		//查詢以root開頭的行

[root@localhost ~]# grep bash$ /etc/passwd		//查詢以bash結尾的行
  • 常用選項

    • -v 結果取反
    • -i 忽略大小寫
    [root@localhost ~]# grep -v ^root /etc/passwd   //查詢不以root開頭的行
    
    [root@localhost ~]# grep -v bash$ /etc/passwd   //查詢不以bash結尾的行
    

1.2.8、mkdir

  • 創建目錄

  • 命令格式:mkdir [選項]… 目錄…

[root@localhost ~]# mkdir /opt/nsd2005
[root@localhost ~]# cd /opt/nsd2005
[root@localhost nsd2005]# pwd
/opt/nsd2005
  • 常用的選項

    • -p 創建一個目錄並將它的父目錄也創建出來(創建一個連續的目錄)
    [root@localhost nsd2005]# mkdir -p /opt/nsd2005/aa/bb/cc/dd/ee
    [root@localhost nsd2005]# cd /opt/nsd2005/aa/bb/cc/dd/ee
    [root@localhost ee]# pwd
    /opt/nsd2005/aa/bb/cc/dd/ee
    
    • -m 創建目錄時指定權限
    [root@localhost ~]# mkdir -m 444 /opt/nsd05
    [root@localhost ~]# ls -ld /opt/nsd05
    dr--r--r--. 2 root root 6 6月   8 10:50 /opt/nsd05
    

1.2.9、touch

  • 創建文件
  • 命令格式: touch 文件名
[root@localhost ~]# touch 1.txt   //在當前目錄下創建文件1.txt
[root@localhost ~]# touch /opt/1.txt   //在指定目錄下創建文件1.txt

1.2.10、rm

  • 刪除目錄或文件

  • 命令格式:rm [選項]… 文件…

  • 常用的選項

    • -r :遞歸刪除(刪除目錄必須要有)
    • -f : 強制刪除
    [root@localhost ~]# rm -rf /opt/1.txt 
    [root@localhost ~]# rm -rf /opt/nsd05/
    [root@localhost ~]# ls /opt/
    

1.2.11、mv

  • (move)移動文件或目錄

  • 路徑不變的移動(重命名)

  • 命令格式:mv 原文件… 目標路徑

    [root@localhost ~]# touch 1.txt
    [root@localhost ~]# mv 1.txt  /opt/1.txt
    
  • 重命名

    [root@localhost ~]# mv  /opt/1.txt /opt/2.txt
    [root@localhost ~]# ls /opt/
    

1.2.12、cp

  • (copy)複製

  • 命令格式:cp [選項]… 原文件1、原文件2… 目標路徑

  • 常用選項

    • -r 遞歸複製,複製目錄時必須有的選項
    [root@localhost ~]# cp /etc/passwd /opt/passwd
    [root@localhost ~]# ls /opt/
    
    [root@localhost ~]# cp /etc/passwd /opt/pass
    [root@localhost ~]# ls /opt/
    

1.3、歸檔及壓縮

  • 歸檔:將多個文件或目錄整理爲一個文件,文件總大小不會改變。

  • 壓縮:按照某種算法減小文件佔用空間的大小

  • Linux系統中常見的壓縮格式

    • .gz ==》 gzip
    • .bz2 ==》 bzip2
    • .xz ==》 xz

1.3.1、tar 集成備份工具

  • 創建壓縮包

    • 命令格式1: tar 選項 /路徑/壓縮包的名字 /路徑/被壓縮歸檔的數據…
  • 釋放壓縮包:

    • 命令格式2: tar 選項 /路徑/壓縮包的名字 -C(大寫) /路徑/
  • 常用選項

    • -c 創建歸檔
    • -x 釋放歸檔
    • -f 指定歸檔文件名稱,必須要有的選項,必須放在所有選項後面。
    • -z 、 -j 、-J : 分別表示gz、bz2、xz
    • -t : 顯示歸檔文件中的清單。不執行解壓縮的操作
    • -C : 指定釋放路徑
[root@localhost ~]# tar -zcf /root/tarfile.tar.gz  /boot  /opt/
tar: 從成員名中刪除開頭的“/”
[root@localhost ~]# tar -tf /root/tarfile.tar.gz
[root@localhost ~]# mkdir /opt/tarfiles
        
[root@localhost ~]# tar -xf /root/tarfile.tar.gz -C  /opt/tarfiles/
[root@localhost ~]# ls /opt/tarfiles/
boot  opt

1.3.2、zip

  • zip歸檔工具:可跨平臺的

    • 歸檔+壓縮
    • zip -r 備份文件.zip 被歸檔的文件或目錄
    [root@localhost ~]# zip -r /root/zipfiles.zip /home /boot
    
    • 釋放+解壓

    • unzip 備份文件.zip -d [目標文件夾]

[root@localhost ~]# mkdir /zipfiles
[root@localhost ~]# unzip /root/zipfiles.zip -d /zipfiles
[root@localhost ~]# ls /zipfiles
boot home
```

1.4、管道和重定向

  • 管道 | 將前面命令的輸出結果,傳遞給後面的命令作爲參數

  • 重定向 > 將前面命令的輸出作爲內容,寫入到目標文件中

    • (不存在會自動創建)
    • 覆蓋重定向: >
    • 追加重定向: >>

1.5、find命令

  • 命令格式: find [目錄] [條件1] [條件2]

  • 常用的條件

    • -type 類型 (f 文本文件、 d 目錄、 L快捷方式)
    • -name “文件名稱”
    • -size + | - 文件大小(k、M、G、TB、PB、EB)
    • -user 用戶名
    • -mtime 修改時間
    [root@localhost ~]# find /boot/ -type f
    
  • 高級使用:處理查找的內容

  • 命令格式:find [範圍] [條件] -exec 處理命令 {} ;

    • -exec
    • 示例
    [root@localhost ~]# find /boot/ -type f  -exec cp {} /opt/ \;
    
    [root@localhost ~]# find /opt/ -type f  -exec rm -rf  {}  \;
    [root@localhost ~]# ls /opt/
    

二、Linux軟件包管理

  • 常見的軟件包
    • Red Hat系列 : rpm軟件包
    • Debian系列 : deb軟件包
    • 源代碼軟件包 :通常以 .tar.gz、.tar.bz2 格式的壓縮包提供,包含程序的原始代碼文件
    • 綠色版軟件 :免安裝

2.1、rpm 命令

2.1.1、查詢已軟件的軟件

  • 命令格式: rpm -q[子選項] [軟件名稱]

  • 常用的子選項

    • -qa:列出已安裝的所有軟件包
    • -qi :查看指定軟件的詳細信息
    • -ql:查看指定軟件的文件安裝清單
    [root@localhost ~]# rpm -q firefox
    [root@localhost ~]# rpm -qi firefox
    [root@localhost ~]# rpm -ql firefox
    

2.1.2、查詢目錄或文件是由那個RPM包產生的

  • 命令格式 :rpm -qf [文件路徑]…

    • 即使目標被刪除也可以查詢
    [root@localhost ~]# rpm -qf /etc/passwd
    

2.1.3、查詢未安裝的軟件包信息

  • 命令格式:rpm -q[子選項] [RPM包文件路徑]

  • 常用的子選項

    • -qpi:查看指定軟件的詳細信息
    • -qpl:查看指定軟件的文件安裝清單
    [root@localhost ~]# rpm -qpi /mydvd/Packages/httpd-2.4.6-80.el7.centos.x86_64.rpm 
    
    [root@localhost ~]# rpm -qpl /mydvd/Packages/httpd-2.4.6-80.el7.centos.x86_64.rpm 
    

2.1.4、安裝rpm包

  • 命令格式: rpm -i RPM軟件包路徑

  • 輔助選項

    • -v : 顯示安裝細節信息
    • -h : 顯示安裝進度
    • –force : 強制安裝、覆蓋安裝
    • –test : 測試安裝,不做真實安裝動作
    [root@localhost ~]# rpm -q httpd			//查詢是否安裝
    
    [root@localhost ~]# rpm -ivh  /mydvd/Packages/httpd-2.4.6-80.el7.centos.x86_64.rpm
    
  • 恢復被刪除的程序

[root@localhost ~]# which hostname
/usr/bin/hostname
[root@localhost ~]# rm -rf /usr/bin/hostname
[root@localhost ~]# rpm -qf /usr/bin/hostname
hostname-3.13-3.el7.x86_64
[root@localhost ~]# rpm -ivh --force /mydvd/Packages/hostname-3.13-3.el7.x86_64.rpm 

2.1.5、卸載軟件

  • 命令格式: rpm -e 軟件名
[root@localhost ~]# rpm -e httpd
[root@localhost ~]# rpm -q httpd
未安裝軟件包 httpd 

2.1.6、導入紅帽簽名信息

  • 命令格式: rpm --import 簽名信息文件存放路徑
[root@localhost ~]# rpm --import /mydvd/RPM-GPG-KEY-CentOS-7

2.2、yum倉庫

  • 基於RPM包構建的軟件更新機制

  • 自動解決軟件包依賴關係

  • 所有軟件包由集中的YUM軟件倉庫提供

2.2.1、構建本地的yum倉庫

[root@localhost ~]# mkdir /etc/yum.repos.d/repo_bak
[root@localhost ~]# mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/repo_bak
[root@localhost ~]# vim /etc/yum.repos.d/dvd.repo
[root@localhost ~]# cat /etc/yum.repos.d/dvd.repo
[dvd]                       //倉庫的標識
name=dvd.repo               //倉庫的描述信息
baseurl=file:///dvd         //倉庫在哪裏,file://代表本機
enabled=1                   //是否啓用本文件
gpgcheck=0 					//是否檢測紅帽簽名
#gpgkey= 簽名文件路徑         //gpgcheck=0 gpgkey不需要寫
    
[root@localhost ~]# yum repolist

2.2.2、使用yum安裝軟件

[root@localhost ~]# yum -y install httpd

2.2.3、使用yum卸載軟件

[root@localhost ~]# yum -y remove httpd

2.2.4、yum 常用操作

  • yum 查詢
[root@localhost ~]# yum list ftp		//查詢軟件

[root@localhost ~]# yum provides ftp	
//查詢提供ftp命令的軟件包,也可以查詢文件由那個軟件包提供

[root@localhost ~]# yum search ftp		//查詢與ftp有關的軟件包
  • yum 緩存
[root@localhost ~]# yum makecache 		//手動建立緩存

[root@localhost ~]# yum clean all		//清楚緩存

2.2.5、mount掛載操作

  • 讓目錄成爲設備的訪問點

  • 以光驅設備爲例。

[root@localhost ~]# ls -l /dev/cdrom 
lrwxrwxrwx. 1 root root 3 6月   8 15:17 /dev/cdrom -> sr0
	
[root@localhost ~]# mkdir /dvd				//創建掛載點
[root@localhost ~]# mount /dev/cdrom /dvd	

[root@localhost ~]# df -ah | grep dvd
/dev/sr0                 8.8G  8.8G     0  100% /dvd
  • 卸載操作
[root@localhost ~]# umount /dvd/
[root@localhost ~]# df -ah | grep dvd

三、用戶和組管理

3.1、用戶管理

  • 用戶的標識: UID

  • 管理員用戶 root 的UID 爲0 ; 普通用戶的UID從1000開始。

  • 一個用戶必須屬於一個組,在創建用戶的用時,也會創建一個與這個用戶相對應得基本組。

  • /etc/passwd,保存用戶帳號的基本信息

    • 每個用戶記錄一行,以:分割爲7個字段
    [root@localhost ~]# head -1 /etc/passwd
    root:x:0:0:root:/root:/bin/bash
    

    用戶名:密碼佔位符:用戶的UID:基本組的GID:描述信息:家目錄:解釋器

  • /etc/passwd,保存用戶密碼/有效期等信息

    • 每個用戶記錄一行,以:分割爲9個字段
    [root@localhost ~]# grep root /etc/shadow
    root:$6$Jw6.2w9W$NSXSyOBuR.afacfARXMyylkpvhb1X847sSmeeP15pAZo8JhGbBlaaYCBWh9U/SIHoTvUctpOqK2deERW8R/Sh.:18421:0:99999:7:::
    

    字段1:用戶帳號的名稱
    字段2:加密後的密碼字符串
    字段3:上次修改密碼的時間(上一次修改密碼的時間:從1970-1-1到達上一次修改密碼的時間經歷的天數)
    字段4:密碼的最短有效天數,默認0
    字段5:密碼的最長有效天數,默認99999
    字段6:密碼過期前的警告天數,默認7
    字段7:密碼過期後多少天禁用此用戶賬號
    字段8:帳號失效時間,默認值爲空
    字段9:保留字段(未使用)

  • 用戶初始配置文件

    • 新建用戶時,根據 /etc/skel 模板目錄複製

3.1.1、創建用戶

  • useradd 命令

    • 命令格式: useradd [選項]… 用戶名

    • 常用選項

      • -u:指定 UID 標記號
      [root@localhost ~]# useradd -u 2005 nsd01
      [root@localhost ~]# id nsd01
      uid=2005(nsd01) gid=2005(nsd01)=2005(nsd01)
      
      • -d:指定宿主目錄(家目錄),缺省爲 /home/用戶名
      [root@localhost ~]# useradd -d /opt/nsd02 nsd02
      [root@localhost ~]# ls -ld /opt/nsd02/
      drwx------. 3 nsd02 nsd02 78 6月   8 15:56 /opt/nsd02/
      
      • -G:指定所屬的附加組
      [root@localhost ~]# useradd -G nsd2005 nsd03
      [root@localhost ~]# id nsd03
      uid=2007(nsd03) gid=2008(nsd03)=2008(nsd03),2007(nsd2005)
      
      • -s:指定用戶的登錄解釋器
      [root@localhost ~]# useradd -s /sbin/nologin nsd04
      [root@localhost ~]# su - nsd04
      This account is currently not available.		//次賬戶目前不可用
      

3.1.2、修改用戶屬性

  • usermod 命令

    • 命令格式: usermod [選項]… 用戶名

    • 常用的選線:

      • -u:用戶id
      [root@localhost ~]# id nsd01
      uid=2005(nsd01) gid=2005(nsd01)=2005(nsd01)
          
      [root@localhost ~]# usermod -u 3000 nsd01
      [root@localhost ~]# id nsd01
      uid=3000(nsd01) gid=2005(nsd01)=2005(nsd01)
      
      • -s:登錄解釋器
      [root@localhost ~]# cat /etc/passwd | grep nsd04
      nsd04:x:2008:2009::/home/nsd04:/sbin/nologin
      
      [root@localhost ~]# usermod -s /bin/bash nsd04
      [root@localhost ~]# cat /etc/passwd | grep nsd04
      nsd04:x:2008:2009::/home/nsd04:/bin/bash
      
      • -l:更改用戶帳號的登錄名稱
      [root@localhost ~]# id nsd100
      id: nsd100: no such user
      
      [root@localhost ~]# usermod -l nsd100 nsd01
      
      [root@localhost ~]# id nsd01
      id: nsd01: no such user
      [root@localhost ~]# id nsd100
      uid=3000(nsd100) gid=2005(nsd01)=2005(nsd01)
      
      • -G:附加組 //重置附加組
      [root@localhost ~]# id nsd100
      uid=3000(nsd100) gid=2005(nsd01)=2005(nsd01)
      [root@localhost ~]# groupadd test1
      groupadd:“test1”組已存在
      
      [root@localhost ~]# usermod -G test1 nsd100
      [root@localhost ~]# id nsd100
      uid=3000(nsd100) gid=2005(nsd01)=2005(nsd01),1000(test1)
      
      • -d:家目錄路徑
      [root@localhost ~]# cd ~nsd100
      [root@localhost nsd01]# pwd
      /home/nsd01
      
      [root@localhost nsd01]# usermod -d /opt/nsd100 nsd100
      
      [root@localhost nsd01]# cd ~nsd100
      -bash: cd: /opt/nsd100: 沒有那個文件或目錄
      
      [root@localhost nsd01]# mkdir /opt/nsd100
      [root@localhost nsd01]# cd ~nsd100
      [root@localhost nsd100]# pwd
      /opt/nsd100
      [root@localhost nsd100]# ls -ld /opt/nsd100
      drwxr-xr-x. 2 root root 6 6月   8 16:08 /opt/nsd100
      

3.1.3、給用戶設置密碼

  • passwd 命令
    • 命令格式: passwd [選項]… 用戶名
[root@localhost ~]# passwd 				//直接使用passwd可修改當前登錄用戶的密碼
更改用戶 root 的密碼 。
新的 密碼:
無效的密碼: 密碼少於 8 個字符
重新輸入新的 密碼:
passwd:所有的身份驗證令牌已經成功更新。
  • 取消交互式設置密碼
[root@localhost ~]# echo 123456 | passwd --stdin root
更改用戶 root 的密碼 。
passwd:所有的身份驗證令牌已經成功更新。

3.1.4、刪除用戶

  • userdel 命令

    • 命令格式: userdel [-r] 用戶名

    • 常用選項

      • -r 連同家目錄/用戶郵件一起刪除
      [root@localhost ~]# userdel -r nsd02
      [root@localhost ~]# userdel -r nsd03
      [root@localhost ~]# userdel -r nsd100
      userdel:/opt/nsd100 並不屬於 nsd100,所以不會刪除
      

3.2、組管理

  • /etc/group,保存組帳號的基本信息

    • 每個組記錄一行,以:分割爲4個字段
    [root@localhost ~]# groupadd nsd2005
    groupadd:“nsd2005”組已存在
    [root@localhost ~]# grep nsd2005 /etc/group
    nsd2005:x:2007:
    

    組名:組的密碼佔位符:GID:組的成員列表

3.2.1、創建組

  • groupadd 命令

    • 命令格式: groupadd [選項] 組
    [root@localhost ~]# groupadd nsd2005
    

3.2.2、管理組成員

  • gpasswd 命令

    • 命令格式: gpasswd [選項]… 組名

    • 常用選項

      • -a 添加組成員,一次一個
      [root@localhost ~]# useradd haha
      [root@localhost ~]# gpasswd -a haha nsd2005
      
      • -d 刪除組成員,一次一個
      [root@localhost ~]# gpasswd -d haha nsd2005
      正在將用戶“haha”從“nsd2005”組中刪除
      
      • -M 定義組成員用戶列表,可設置多個
    • 覆蓋之前,重定義

      [root@localhost ~]# gpasswd -M haha,xixi,hehe nsd2005
      [root@localhost ~]# grep nsd2005 /etc/group
      nsd2005:x:2007:haha,xixi,hehe
      
    
- -A    定義組管理員列表,可定義多個
      - 覆蓋之前,重定義
    
    ```shell
    [root@localhost ~]# gpasswd -A www1 nsd2005
    
    [root@localhost ~]# su - haha
    上一次登錄:一 6月  8 16:40:36 CST 2020pts/0 上
    [haha@localhost ~]$ gpasswd -d haha nsd2005
    gpasswd:沒有權限。
    
    [root@localhost ~]# su - www1
    [www1@localhost ~]$ gpasswd -d hah nsd2005
    正在將用戶“hah”從“nsd2005”組中刪除
    gpasswd:用戶“hah”不是“nsd2005”的成員
    ```

### 3.2.3、刪除組

- groupdel   命令

  - 命令格式: groupdel   組名
  - 刪除的組不能是用戶的基本組

  ```shell
  [root@localhost ~]# groupdel nsd2005
  [root@localhost ~]# grep nsd2005 /etc/group

四、權限管理

4.1、基本權限和歸屬

  • 基本權限:

    • 讀 : r (read)
    • 寫 : w (write)
    • 執行 : x (excute)
  • 歸屬關係:

    • 所有者 : u (user)
    • 所屬組 : g (group)
    • 其他用戶 : o (other)
    [root@localhost ~]# ls -l /etc/passwd
    -rw-r--r--. 1 root root 2635 6月   5 19:04 /etc/passwd
    權限  硬鏈接數  屬主  屬組   大小   最後修改時間   文件名
    
    • -rw-r–r--
      • 最前面的 - 表示 文件類型是普通文件(d,表示目錄,l,表示鏈接文件)
      • 第二到第四個字符 rw- 表示屬主(所有者)具有可讀可寫的權限
      • 第五到第七個字符 r– 表示屬組(所屬組)具有可讀的權限
      • 第八到第十個字符 r– 表示其他人具有可讀的權限

4.2、修改權限

  • chmod命令
    • 命令格式1:chmod [ugoa] [±=] 文件
    • 命令格式2: chmod [nnn] 文件
    • 常用選項
      • -R 遞歸修改權限
    • 權限的8進制數表示
      • r = 4
      • w = 2
      • x = 1
[root@localhost ~]# touch 1.txt
[root@localhost ~]# ls -l 1.txt
-rw-r--r--. 1 root root 0 6月   8 16:51 1.txt
[root@localhost ~]# chmod a+x 1.txt
[root@localhost ~]# ls -l 1.txt
-rwxr-xr-x. 1 root root 0 6月   8 16:51 1.txt

[root@localhost ~]# chmod 777 1.txt
[root@localhost ~]# ls -l 1.txt
-rwxrwxrwx. 1 root root 0 6月   8 16:51 1.txt

4.3、修改歸屬關係

  • chown 命令
    • 命令格式1: chown 屬主 文件
    • 命令格式2: chown 屬主:屬組 文件
    • 命令格式3: chown :屬組 文件
    • 常用的選項
    • -R : 遞歸修改歸屬關係
[root@localhost ~]# useradd test1
[root@localhost ~]# mkdir -p /opt/aa/bb/cc

[root@localhost ~]# chown test1 /opt/aa/
[root@localhost ~]# ls -ld /opt/aa/
drwxr-xr-x. 3 test1 root 16 6月   8 16:59 /opt/aa/

[root@localhost ~]# chown -R test1:test1 /opt/aa/
[root@localhost ~]# ls -lR /opt/aa/

4.4、ACL策略

  • 針對個別用戶,個別組設置獨立的權限

  • setfacl 命令

    • 命令格式1: setfacl [選項] u:用戶名:權限 文件

    • 命令格式2: setfacl [選項] g:組名:權限 文件

    • 常用選項

      • -m:定義一條ACL策略
      [root@localhost ~]# useradd dc
      [root@localhost ~]# setfacl -m u:dc:rw /opt/aa/
      
      • -x:清除指定的ACL策略
      [root@localhost ~]# setfacl -x u:dc /opt/aa/
      [root@localhost ~]# getfacl /opt/aa/
      
      • -b: 清楚所有已設置的ACL策略
      [root@localhost ~]# setfacl -b /opt/aa/
      
      • -R:遞歸設置ACL策略
      [root@localhost ~]# setfacl -Rm u:dc:rwx /opt/aa/
      [root@localhost ~]# getfacl /opt/aa/
      [root@localhost ~]# getfacl /opt/aa/bb/
      

4.5、附加權限

  • Set GID權限(s權限)

    • 使用方式:chmod g+s 目標目錄
      • 佔用屬組(Group)的 x 位
      • 顯示爲 s 或 S,取決於屬組是否有 x 權限
      • 對目錄有效
      • 在一個具有SGID權限的目錄下,新建的文檔會自動繼承此目錄的屬組身份
  • Set UID

    • 使用方式:chmod u+s 目標目錄
    • 佔用屬主的x位
      • 顯示爲s或S,取決於屬主是否有x權限(有x權限,就是s。沒有就是S)
      • 僅對可執行的程序有意義
      • 當其他用戶執行帶SUID標記的程序時,具有此程序屬主的身份和相應權限
  • 粘滯位,sticky Bit權限(t權限)

    • 使用方式:chmod o+t 目標目錄
    • 佔用其他人的x位
    • 顯示爲t或T,取決於其他人是否有x權限(有x權限,就是s。沒有就是S)
    • 適用於目錄,用來限制用戶濫用寫入權限、

•Set GID權限
–佔用屬組(Group)的 x 位
–顯示爲 s 或 S,取決於屬組是否有 x 權限
–對目錄有效
–在一個具有SGID權限的目錄下,新建的文檔會自動繼承此目錄的屬組身份

五、磁盤管理

磁盤是任何系統中存儲文件和數據的重要載體。是必不可缺的。無論是Windows還是Linux在安裝系統時,必須先有分區來做這個載體。

在Linux系統中主要使用的磁盤工具是fdisk和parted兩種。

[root@localhost ~]# lsblk 			//列出當前系統識別到的硬盤
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   20G  0 disk 
├─sda1            8:1    0    1G  0 part /boot
└─sda2            8:2    0   19G  0 part 
  ├─centos-root 253:0    0   17G  0 lvm  /
  └─centos-swap 253:1    0    2G  0 lvm  [SWAP]
sdb               8:16   0   20G  0 disk 
  • 分區模式:MBR和GPT

    • MBR/msdos分區模式

      • 分區類型:主分區、擴展分區、邏輯分區
    • 最多隻能有4個主分區

    • 擴展分區可以沒有,至多有一個

    • 1~4個主分區,或者 3個主分區+1個擴展分區(n個邏輯分區)

    • 最大支持容量爲 2.2TB 的磁盤

    • 擴展分區不能格式化,空間不能直接存儲數據

    • 可以用於存儲數據的分區:主分區與邏輯分區

  • GPT分區模式

    • 全局唯一標識分區表
    • 突破固定大小64字節的分區表限制
      • 最多可支持128個主分區,最大支持18EB容量
    • 1 EB = 1024 PB = 1024 x 1024 TB

5.1、fdisk 分區工具

  • 命令格式1:fdisk [選項] <磁盤> //更改分區表
  • 命令格式2:fdisk [選項] -l <磁盤> //列出分區表
[root@localhost ~]# fdisk /dev/sdb
  • 進入fdisk交互模式
    • 常用的交互指令
      • m 列出指令幫助
      • p 查看現有的分區表(存放分區信息的表格)
      • n 新建分區
      • d 刪除分區
      • q 放棄更改並退出
      • w 保存更改並退出
命令(輸入 m 獲取幫助):n			//新建分區
Partition type:
   p   primary (0 primary, 0 extended, 4 free)		//主分區
   e   extended										//擴展分區
Select (default p): 
Using default response p
分區號 (1-4,默認 1):
起始 扇區 (2048-41943039,默認爲 2048):
將使用默認值 2048
Last 扇區, +扇區 or +size{K,M,G} (2048-41943039,默認爲 41943039):+1G
分區 1 已設置爲 Linux 類型,大小設爲 1 GiB

命令(輸入 m 獲取幫助):n
Partition type:
   p   primary (1 primary, 0 extended, 3 free)
   e   extended
Select (default p): 
Using default response p
分區號 (2-4,默認 2):
起始 扇區 (2099200-41943039,默認爲 2099200):
將使用默認值 2099200
Last 扇區, +扇區 or +size{K,M,G} (2099200-41943039,默認爲 41943039):+5G
分區 2 已設置爲 Linux 類型,大小設爲 5 GiB

命令(輸入 m 獲取幫助):p

磁盤 /dev/sdb:21.5 GB, 21474836480 字節,41943040 個扇區
Units = 扇區 of 1 * 512 = 512 bytes
扇區大小(邏輯/物理):512 字節 / 512 字節
I/O 大小(最小/最佳):512 字節 / 512 字節
磁盤標籤類型:dos
磁盤標識符:0x2b679b16

   設備 Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048     2099199     1048576   83  Linux
/dev/sdb2         2099200    12584959     5242880   83  Linux

5.2、格式化

  • 格式化:賦予空間文件系統的過程

    • 文件系統:數據在空間中存放的規則

    [root@localhost ~]# mkfs.
    mkfs.btrfs mkfs.ext2 mkfs.ext4 mkfs.minix mkfs.vfat
    mkfs.cramfs mkfs.ext3 mkfs.fat mkfs.msdos mkfs.xfs

    
    ```shell
    [root@localhost ~]# mkfs -t 
    btrfs   ext2    ext4    minix   vfat    
    cramfs  ext3    fat     msdos   xfs 
    
  • 格式化分區

[root@localhost ~]# mkfs.ext4 /dev/sdb1

[root@localhost ~]# mkfs -t ext4 /dev/sdb1

[root@localhost ~]# blkid /dev/sdb1
/dev/sdb1: UUID="ae37b440-69ec-47ef-b617-02807f48496f" TYPE="ext4"
  • 刷新分區表
[root@localhost ~]# partprobe

5.3、掛載使用分區

  • 開機自動掛載/etc/fstab
[root@localhost ~]# mkdir /mypart1
[root@localhost ~]# vim /etc/fstab
/dev/sdb1 /mypart1  ext4  defaults 0 0 
[root@localhost ~]# mount -a
[root@localhost ~]# df -h  | grep mypart1
/dev/sdb1                976M  2.6M  907M    1% /mypart1
  • /etc/fstab

/dev/sdb1 /mypart1 ext4 defaults 0 0

設備名稱 掛載點 文件系統 參數 備份標記 檢測順序

  • 參數
Async/sync 設置是否爲同步方式運行,默認爲async
auto/noauto 當下載mount -a 的命令時,此文件系統是否被主動掛載。默認爲auto
rw/ro 是否以以只讀或者讀寫模式掛載
exec/noexec 限制此文件系統內是否能夠進行"執行"的操作
user/nouser 是否允許用戶使用mount命令掛載
suid/nosuid 是否允許SUID的存在
Usrquota 啓動文件系統支持磁盤配額模式
Grpquota 啓動文件系統對羣組磁盤配額模式的支持
Defaults 同時具有rw,suid,dev,exec,auto,nouser,async等默認參數的設置
  • 備份標記

    • 能否被dump備份命令作用
    • 但是現在有比dump更好的備份方式
  • 是否檢驗扇區

    • 開機的過程中,系統默認會以fsck檢驗我們系統是否爲完整
    0 不要檢驗
    1 最早檢驗(一般根目錄會選擇)
    2 1級別檢驗完成之後進行檢驗

5.4、parted 分區工具

  • parted交互模式管理分區
[root@localhost ~]# parted /dev/sdb
(parted) mktable gpt			//指定分區模式
警告: The existing disk label on /dev/sdb will be destroyed and all
data on this disk will be lost. Do you want to continue?
//重新建立磁盤標籤,磁盤中原來的數據會丟失,是否繼續。      
    
是/Yes/否/No? yes

(parted) mkpart 				//建立分區
分區名稱?  []? sdb1				//名稱隨意
文件系統類型?  [ext2]? ext4		//這裏不會格式化	
起始點? 0						
結束點? 2G
警告: The resulting partition is not properly aligned for best performance.
//得到的分區沒有正確對齊以獲得最佳性能。                                         
    
忽略/Ignore/放棄/Cancel? Ignore

(parted) print 				//查看分區表信息
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdb: 21.5GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 

Number  Start   End     Size    File system  Name  標誌
 1      17.4kB  2000MB  2000MB               sdb1

(parted) resizepart 
分區編號? 1
結束點?  [2000MB]? 4G
(parted) print
Number  Start   End     Size    File system  Name  標誌
 1      17.4kB  4000MB  4000MB               sdb1

(parted) rm 1				//刪除分區

5.5、交換空間

5.5.1、使用分區做交換空間

  • 在Linux系統下除了存放文件的分區以外,還需要一個Swap(交換分區)用來充當虛擬內存。

  • SWAP分區是Linux暫時存儲數據的交換分區,主要用於保存物理內存上暫時不用的數據,在需要的時候調進內存。一般情況下SWAP分區應該大於或者等於物理內存大小。

  • 虛擬內存

    • 當物理內存佔滿了,CPU可以將內存的中數據,暫時放入交換空間中,緩解真實物理內存的壓力
[root@localhost ~]# ls /dev/sdb2
/dev/sdb2
[root@localhost ~]# mkswap /dev/sdb2		//格式化交換文件
正在設置交換空間版本 1,大小 = 3905532 KiB
無標籤,UUID=3802ca2f-3f92-4e8f-8092-950f163de988
[root@localhost ~]# blkid /dev/sdb2			//查看文件系統類型
/dev/sdb2: UUID="3802ca2f-3f92-4e8f-8092-950f163de988" TYPE="swap" PARTLABEL="sdb2" PARTUUID="ea9e855a-0857-4c79-826d-1f351c6da31d" 
    
[root@localhost ~]# swapon 					//查看交換空間組成
NAME      TYPE      SIZE USED PRIO
/dev/dm-1 partition   2G   0B   -1
[root@localhost ~]# swapon /dev/sdb2		//啓用交換空間
[root@localhost ~]# swapon 					//查看交換空間組成
NAME      TYPE      SIZE USED PRIO
/dev/dm-1 partition   2G   0B   -1
/dev/sdb2 partition 3.7G   0B   -2

    
[root@localhost ~]# free -m 				//查看交換空間大小
              total        used        free      shared  buff/cache
Mem:            974         403         192           8         379
Swap:          5861           0        5861

[root@localhost ~]# swapoff /dev/sdb2		//停用交換分區
[root@localhost ~]# swapon 					//查看交換空間組成
NAME      TYPE      SIZE USED PRIO
/dev/dm-1 partition   2G   0B   -1
[root@localhost ~]# free - m			
              total        used        free      shared  buff/cache   available
Mem:         997956      409692      199724        8636      388540      385896
Swap:       2097148           0     2097148
  • 開機啓用交換分區
[root@localhost ~]# vim /etc/fstab 
[root@localhost ~]# tail -1 /etc/fstab
/dev/sdb2 swap  swap defaults 0 0
[root@localhost ~]# swapon -a
[root@localhost ~]# swapon 
NAME      TYPE      SIZE USED PRIO
/dev/dm-1 partition   2G   0B   -1
/dev/sdb2 partition 3.7G   0B   -2

5.5.2、使用文件所佔用的硬盤空間,充當交換空間

  • Linux中的虛擬設備

    • /dev/zero 設備產生無意義數據
      • “零”設備,可以無限的提供空字符(0x00,ASCII代碼NUL)。
      • 常用來生成一個特定大小的文件。
    • /dev/null
      • “空”設備,也有人稱它爲黑洞。任何輸入到這個“設備”的數據都將被直接丟棄。
      • 最常用的用法是把不需要的輸出重定向到這個文件
    • /dev/random和/dev/urandom
      • 隨機數設備,提供不間斷的隨機字節流。
      • 二者的區別是/dev/random產生隨機數據依賴系統中斷,當系統中斷不足時,/dev/random設備會“掛起”,因而產生數據速度較慢,但隨機性好;
  • 建立一個大文件

    • dd命令
      • 命令格式: if=輸入文件名 of=輸出文件名 bs=塊大小 count=塊數
[root@localhost ~]# dd if=/dev/zero of=/opt/swap.txt bs=1M  count=2048
記錄了2048+0 的讀入
記錄了2048+0 的寫出
2147483648字節(2.1 GB)已複製,13.3674 秒,161 MB/秒

[root@localhost ~]# du -sh /opt/swap.txt 
2.0G	/opt/swap.txt
  • 利用文件製作交換空間
[root@localhost ~]# mkswap /opt/swap.txt 
正在設置交換空間版本 1,大小 = 2097148 KiB
無標籤,UUID=ca89ca53-13c1-418a-b04d-2fbeba7ea408
[root@localhost ~]# swapon /opt/swap.txt
swapon: /opt/swap.txt:不安全的權限 0644,建議使用 0600。
[root@localhost ~]# swapon
NAME          TYPE      SIZE  USED PRIO
/dev/dm-1     partition   2G 66.3M   -1
/opt/swap.txt file        2G    0B   -2

5.6、邏輯卷管理

LVM是Linux操作系統中對磁盤分區進行管理的一種機制。

是建立在磁盤和分區之上的一個邏輯層,可以提高磁盤分區管理的靈活性。

最重要的三個概念

  • 物理卷(PV,physical Volume)
  • 卷組(VG,Volume group)
  • 邏輯卷(LV,logical Volumes)

環境準備

  • 新添加兩塊磁盤
  • 使用fdisk分區工具創建幾個分區
[root@localhost ~]# lsblk 
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   20G  0 disk 
├─sda1            8:1    0    1G  0 part /boot
└─sda2            8:2    0   19G  0 part 
  ├─centos-root 253:0    0   17G  0 lvm  /
  └─centos-swap 253:1    0    2G  0 lvm  [SWAP]
sdb               8:16   0   20G  0 disk 
├─sdb1            8:17   0   10G  0 part 
├─sdb2            8:18   0    5G  0 part 
├─sdb3            8:19   0    3G  0 part 
└─sdb4            8:20   0    2G  0 part 
sdc               8:32   0   20G  0 disk 
├─sdc1            8:33   0   10G  0 part 
└─sdc2            8:34   0   10G  0 part 

5.6.1、物理卷管理

物理卷就是指磁盤,磁盤分區或從邏輯上和磁盤分區具有同樣功能的設備(如RAID),是LVM的基本存儲邏輯塊,但和基本的物理存儲介質(如分區、磁盤等)比較,卻包含有和LVM相關的管理參數。

每一個物理卷被劃分爲若干個PE(physical Extents)。PE的大小默認是4MB。

(創建卷組的時候就會直接將對應的分區創建爲物理卷)

5.6.1.1、添加物理卷

[root@localhost ~]# pvcreate /dev/sdb1  /dev/sdc1
  Physical volume "/dev/sdb1" successfully created.
  Physical volume "/dev/sdc1" successfully created.

5.6.1.2、查看物理卷

可以看到剛剛被創建完成的物理卷/dev/sdb1 和/dev/sdc1以及安裝系統是自動創建的/dev/sda2

[root@localhost ~]# pvdisplay 
  --- Physical volume ---
  PV Name               /dev/sda2
  VG Name               centos
  PV Size               <19.00 GiB / not usable 3.00 MiB
  Allocatable           yes (but full)
  PE Size               4.00 MiB
  Total PE              4863
  Free PE               0
  Allocated PE          4863
  PV UUID               ETpx0V-4iUA-ZzXt-BceZ-ZmSM-DQAN-5F0VAG
   
  "/dev/sdb1" is a new physical volume of "10.00 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sdb1
  VG Name               
  PV Size               10.00 GiB
  Allocatable           NO
  PE Size               0   
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               fphv7f-5zXj-NYdk-0e3e-1JXP-d8jR-kwRCi0
   
  "/dev/sdc1" is a new physical volume of "10.00 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sdc1
  VG Name               
  PV Size               10.00 GiB
  Allocatable           NO
  PE Size               0   
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               8ljhmv-sH3W-OZIT-G9y3-AEKf-mSkT-eOeBbI

5.6.1.3、刪除物理卷

不需要的物理卷可以刪除,但是已經屬於某個卷組的物理卷刪除會報錯

[root@localhost ~]# pvremove /dev/sdc1
  Labels on physical volume "/dev/sdc1" successfully wiped.
[root@localhost ~]# pvdisplay 

5.6.2、卷組管理

卷組可以由一個或者多個物理卷組成,一個卷組可以創建多個邏輯卷。當卷組空間不足時,可以往卷組中添加新的物理卷。

(創建卷組的時候就會直接將對應的分區創建爲物理卷)

5.6.2.1、添加捲組vg0

創建一個名字叫做vg0的卷組

[root@localhost ~]# vgcreate vg0  /dev/sdb1
  Volume group "vg0" successfully created

5.6.2.2、擴展卷組vg0的容量

[root@localhost ~]# vgextend vg0 /dev/sdb2
  Physical volume "/dev/sdb2" successfully created.		//往卷組中添加新的物理卷時,會將它自動創建爲物理卷。
  Volume group "vg0" successfully extended

5.6.2.3、查看卷組

[root@localhost ~]# vgdisplay 	//不指定卷組名字則查看全部
  --- Volume group ---
  VG Name               centos
  System ID             
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  3
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                2
  Open LV               2
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               <19.00 GiB
  PE Size               4.00 MiB
  Total PE              4863
  Alloc PE / Size       4863 / <19.00 GiB
  Free  PE / Size       0 / 0   
  VG UUID               DfeNcj-tPls-WVXD-UUCH-9Rej-b7ai-sAhF2a

  --- Volume group ---
  VG Name               vg0
  System ID             
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  2
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                0
  Open LV               0
  Max PV                0
  Cur PV                2
  Act PV                2
  VG Size               14.99 GiB
  PE Size               4.00 MiB
  Total PE              3838
  Alloc PE / Size       0 / 0   
  Free  PE / Size       3838 / 14.99 GiB
  VG UUID               3ODNGU-R4Qj-4pF0-FBag-9EGc-7mgi-2g4jAr
  
  
[root@localhost ~]# vgs

5.6.2.4、從卷組中刪除物理卷

[root@localhost ~]# vgreduce vg0 /dev/sdb2
  Removed "/dev/sdb2" from volume group "vg0"
[root@localhost ~]# vgdisplay vg0
  --- Volume group ---
  VG Name               vg0
  System ID             
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  3
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                0
  Open LV               0
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               <10.00 GiB
  PE Size               4.00 MiB
  Total PE              2559
  Alloc PE / Size       0 / 0   
  Free  PE / Size       2559 / <10.00 GiB
  VG UUID               3ODNGU-R4Qj-4pF0-FBag-9EGc-7mgi-2g4jAr

5.6.2.5、刪除卷組

[root@localhost ~]# vgremove vg0 
  Volume group "vg0" successfully removed
[root@localhost ~]# vgdisplay vg0
  Volume group "vg0" not found
  Cannot process volume group vg0

5.6.3、邏輯卷管理

邏輯卷基於卷組。

邏輯卷和普通的磁盤分區非常的類似,在邏輯捲上也同樣可以建立文件系統。

邏輯卷被劃分爲LE(logical Extents)的基本單位。在同一個卷組中LE和PE的大小是相同的,並且一 一對應。

環境準備

  • 新建卷組vg0
  • 將磁盤分區分區/dev/sdb1、/dev/sdb2、/dev/sdb3、/dev/sdb4都加入到vg0裏面。
[root@localhost ~]# vgcreate vg0 /dev/sdb1 /dev/sdb2 /dev/sdb3 /dev/sdb4
  Volume group "vg0" successfully created
[root@localhost ~]# vgdisplay vg0
  --- Volume group ---
  VG Name               vg0
  System ID             
  Format                lvm2
  Metadata Areas        4
  Metadata Sequence No  1
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                0
  Open LV               0
  Max PV                0
  Cur PV                4
  Act PV                4
  VG Size               19.98 GiB
  PE Size               4.00 MiB
  Total PE              5116
  Alloc PE / Size       0 / 0   
  Free  PE / Size       5116 / 19.98 GiB
  VG UUID               CvjdYK-0ZOB-9nQS-sWzk-5twJ-6fdi-E8Tv2G

5.6.3.1、添加邏輯卷

在卷組vg0中,創建邏輯卷lv0,大小爲1111MB。

[root@localhost ~]# lvcreate -L 1111M -n lv0  vg0
  Rounding up size to full physical extent <1.09 GiB
  Logical volume "lv0" created.

在卷組vg0中,創建邏輯卷lv1,大小爲1000個PE。

[root@localhost ~]# lvcreate -l 1000 -n lv1  vg0
  Logical volume "lv1" created.

在卷組和邏輯卷創建完成後,會在/dev目錄下創建於其名字對應的目錄。

[root@localhost ~]# ls -l /dev/vg0
total 0
lrwxrwxrwx. 1 root root 7 Apr 24 16:14 lv0 -> ../dm-2
lrwxrwxrwx. 1 root root 7 Apr 24 16:16 lv1 -> ../dm-3

5.6.3.2、查看邏輯卷

[root@localhost ~]# lvdisplay /dev/vg0/lv0		//不指定邏輯卷名稱,則查看全部
  --- Logical volume ---
  LV Path                /dev/vg0/lv0
  LV Name                lv0
  VG Name                vg0
  LV UUID                vNdfVn-6ktv-dOwq-lTpq-yJUg-r8du-hMMtdO
  LV Write Access        read/write
  LV Creation host, time localhost.localdomain, 2020-04-24 16:14:04 -0400
  LV Status              available
  # open                 0
  LV Size                <1.09 GiB
  Current LE             278
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:2
  
[root@localhost ~]# lvs

5.6.3.3、更改邏輯卷大小

不建議減少邏輯卷的空間,因爲可能會導致邏輯捲上的文件系統中的數據丟失。

將lv0的大小增加爲1500MB。

[root@localhost ~]# lvresize -L 1500M /dev/vg0/lv0
  Size of logical volume vg0/lv0 changed from <1.09 GiB (278 extents) to 1.46 GiB (375 extents).
  Logical volume vg0/lv0 successfully resized.
[root@localhost ~]# lvdisplay /dev/vg0/lv0
  --- Logical volume ---
  LV Path                /dev/vg0/lv0
  LV Name                lv0
  VG Name                vg0
  LV UUID                vNdfVn-6ktv-dOwq-lTpq-yJUg-r8du-hMMtdO
  LV Write Access        read/write
  LV Creation host, time localhost.localdomain, 2020-04-24 16:14:04 -0400
  LV Status              available
  # open                 0
  LV Size                1.46 GiB
  Current LE             375
  Segments               2
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:2
  • 刷新文件系統

​ xfs_growfs:擴展xfs文件系統

​ resize2fs:擴展ext4文件系統

[root@localhost ~]# xfs_growfs   邏輯卷設備

[root@localhost ~]# resize2fs	邏輯卷設備

5.6.3.4、刪除邏輯卷

刪除邏輯卷lv1

[root@localhost ~]# lvremove /dev/vg0/lv1
Do you really want to remove active logical volume vg0/lv1? [y/n]: y
  Logical volume "lv1" successfully removed
[root@localhost ~]# lvdisplay /dev/vg0/lv1
  Failed to find logical volume "vg0/lv1"

5.7、RAID磁盤陣列

硬RAID:通過RAID卡管理

軟RAID:通過軟件來管理

  • Redundant Array of Independent Disks 獨立磁盤冗餘陣列

  • 其實就是用多個獨立的磁盤組成在一起形成一個大的磁盤系統,從而實現比單塊磁盤更好的存儲性能和更高的可靠性。

  • 常見的RAID方案

    • RAID0(最少兩塊)

      • 最早出現的RAID模式,數據分條技術(Data Striping)
      • RAID 0最簡單的實現方式就是將N塊硬盤(最好容量相同)串聯在一起形成一個大的硬盤組,在寫入數據時,數據會被分爲一定大小的多個區塊,依次寫入到磁盤中。
      • 優點:
        • 磁盤利用率是100%。
        • 較高的讀寫性能。
      • 缺點:
        • 一塊盤壞掉,數據就會丟失。沒有冗餘。
    • RAID1(最少兩塊)

      • 磁盤鏡像模式

      • 原理在一個硬盤上寫入數據時會在閒置硬盤上也同時寫入,生成鏡像文件,在不影響性能的情況下儘可能保證可靠性。

      • 優點:

        • 高度冗餘
      • 缺點:

        • 磁盤利用率50%
        • 讀寫性能一般
    • RAID10(最少四塊)

      • 鏡像加條帶(先鏡像,再分條)
      • 優點:
        • 高度冗餘
        • 讀寫性能較高
      • 缺點:
        • 磁盤利用率50%
    • RAID5(最少三塊)

      • 分佈式獨立磁盤陣列。
      • RAID 5將數據以塊爲單位分佈在各個硬盤上。RAID 5不對數據進行備份,而是把數據和對應的奇偶校驗信息存儲在組成磁盤陣列的各個磁盤上,並且奇偶校驗信息和與其相對應的信息存放在不同的硬盤上。
      • 當一個硬盤損壞時,系統可以根據在另一塊硬盤上存放的該損壞數據相對應的奇偶校驗信息來恢復數據。
      • 磁盤利用率是 n-1/n
      • 優點:
        • 讀寫性能比較高
      • 缺點:
        • 只允許同時損壞一塊盤
    • RAID6(最少四塊)

      • RAID 6除了每個硬盤上都有同級數據(也就是硬盤級)的XOR校驗區外,還有一個針對每個數據塊的XOR校驗區,而且同樣是交錯存儲。
      • 磁盤利用率是 n-2/n
      • 優點:
        • 冗餘性能更好
        • 最多可壞兩塊盤
      • 缺點:
        • 寫入性能降低
        • 多了一個校驗區,減少了有效的存儲空間

六、進程管理

  • 每個執行的任務都被稱爲進程(process)。

  • Linux系統中每運行一個程序都會創建一個進程。

  • 進程就是一個正在運行的程序實例。

  • 進程是一個動態的概念,可以與操作系統、其他進程以及用戶進行數據交互。

  • 每個進程啓動後,系統都會自動爲它分配一個唯一的數值,用於標識該進程,這個數值就被稱爲進程號(Process ID,PID)。進程號是這個進程的唯一標識,系統也是通過進程號來管理的。

6.1、查看進程

6.1.1、查看進程樹

  • pstree 命令(Processes Tree)
    • 命令格式: pstree [選項] [PID或用戶名]
    • 常用命令選項
      • -a 顯示完整的命令行
      • -p 列出對應的PID編號
[root@localhost ~]# pstree  
[root@localhost ~]# pstree  -p
[root@localhost ~]# pstree -a

[root@localhost ~]# pstree  lisi
bash
[root@localhost ~]# pstree  -p lisi
bash(17546)
  • systemd 上帝進程(所有進程的父進程)

6.1.2、查看進程快照

  • ps 命令 (Processes Snapshot)

    • 命令格式: ps [選項]

    • 常用選項

      • aux:
        • a 顯示當前終端所有進程
        • x 當前用戶在所有終端下的進程
        • u 以用戶格式輸出
      [root@localhost ~]# ps aux
      

      用戶 進程ID 佔用CPU 佔用內存 虛擬內存 固定內存 終端 狀態 起始狀態 CPU時間 程序指令

      • -elf:
        • e 顯示當前終端所有進程
        • l 以長格式顯示
        • f 最完整的進程信息
      [root@localhost ~]# ps -elf
      

      輸出內容中會顯示PPID(父進程ID)

6.1.3、進程動態排名

  • top交互式工具
    • 命令格式: top [-d 刷新秒數] [-U 用戶名]
[root@localhost ~]# top -d5
  • P 按照佔用CPU進行排序
  • M 按照佔用內存進行排序

6.1.4、檢索進程

  • pgrep (Process Grep)

    • 命令格式 : pgrep [選項] 查詢條件

    • 常用命令:

      • -l 輸出進程名
      [root@localhost ~]# pgrep -l bash			//查找進程名中帶有bash的
      17012 bash
      17476 bash
      17546 bash
      
      • -U 檢索指定用戶的進程
      [root@localhost ~]# pgrep -lU lisi			//查找用戶lisi的進程
      17546 bash
      
      • -x 精確匹配完整的進程名
      [root@localhost ~]# pgrep -lx   crond		//查找進程名叫crond的
      1145 crond
      

6.2、控制進程

6.2.1、進程的前後臺調度

  • 前臺啓動

    • 輸入命令後,會佔用當前的終端
  • 後臺啓動

    • 在命令行後加“&”,不佔用當前終端
  • Ctrl+z 掛起當前進程(暫停運行轉入後臺)

  • jobs 命令

    • 查看後臺任務列表
[root@localhost ~]# sleep 100 &
[1] 21162
[root@localhost ~]# jobs
[1]+  運行中               sleep 100 &
  • fg 命令
    • 將後臺任務恢復到前臺運行
[root@localhost ~]# fg 1
sleep 100

  • bg 命令
    • 激活後臺被掛起任務
[root@localhost ~]# fg 1
sleep 100
^Z
[1]+  已停止               sleep 100

[root@localhost ~]# jobs
[1]+  已停止               sleep 100
[root@localhost ~]# bg 1
[1]+ sleep 100 &
[root@localhost ~]# jobs
[1]+  運行中               sleep 100 &

6.2.2、殺死進程

普通用戶只能終止自己運行的進程,root用戶可以終止所有。

  • Ctrl+C 結束前臺進程

  • kill 命令

    • 命令格式1: kill [-9] PID
    • 命令格式2: kill [-9] %後臺任務編號
    • -9 表示強制殺死
    [root@localhost ~]# sleep 100000 &
    [1] 23123
    [root@localhost ~]# jobs
    [1]+  運行中               sleep 100000 &
    [root@localhost ~]# kill 23123
    [root@localhost ~]# jobs
    [1]+  已終止               sleep 100000
    
    [root@localhost ~]# sleep 100000 &
    [1] 23168
    [root@localhost ~]# jobs
    [1]+  運行中               sleep 100000 &
    [root@localhost ~]# kill %1
    [root@localhost ~]# jobs
    [1]+  已終止               sleep 100000
    
  • killall 命令

    • 命令格式: killall [-9] 進程名
    • 命令格式: killall [-9] -u 用戶名
    [root@localhost ~]# sleep 100000 &
    [1] 23300
    [root@localhost ~]# jobs
    [1]+  運行中               sleep 100000 &
    [root@localhost ~]# killall sleep
    [1]+  已終止               sleep 100000
    
  • pkill 命令

    • 命令格式: pkill 查找條件
    [root@localhost ~]# sleep 100000 &
    [1] 23363
    [root@localhost ~]# jobs
    [1]+  運行中               sleep 100000 &
    [root@localhost ~]# pkill -9 sleep
    [1]+  已殺死               sleep 100000
    

七、計劃任務

  • 按照設定的時間週期性的執行某一項任務

  • 使用的軟件包:cronie 、 crontabs

  • 系統服務: crond

  • 日誌文件: /var/log/cron

  • crontab 命令

    • 命令格式: crontab [選項] -u 用戶名
    • 常用選項
      • -e 編輯
      • -l 查看
      • -r 清除
[root@svr7 ~]# crontab -e -u root
[root@svr7 ~]# crontab -l -u root
* * * * *   date >> /opt/time.txt
[root@svr7 ~]# crontab -r -u root
[root@svr7 ~]# crontab -l -u root
no crontab for root
  • 計劃任務的記錄格式

    分 時 日 月 周 命令

八、Linux系統中的網絡管理

8.1、修改網卡的命名規則

8.1.1、修改配置文件

  • 修改前
[root@svr7 ~]# cat -n /etc/default/grub
     1	GRUB_TIMEOUT=5
     2	GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
     3	GRUB_DEFAULT=saved
     4	GRUB_DISABLE_SUBMENU=true
     5	GRUB_TERMINAL_OUTPUT="console"
     6	GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet"
     7	GRUB_DISABLE_RECOVERY="true"

[root@svr7 ~]# nmcli connection add ifname eth0 con-name eth0 type ethernet  
連接“eth0”(b953b30d-6881-4ef4-a21f-8a572a6939ff) 已成功添加。
[root@svr7 ~]# nmcli connection show 
NAME    UUID                                  TYPE      DEVICE 
eth0    b953b30d-6881-4ef4-a21f-8a572a6939ff  ethernet  eth0   
virbr0  06a11f3d-6132-43a6-8142-92d9716e924b  bridge    virbr0 
  • 修改後
    • ​ 在第六行的末尾添加 net.ifnames=0 biosdevname=0
[root@svr7 ~]# cat -n /etc/default/grub    //grub是引導內核的程序
     1	GRUB_TIMEOUT=5
     2	GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
     3	GRUB_DEFAULT=saved
     4	GRUB_DISABLE_SUBMENU=true
     5	GRUB_TERMINAL_OUTPUT="console"
     6	GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet net.ifnames=0 biosdevname=0"
     7	GRUB_DISABLE_RECOVERY="true"
     
[root@svr7 ~]# ifconfig | head -2
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
  • 重新生成grub配置文件
[root@svr7 ~]# grub2-mkconfig -o /boot/grub2/grub.cfg   //重新生成grub配置文件
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-3.10.0-862.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-862.el7.x86_64.img
Found linux image: /boot/vmlinuz-0-rescue-e7698cd933f74608881ae839d102df88
Found initrd image: /boot/initramfs-0-rescue-e7698cd933f74608881ae839d102df88.img
done

8.1.2、刪除識別錯誤的網絡配置

[root@svr7 ~]# nmcli connection show
NAME        UUID                                  TYPE      DEVICE 
virbr0      06a11f3d-6132-43a6-8142-92d9716e924b  bridge    virbr0 
有線連接 1  cdb69c51-bfa2-315e-bbe6-099bb3e41cfe  ethernet  eth0   
ens33       d154e33c-0886-4129-808a-def0196782c5  ethernet  --   

[root@svr7 ~]# nmcli connection delete ens33 
成功刪除連接 'ens33'(d154e33c-0886-4129-808a-def0196782c5)。
[root@svr7 ~]# nmcli connection delete 有線連接\ 1 
成功刪除連接 '有線連接 1'(cdb69c51-bfa2-315e-bbe6-099bb3e41cfe)。

[root@svr7 ~]# nmcli connection show 
NAME    UUID                                  TYPE    DEVICE 
virbr0  06a11f3d-6132-43a6-8142-92d9716e924b  bridge  virbr0 

8.1.3、添加新的網卡名

[root@svr7 ~]# nmcli connection add ifname eth0 con-name eth0 type ethernet  
連接“eth0”(b953b30d-6881-4ef4-a21f-8a572a6939ff) 已成功添加。
[root@svr7 ~]# nmcli connection show 
NAME    UUID                                  TYPE      DEVICE 
eth0    b953b30d-6881-4ef4-a21f-8a572a6939ff  ethernet  eth0   
virbr0  06a11f3d-6132-43a6-8142-92d9716e924b  bridge    virbr0 

8.2、修改網絡連接配置

[root@svr7 ~]# nmcli connection modify eth0 ipv4.method manual ipv4.addresses 192.168.1.100/24 autoconnect yes 
[root@svr7 ~]# nmcli connection up eth0 		//激活網卡

8.3、SSH

  • 默認端口是 TCP 22

  • openssh

  • 服務名稱:sshd

  • 主程序: /usr/sbin/sshd (服務端)、/usr/bin/ssh (客戶端)

  • 配置文件:/etc/ssh/sshd_config

    ​ /etc/ssh/ssh_config

  • SSH 無密碼驗證

    • 生成公鑰和私鑰
    • 將公鑰傳遞給對方主機
    [root@svra ~]# ssh-keygen 				//一路回車
    Generating public/private rsa key pair.
    Enter file in which to save the key (/root/.ssh/id_rsa): 
    Created directory '/root/.ssh'.
    Enter passphrase (empty for no passphrase): 
    Enter same passphrase again: 
    Your identification has been saved in /root/.ssh/id_rsa.
    Your public key has been saved in /root/.ssh/id_rsa.pub.
    The key fingerprint is:
    SHA256:Th88OtWziD2xfQ5LERowcVaZfDlB+MKIPv9+jWpujYw [email protected]
    The key's randomart image is:
    +---[RSA 2048]----+
    |        +.oo.=oo |
    |         =  = +  |
    |         ..o.o . |
    |        ...+o..  |
    |       .S B +.   |
    |       oo* B +   |
    |        =o*o=o.o |
    |         .Eo==+ .|
    |           **o.  |
    +----[SHA256]-----+
    
    
    [root@svra ~]# ssh-copy-id [email protected]
    

8.4、scp

  • 安全複製工具

  • 基於ssh協議

  • 命令格式:scp [-r] 用戶名@服務器:路徑 本地路徑

    ​ scp [-r] 本地路徑 用戶名@服務器:路徑

與cp命令用法相同

九、vim編輯器

  • 命令模式
    • 行間跳轉: gg 跳轉到首行、G跳轉到尾行
      • 擴展: ngg (n表示行號) 跳轉到指定行
    • 列間跳轉: ^ 跳轉到行首 、 $ 跳轉到行尾
      • 擴展: n| (n表示列號)
    • 複製: yy 複製一行 nyy 複製多行
    • 粘貼: p 複製到光標下面的一行, P 複製到光標的上一行
    • 刪除 : dd 刪除光標所在行
      • C 刪除光標後的內容,與d$相同
      • d^ 刪除光標前的內容
    • 文本查找:
      • /word 向後查找字符串
      • n 向下 N 向上
    • 撤銷編輯
      • u 撤銷最近的一次修改。長摁就相當於多次u,返回到最開始的狀態
      • U 撤銷對當前行的修改
      • CTRL+R 撤銷前一次的撤銷操作
    • 保存退出
      • ZZ
  • 末行模式
    • 保存 :w
    • 退出 :q! 放棄更改退出
    • 保存並退出 :wq
    • 另存爲 :w /目標文件路徑
    • 讀入其它文件內容 :r 目標文件
    • 字符串替換
      • 行內替換
        • 😒/old/new 替換當前行第一個“old”
        • 😒/old/new/g 替換當前行所有的“old”
      • 區域內替換
        • :n,m s/old/new/g 替換n到m行所有的old
        • :% s/old/new/g 替換文件內所有的old
    • 顯示行號:
      • :set nu | nonu 顯示和不顯示行號
      • :set ai|noai 啓用和關閉自動縮進

十、補充的命令

  • 通配符

    • “ * ” : 任意多個字符

    • “ ? ” :任意單個字符

    • [a-z] : 連續範圍內的一個

    • {a,min,max}:多個不連續的字符串,全匹配

  • less 分屏閱讀工具

    • 命令格式:less 文件名…
    • 優勢:支持上下鍵滾動
    [root@localhost ~]# less /etc/passwd     //按q可以退出
    
  • 列出CPU處理器信息

[root@localhost ~]# lscpu
  • 列出內存信息
[root@localhost ~]# cat /proc/meminfo
  • 列出當前系統的主機名稱
[root@localhost ~]# hostname
  • 列出網卡信息
[root@localhost ~]# ifconfig
  • 關機:poweroff

  • 重啓:reboot

  • 別名: 複雜的命令簡單化

    • 查看已設置的別名

    • alias [別名名稱]

    • 定義新的別名

    • alias 別名名稱= ‘實際執行的命令行’

    • 取消已設置的別名

    • unalias [別名名稱]

VDO

虛擬數據優化器

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