1. 程式人生 > >(一)Linux實操之——權限、任務調度、磁盤分區

(一)Linux實操之——權限、任務調度、磁盤分區

完成 sql數據庫 時間 特定 myshell 任務定義 磁盤 屬於 rwx權限

1. 權限

1.1 查看權限

通過ls -l命令可以看到文件的詳細信息

技術分享圖片

下面以一條信息解釋各個位置字符的作用

-rwxr--r--. 1 root root   32 6月  18 10:15 choose.sh

(1) 0-9位說明:

  • 第0位確定文件類型(-:普通文件,d:目錄,l:軟鏈接,c:字符設備,如鍵盤、鼠標,b:塊文件,硬盤)
  • 第1-3位確定所有者(該文件的所有者)擁有該文件的權限 --User
  • 第4-6位確定所屬組(同用戶組的)擁有該文件的權限 -Group
  • 第7-9位確定其他用戶擁有該文件的權限 --Other

(2) 1

如果是文件,表示硬鏈接的數;如果是目錄,表示該目錄子目錄的個數

(3) root root

文件所有者,文件所屬組 User Group

(4) 32

文件大小,如果是目錄則是4096

(5) 6月 18 10:15

上一次的修改時間

(6) choose.sh

文件或目錄名稱

1.2 rwx權限

1.2.1 rwx權限詳解

1.2.2.1 rwx作用到文件

  • [ r ]代表可讀(read): 可以讀取,查看。
  • [ w ]代表可寫(write): 可以修改,但是不代表可以刪除該文件,刪除一個文件的前提條件是對該文件所在的目錄有寫權限,才能刪除該文件。
  • [ x ]代表可執行(execute):可以被執行。

1.2.1.2 rwx作用到目錄

  • [ r ]代表可讀(read): 可以讀取,ls 查看目錄內容。
  • [ w ]代表可寫(write): 可以修改,目錄內創建+刪除+重命名目錄。
  • [ x ]代表可執行(execute):可以進入該目錄。

1.2.2 修改權限 —— chmod

1.2.2.1 通過+,-,=變更權限

給 abc 文件 所有者讀寫執行的權限,給所在組讀執行權限,給其它組讀執行權限

[root@centoszang myDir]# chmod u=rwx,g=rx,o=rx abc
[root@centoszang myDir]#
ls -l 總用量 4 -rwxr-xr-x. 1 root root 8 6月 24 15:44 abc

給 abc 文件的所有者除去執行的權限,增加組寫的權限

[root@centoszang myDir]# chmod u-x,g+w abc
[root@centoszang myDir]# ls -l
總用量 4
-rw-rwxr-x. 1 root root 8 6月  24 15:44 abc

給 abc 文件的所有用戶添加讀的權限

[root@centoszang myDir]# chmod a+r abc
[root@centoszang myDir]# ls -l
總用量 4
-rw-rwxr-x. 1 root root 8 6月  24 15:44 abc

1.2.2 通過數字變更權限

規則:r=4 w=2 x=1

給 abc 文件 的所有者讀寫執行(r+w+x=4+2+1=7)權限,給所在組讀執行(r+w=4+1=5)權限,給其它組讀執行(r+w=4+1=5)權限

[root@centoszang myDir]# chmod 755 abc
[root@centoszang myDir]# ls -l
總用量 4
-rwxr-xr-x. 1 root root 8 6月  24 15:44 abc

1.3 修改文件所有者—— chown

修改文件abc所有者為zang

[root@centoszang myDir]# chown zang abc
[root@centoszang myDir]# ls -l
總用量 4
-rwxr-xr-x. 1 zang root 8 6月  24 15:44 abc

將 /home/testShell目錄下所有的文件和目錄的所有者都修改成 zang

[root@centoszang home]# chown -R zang testShell/
[root@centoszang home]# cd testShell/
[root@centoszang testShell]# ls -l
總用量 16
-rwxr--r--. 1 zang root   32 6月  18 10:15 choose.sh
-rw-r--r--. 1 zang root  299 6月  18 10:20 menuChoose
drwxr-xr-x. 2 zang root 4096 6月  24 15:44 myDir
-rwxr--r--. 1 zang root   37 6月  18 15:42 myShell.sh
-rw-r--r--. 1 zang root    0 6月  19 23:15 test.sh

1.4 修改用戶所在組 —— chgrp

修改文件abc所在用戶組為zang

[root@centoszang myDir]# chgrp zang /home/testShell/myDir/abc
[root@centoszang myDir]# ls -l
總用量 4
-rwxr-xr-x. 1 zang zang 8 6月  24 15:44 abc

將 /home/testShell目錄下所有的文件和目錄的所有所在組都修改成 zang

[root@centoszang home]# chgrp -R zang testShell/
[root@centoszang home]# cd testShell/
[root@centoszang testShell]# ls -l
總用量 16
-rwxr--r--. 1 zang zang   32 6月  18 10:15 choose.sh
-rw-r--r--. 1 zang zang  299 6月  18 10:20 menuChoose
drwxr-xr-x. 2 zang zang 4096 6月  24 15:44 myDir

