1. 程式人生 > 實用技巧 >08-常用指令(2)

08-常用指令(2)

組管理

在 Linux 中的每個使用者必須屬於一個組,不能獨立於組外。在 Linux 中每個檔案有所有者、所在組、其它組的概念。

組的建立

  • 指令:groupadd 組名
  • 建立指定組的使用者:useradd -g 組名 使用者名稱

相關概念

所有者

  • 檢視檔案的所有者:ls –ahl
  • 修改檔案所有者:chown 使用者名稱 檔名
  • 示例:將 finch 建立的檔案 machine 的所有者修改成 liujiaqi

所在組

當某個使用者建立了一個檔案後,預設這個檔案的所在組就是該使用者所在的組。

  • 檢視檔案/目錄所在組:ls –ahl
  • 修改檔案所在的組:chgrp 組名 檔名

使用 finch 使用者建立檔案helper,看看當前這個檔案屬於哪個組,然後將這個檔案所在組修改為 liujiaqi 組。

其他組

除檔案的所有者和所在組的使用者外,系統的其它使用者都是檔案的其它組。

修改使用者所在組

在新增使用者時,可以指定將該使用者新增到哪個組中,同樣的用 root 的管理許可權可以改變某個使用者所在的組。

  • 改變使用者所在組:usermod –g 組名 使用者名稱
  • 改變該使用者登陸的初始目錄:usermod –d 目錄名 使用者名稱

許可權管理

檢視檔案許可權

ls -ahl 結果中的一條記錄為例:

  • 第 0 位確定檔案型別
    • d:目錄
    • l:軟連結
    • c:字元裝置(鍵盤、滑鼠)
    • b:塊檔案(硬碟)
  • 第 1~3 位確定所有者(該檔案的所有者)擁有該檔案的許可權 --- User
  • 第 4~6 位確定所屬組(同用戶組的)擁有該檔案的許可權 --- Group
  • 第 7~9 位確定其他使用者擁有該檔案的許可權 --- Other

rwx 許可權詳解

  • rwx 作用到檔案
    • [r] 代表可讀(read):可以讀取,檢視
    • [w] 代表可寫(write):可以修改,但是不代表可以刪除該檔案!刪除一個檔案的前提條件是對該檔案所在的目錄有寫許可權,才能刪除該檔案
    • [x] 代表可執行(execute):可以被執行
  • rwx 作用到目錄
    • [r] 代表可讀(read):可以讀取,ls 檢視目錄內容
    • [w] 代表可寫(write):可以修改,目錄內:建立+刪除+重新命名目錄
    • [x] 代表可執行(execute):可以進入該目錄

修改許可權

通過chmod指令,可以修改檔案或者目錄的許可權。

方式一:算符

  • + 、-、= 變更許可權
  • u:所有者 | g:所有組 | o:其他人 | a:所有人(ugo總和)
  • 示例
    • chmod u=rwx,g=rx,o=x 檔案目錄名 給所有者賦予 rwx 許可權,所有組使用者賦予 rx 許可權,其他組使用者賦予 x 許可權
    • chmod o+w 檔案目錄名:給其他組使用者增加 w 許可權
    • chmod a-x 檔案目錄名:給所有使用者去除 x 許可權
  • 練習、
    • 給 abc 檔案 的所有者讀寫執行的許可權,給所在組讀執行許可權,給其它組讀執行許可權
    • 給 abc 檔案的所有者除去執行的許可權,增加組寫的許可權
    • 給 abc 檔案的所有使用者新增讀的許可權

方式二:數和

  • r=4,w=2,x=1,rwx=4+2+1=7
  • 算符賦權的 chmod u=rwx,g=rx,o=x 檔案目錄名 相當於 chmod 751 檔案目錄名

修改檔案所有者

  • 指令格式
    • chown newowner file 改變檔案的所有者
    • chown newowner:newgroup file 改變檔案的所有者和所有組
  • 常用引數:[-R] 若是目錄,則使其下所有子檔案和目錄遞迴生效

修改檔案所在組

  • 指令格式:chgrp newgroup file 改變檔案的所有組
  • 示例

練習題

  • 前置準備
    • 2 個組:straight,curly
    • 2 個 straight 組員:finch,reese
    • 2 個curly 組員:groves,shaw
  • finch 建立一個檔案 machine,自己可以讀寫,本組人可以讀,其它組沒有任何許可權
  • finch 修改該檔案,讓其它組人可以讀,本組人可以讀寫
  • shaw 投靠 straight,看看是否可以讀寫

任務排程

概述

  • 任務排程:是指系統在某個時間執行的特定的命令或程式。
  • 任務排程分類
    • 系統工作:有些重要的工作必須周而復始地執行。比如病毒掃描等
    • 個別使用者工作:個別使用者可能希望執行某些程式。比如對 MySQL 資料庫的備份

  • 基本語法:crontab [選項]
  • 功能描述:crontab 進行定時任務的設定;通過 service crond restart 重啟任務排程。
  • 常用選項
  • 圖示

Quick Start

  • 鍵入命令:crontab -e
  • 編輯指令碼:*/1 * * * * ls -l /etc >> /tmp/to.txt
  • 儲存退出後的每一分鐘都會自動地呼叫該指令碼

引數細節

  • 5 個佔位符的說明
  • 特殊符號的說明
  • 特定時間執行任務案例

