(一)Linux實操之——權限、任務調度、磁盤分區
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實操之——權限、任務調度、磁盤分區