2. 任務調度

任務調度:是指系統在某個時間執行的特定的命令或程序。

任務調度分類:

  • 系統工作:有些重要的工作周而復始的執行。如病毒掃描等
  • 個別用戶工作:個別用戶可能希望執行某些程序,如對mysql數據庫的備份

通過crontab 來進行定時任務的設置,簡單任務可以直接在crontab中添加,復雜任務則需要寫腳本,通過crontab來定時調用腳本。

2.1 任務調度命令 —— crontab [選項]

2.1.1 crontab 常用選項

crontab 常用選項如下:

  • -e:編輯crontab定時任務
  • -l:查詢crontab任務
  • -r:刪除當前用戶所有的crontab任務

2.1.2 任務調度設置步驟

1)編輯任務調度任務

[root@centoszang taskDir]# crontab -e

回車會跳出編輯vi界面,可在其中編輯簡單調度任務

*/1 * * * * ls -l /etc >> /home/taskDir/lslog.txt

2)保存退出即自動執行調度

[root@centoszang taskDir]# crontab -e
no crontab for root - using an empty one
crontab: installing new crontab
[root@centoszang taskDir]# date
2018年 06月 24日 星期日 18:32:50 CST
[root@centoszang taskDir]# ls
lslog.txt
[root@centoszang taskDir]# cat lslog.txt 
total 2480
drwxr-xr-x.  3 root root   4096 May 14  2017 abrt
drwxr-xr-x.  4 root root   4096 May 14  2017 acpi
···

另外兩個選項的使用

[root@centoszang taskDir]# crontab -l
*/1 * * * * ls -l /etc >> /home/taskDir/lslog.txt
[root@centoszang taskDir]# crontab -r
[root@centoszang taskDir]# crontab -l
no crontab for root

2.2 任務定義的參數

技術分享圖片

*/1 * * * * ls -l /etc >> /home/taskDir/lslog.txt

五個占位符的說明

技術分享圖片

占位符參數的說明

技術分享圖片

特定時間執行任務案例

技術分享圖片

2.3 任務調度調用腳本

2.3.1 每隔 1 分鐘, 將當前日期和日歷都追加到 /home/taskDir/datelog.txt 文件中

[root@centoszang taskDir]# ls
[root@centoszang taskDir]# pwd
/home/taskDir
[root@centoszang taskDir]# vim dateTask.sh
[root@centoszang taskDir]# cat dateTask.sh 
date >> /home/taskDir/datelog.txt
cal >> /home/taskDir/datelog.txt
[root@centoszang taskDir]# chmod 744 dateTask.sh 
[root@centoszang taskDir]# crontab -e
no crontab for root - using an empty one
crontab: installing new crontab
[root@centoszang taskDir]# crontab -l
*/1 * * * * /home/taskDir/dateTask.sh
[root@centoszang taskDir]# date
2018年 06月 24日 星期日 19:04:37 CST
[root@centoszang taskDir]# ls -l
總用量 8
-rw-r--r--. 1 root root 177 6月  24 19:04 datelog.txt
-rwxr--r--. 1 root root  67 6月  24 19:03 dateTask.sh
[root@centoszang taskDir]# cat datelog.txt 
Sun Jun 24 19:04:01 CST 2018
      June 2018     
Su Mo Tu We Th Fr Sa
                1  2
 3  4  5  6  7  8  9
10 11 12 13 14 15 16
17 18 19 20 21 22 23

2.3.2 每天淩晨2:00將mysql數據庫testdb,備份到文件mydb.bak

[root@centoszang taskDir]# vim backup_mysql.sh
[root@centoszang taskDir]# cat backup_mysql.sh 
/usr/local/mysql/bin/mysqldump  -uroot -p123 testdb > /tmp/mydb.bak
[root@centoszang taskDir]# chmod 744 backup_mysql.sh 
[root@centoszang taskDir]# crontab -e
crontab: installing new crontab
[root@centoszang taskDir]# crontab -l
*/1 * * * * /home/taskDir/dateTask.sh
0 2 * * *   /home/taskDir/backup_mysql.sh

3. 磁盤分區

3.1 分區類型

MBR(Master Boot Record)和GPT(GUID Partition Table)是在磁盤上存儲分區信息的兩種不同方式。這些分區信息包含了分區從哪裏開始的信息,這樣操作系統才知道哪個扇區是屬於哪個分區的,以及哪個分區是可以啟動的。在磁盤上創建分區時,你必須在MBR和GPT之間做出選擇。

兩種分區方式區別

MBR分區:

  • 最多支持四個主分區
  • 系統只能安裝在主分區
  • 擴展分區要占一個主分區
  • MBR 最大只支持 2TB,但擁有最好的兼容性