應用例項

  • 每隔 1 分鐘,就將當前的日期資訊,追加到 /tmp/mydate 檔案中
    • 編寫指令碼檔案 /home/mytask1.sh,寫入內容:date >> /tmp/mydate
    • 給 mytask1.sh 可執行許可權:chmod 744 mytask1.sh
    • 執行命令:crontab -e,繼而將 */1 * * * * /home/mytask1.sh 寫入
    • 每個 1 min 檢視 mydate 檔案內容
  • 每隔 1 分鐘, 將當前日期和日曆都追加到 /home/mycal 檔案中
    • 編寫指令碼檔案 /home/mytask2.sh,寫入內容:
      date >> /tmp/mycal
      cal >> /tmp/mycal
      
    • 給 mytask2.sh 可執行許可權:chmod 744 mytask2.sh
    • 執行命令:crontab -e,繼而將 */1 * * * * /home/mytask2.sh 寫入
    • 每個 1 min 檢視 mycal 檔案內容
  • 每天凌晨 2:00 將 MySQL 資料庫 testdb ,備份到檔案中
    • 編寫指令碼檔案 /home/mytask3.sh,寫入內容:
      /usr/local/mysql/bin/mysqldump -u root -proot testdb > /tmp/mydb.bak
      
    • 給 mytask3.sh 可執行許可權:chmod 744 mytask3.sh
    • 執行命令:crontab -e,繼而將 0 2 * * * * /home/mytask3.sh 寫入
    • 每天凌晨 2 點 起來檢視 mycal 檔案內容(哈哈哈哈哈哈

磁碟分割槽

分割槽基礎

分割槽的方式

  • MBR 分割槽
    • 最多支援 4 個主分割槽(因為分割槽表只能記錄 4 條分割槽記錄)
    • 系統只能安裝在主分割槽
    • 擴充套件分割槽要佔一個主分割槽;在擴充套件分割槽裡面,還可以再分邏輯分割槽
    • MBR 最大隻支援 2TB,但擁有最好的相容性
  • GTP 分割槽
    • 支援無限多個主分割槽 (但 OS 可能限制,比如 Windows 下最多 128 個分割槽)
    • 最大支援 18EB 的大容量 (1EB=1024 PB,1PB=1024 TB)
    • Windows7 64 位以後支援 GTP

Win 磁碟分割槽

Linux 分割槽

原理簡述

  • Linux 來說無論有幾個分割槽,分給哪一目錄使用,它歸根結底就只有一個根目錄,一個獨立且唯一的檔案結構 , Linux 中每個分割槽都是用來組成整個檔案系統的一部分。
  • Linux 採用了一種叫“載入”的處理方法,它的整個檔案系統中包含了一整套的檔案和目錄,且將一個分割槽和一個目錄聯絡起來 [掛載(Mount)]。這時要載入的一個分割槽將使它的儲存空間在一個目錄 [掛載點(Mount Point)] 下獲得。

硬碟說明

  • Linux 硬碟分為 IDE 硬碟和 SCSI 硬碟,目前基本上是 SCSI 硬碟。
  • 對於 IDE 硬碟,驅動器識別符號為 "hdx~"。其中 "hd" 表明分割槽所在裝置的型別,這裡是指 IDE 硬碟了。"x" 為盤號(a 為基本盤,b 為基本從屬盤,c 為輔助主盤,d 為輔助從屬盤),"~" 代表分割槽,前 4 個分割槽用數字 1 到 4 表示,它們是主分割槽或擴充套件分割槽,從 5 開始就是邏輯分割槽。
    • hda3 表示為第 1 個 IDE 硬碟上的第 3 個主分割槽或擴充套件分割槽
    • hdb2 表示為第 2 個 IDE 硬碟上的第 2 個主分割槽或擴充套件分割槽
  • 對於 SCSI 硬碟則標識為 "sdx~",SCSI 硬碟是用 "sd" 來表示分割槽所在裝置的型別的,其餘則和 IDE 硬碟的表示方法一樣。

掛載案例

VM 增加硬碟步驟:

  1. VM [設定] 中新增硬碟
  2. 分割槽
  3. 格式化
  4. 掛載
  5. 設定可以自動掛載

VM 新增硬碟

分割槽

格式化

格式化之後分割槽就有 UUID 了。

掛載

這種方式的掛在是臨時掛在,系統重啟之後就沒了。

自動掛載

解除安裝

  • 掛載:將一個分割槽與一個目錄聯絡起來
    • 命令:mount 裝置名稱 掛載目錄
    • 例如:mount /dev/sdb1 /newdisk
  • 解除安裝:將一個分割槽與一個目錄斷開聯絡
    • 命令:umount 裝置名稱 | 掛載目錄
    • 例如: umount /dev/sdb1 | umount /newdisk

磁碟情況查詢

系統整體磁碟使用情況

基本語法:df -h

指定目錄的磁碟佔用情況

  • 基本語法:du -h /目錄
  • 功能描述:查詢指定目錄的磁碟佔用情況,預設為當前目錄
  • 常用選項:
    • [-s] 指定目錄佔用大小彙總
    • [-h] 帶計量單位
    • [-a] 含檔案
    • [--max-depth=n] 子目錄深度
    • [-c] 列出明細的同時,增加彙總值
  • 示例:查詢 /opt 目錄的磁碟佔用情況,深度為 1

工作實用指令

  1. 統計 /home 資料夾下檔案的個數
  2. 統計 /home 資料夾下目錄的個數
  3. 統計 /home 資料夾下檔案的個數,包括子資料夾裡的
  4. 統計 /home 資料夾下目錄的個數,包括子資料夾裡的
  5. 以樹狀顯示 /home 資料夾目錄結構