GPT分區:

  • 支持無限多個主分區(但操作系統可能限制,比如 windows 下最多 128 個分區)
  • 最大支持 18EB 的大容量(1EB=1024 PB,1PB=1024 TB
  • windows7 64 位以後支持 GTP

GPT分區方式憑借更強的健壯性與更大的兼容性,正逐步取代MBR分區方式。

3.2 硬盤說明

Linux 硬盤分為 IDE 硬盤和 SCSI 硬盤,目前基本上是 SCSI 硬盤。

  • 對於 IDE 硬盤,驅動器標識符為“hdx~”,其中“hd”表明分區所在設備的類型,這裏是指 IDE 硬盤了。“x”為盤號(a 為基本盤,b 為基本從屬盤,c 為輔助主盤,d 為輔助從屬盤),“~”代表分區,前四個分區用數字 1 到 4 表示,它們是主分區或擴展分區,從 5 開始就是邏輯分區。例,hda3 表示為第一個 IDE 硬盤上的第三個主分區或擴展分區,hdb2 表示為第二個 IDE 硬盤上的第二個主分區或擴展分區。
  • 對於 SCSI 硬盤則標識為“sdx~”,SCSI 硬盤是用“sd”來表示分區所在設備的類型的,其余則和 IDE 硬盤的表示方法一樣。

3.3 Linux分區原理

Linux 來說無論有幾個分區,分給哪一目錄使用,它歸根結底就只有一個根目錄,一個獨立且唯一的文件結構 , Linux 中每個分區都是用來組成整個文件系統的一部分。

技術分享圖片

Linux 采用了一種叫“載入”的處理方法,它的整個文件系統中包含了一整套的文件和目錄,且將一個分區和一個目錄聯系起來。這時要載入的一個分區將使它的存儲空間在一個目錄下獲得。

3.4 常用分區命令 ——lsblk

查看系統分區情況 —— lsblk

技術分享圖片

技術分享圖片

3.5 掛載 ——mount

實際工作中,當硬盤容量不夠時,可通過掛載來實現增加硬盤,從而增加系統容量。下面以本機增加一塊2GB的磁盤空間來演示。

操作步驟:

(1)在【虛擬機】菜單中,選擇【設置】,然後設備列表裏添加硬盤,然後一路【下一步】,中間只有選擇磁盤大小的地方需要修改,至到完成。

技術分享圖片

添加之後需要重啟才能識別到。

技術分享圖片

技術分享圖片

此時該磁盤未分區,也未格式化。

(2)分區

fdisk /dev/sdb

技術分享圖片

(3)格式化

mkfs -t ext4 /dev/sdb1

技術分享圖片

格式化後產生表示分區的UUID

技術分享圖片

(4)掛載

mount /dev/sdb /opt

註意:掛載後/opt目錄下的文件會被臨時刪除,所以盡量選擇創建一個新文件夾來掛載

技術分享圖片

(5)上面的方式只是臨時掛載,下次開機時不會自動掛載,要想永久掛載可對 /etc/fstab 文件進行編輯

vim /etc/fstab

技術分享圖片

增加如下一行

/dev/sdb1   /opt/newdisk    ext4    defaults        0 0

技術分享圖片

即時生效

mount -a    #將 /etc/fstab 中定義的所有檔案系統掛上

重啟之後可看到磁盤一直掛載

技術分享圖片

3.6 卸載 ——umount

卸載分區掛載

umount /opt/newdisk    #卸載分區,卸載之後,其實還可以掛載,而且數據還會在的

刪除分區 fdisk /dev/sdb ,按提示操作

fdisk /dev/sdb  
m  
d  

技術分享圖片

3.7 磁盤情況查詢 ——df & du

3.7.1 系統整體磁盤使用情況 df -h

技術分享圖片

3.7.2 查詢指定目錄的磁盤的占用情況 du -h

語法:

du [選項][文件]

僅列出較常用的選項:

  • -a:顯示目錄中個別文件的大小。
  • -c:除了顯示個別目錄或文件的大小外,同時也顯示所有目錄或文件的總和。
  • -h:以K,M,G為單位,提高信息的可讀性。
  • -s:僅顯示總計。
  • --max-depth=<目錄層數>: 超過指定層數的目錄後,予以忽略。

如:查詢 /opt 目錄的磁盤占用情況,深度為1

技術分享圖片

3.7.3 工作中查詢磁盤情況的常用指令

(1)統計/home 文件夾下文件的個數

ls -l /home | grep "^-" | wc -l

(2)統計/home 文件夾下目錄的個數

ls -l /home | grep "^d" | wc -l

(3)統計/home文件夾下文件的個數,包括子文件夾裏的

ls -lR /home | grep "^-" | wc -l

(4)統計文件夾下目錄的個數,包括子文件夾裏的

ls -lR /home | grep "^d" | wc -l

(5)以樹狀顯示目錄結構

yum install tree   #如果提示tree未安裝,執行該命令安裝
tree   #以樹狀顯示目錄結構

註:博客中註重實操,篇幅原因,未對命令進行深挖,如果對命令的理解有疑惑,可到 Linux命令大全 查詢。

(一)Linux實操之——權限、任務調度、磁盤分區