Linux管理
1. Linux的磁盤與文件系統
? ? ? ?磁盤簡介:磁盤存儲器(magnetic disk storage),以磁盤為存儲介質的存儲器。它是利用磁記錄技術在涂有磁記錄介質的旋轉圓盤上進行數據存儲的輔助存儲器;具有存儲容量大、數據傳輸率高、存儲數據可長期保存等特點。
? ? ? ?磁盤物理組成:盤片(Platters)、軸(Spindle)、讀寫頭(Read/Write Head)、讀寫頭激勵器(Actuator)、控制器(Controller)和電路板(a printed circuit board)。
? ? ? “巨磁電阻”效應:非常弱小的磁性變化就能導致巨大電阻變化。
? ? ? ?磁盤類型:
- IDE:(Integrated Drive Electronics)集成驅動器電子的縮寫,俗稱并口;本意是指把控制器與盤體集成在一起的硬盤驅動器,是一種硬盤的傳輸接口,另一個名稱叫做ATA(Advanced Technology Attachment);具有性能價格比高、適用面廣等特點。
- SATA:(Serial ATA)俗稱串口;采用點對點的方式實現了數據的分組傳輸從而帶來更高的傳輸效率。
- SCSI:(Small Computer System Interface)具有應用范圍廣、多任務、帶寬大、CPU占用率低,以及熱插拔等優點,但較高的價格使得它很難如IDE硬盤般普及,因此SCSI硬盤主要應用于中、高端服務器和高檔工作站中。
- SAS:(Serial Attached SCSI)即串行連接SCSI,是新一代的SCSI技術。和現在流行的SATA硬盤相同,都是采用串行技術以獲得更高的傳輸速度,并通過縮短連結線改善內部空間等。SAS是并行SCSI接口之后開發出的全新接口。此接口的設計是為了改善存儲系統的效能、可用性和擴充性,并且提供與SATA硬盤的兼容性。
- FC:(Fiber Channel)光纖通道硬盤是為提高多硬盤存儲系統的速度和靈活性才開發的,它的出現大大提高了多硬盤系統的通信速度。光纖通道的主要特性有:熱插拔性、高速帶寬、遠程連接、連接設備數量大等。光纖通道是為在像服務器這樣的多硬盤系統環境而設計,能滿足高端工作站、服務器、海量存儲子網絡、外設間通過集線器、交換機和點對點連接進行雙向、串行數據通訊等系統對高數據傳輸率的要求。
- SSD:(Solid State Disk或Solid State Drive)稱作電子硬盤或者固態電子盤,是由控制單元和固態存儲單元(DRAM或FLASH芯片)組成的硬盤。固態硬盤的接口規范和定義、功能及使用方法上與普通硬盤的相同,在產品外形和尺寸上也與普通硬盤一致。由于固態硬盤沒有普通硬盤的旋轉介質,因而抗震性極佳。其芯片的工作溫度范圍很寬(-40~85℃)。目前廣泛應用于軍事、車載、工控、視頻監控、網絡監控、網絡終端、電力、醫療、航空等、導航設備等領域。目前由于成本較高,正在逐漸普及到DIY市場。
? ? ? ?存儲類型:
- 直連式存儲(Direct-AttachedStorage,簡稱DAS)依賴服務器主機操作系統進行數據的IO讀寫和存儲維護管理,數據備份和恢復要求占用服務器主機資源(包括CPU、系統IO等)。
- 網絡化存儲(Fabric-AttachedStorage,簡稱FAS)
? ? ? ?網絡化存儲根據傳輸協議又分為:
- 網絡接入存儲(Network-AttachedStorage,簡稱NAS)存儲設備通過標準的網絡拓撲結構(如以太網)添加到一群計算機上。NAS是文件級的存儲方法,重點在于幫助工作組和部門級機構解決迅速增加存儲容量的需求。如今用戶采用NAS較多的功能是用來文檔共享、圖片共享、電影共享等等,而且隨著云計算的發展,一些NAS廠商也推出了云存儲功能,大大方便了企業和個人用戶的使用。
- 存儲區域網絡(StorageAreaNetwork,簡稱SAN)通過光纖通道交換機連接存儲陣列和服務器主機,成為一個專用的存儲網絡。SAN提供了一種與現有LAN連接的簡易方法,并且通過同一物理通道支持廣泛使用的SCSI和IP協議。SAN不受現今主流的、基于SCSI存儲結構的布局限制。特別重要的是,隨著存儲容量的爆炸性增長,SAN允許企業獨立地增加它們的存儲容量。SAN的結構允許任何服務器連接到任何存儲陣列,不管數據置放在那里,服務器都可直接存取所需的數據。
2. 查看磁盤目錄與容量
? ? ? ?df:檢查文件系統的磁盤空間占用情況
? ? ? ?語法:df [-ahikHTm] [目錄或文件名]
? ? ? ?選項與參數:
- -a :列出所有的文件系統,包括系統特有的 /proc 等文件系統;
- -k :以 KBytes 的容量顯示各文件系統;
- -m :以 MBytes 的容量顯示各文件系統;
- -h :以人們較易閱讀的 GBytes, MBytes, KBytes 等格式自行顯示;
- -H :以 M=1000K 取代 M=1024K 的進位方式;
- -T :顯示文件系統類型;
- -i :不用硬盤容量,而以 inode 的數量來顯示
? ? ? ?du:查看文件和目錄磁盤使用的空間,直接到文件系統內去搜尋所有的文件數據
? ? ? ?語法:du [-ahskm] 文件或目錄名稱
? ? ? ?選項與參數:
- -a :列出所有的文件與目錄容量,因為默認僅統計目錄底下的文件量而已。
- -h :以人們較易讀的容量格式 (G/M) 顯示;
- -s :列出總量而已,而不列出每個各別的目錄占用容量;
- -S :不包括子目錄下的總計,與 -s 有點差別。
- -k :以 KBytes 列出容量顯示;
- -m :以 MBytes 列出容量顯示;
? ? ? ?ln:為某一個文件在另外一個位置建立一個同步的鏈接
? ? ? ?語法:ln [參數][源文件或目錄][目標文件或目錄]
? ? ? ?選項與參數:
- -b :刪除,覆蓋以前建立的鏈接
- -d :允許超級用戶制作目錄的硬鏈接
- -f :強制執行
- -i :交互模式,文件存在則提示用戶是否覆蓋
- -n :把符號鏈接視為一般目錄
- -s :軟鏈接(符號鏈接)
- -v :顯示詳細的處理過程
- -S :"-S<字尾備份字符串> "或 "--suffix=<字尾備份字符串>"
- -V :"-V<備份方式>"或"--version-control=<備份方式>"
- --help :顯示幫助信息
- --version :顯示版本信息
? ? ? ?fdisk:是Linux 磁盤分區表操作工具
? ? ? ?語法:fdisk [參數]
? ? ? ?必要參數:
- -l :列出素所有分區表
- -u :與"-l"搭配使用,顯示分區數目
- -s :<分區編號> 指定分區
- -v :版本信息
? ? ? ?菜單操作說明:
- m :顯示菜單和幫助信息
- a :活動分區標記/引導分區
- d :刪除分區
- l :顯示分區類型
- n :新建分區
- p :顯示分區信息
- q :退出不保存
- t :設置分區號
- v :進行分區檢查
- w :保存修改
- x :擴展應用,高級功能
3. 新增磁盤步驟
- 發現磁盤:
? ? ? ?重啟系統或在/sys下掃描SCSI:
- cd /sys/class/scsi_host
- echo "- - -" > /sys/class/scsi_host/host0/scan
? ? ? ?fdisk–l查看新加的磁盤,如果沒有則把host0換成host1或者host2嘗試一下
- 分割磁盤:
? ? ? ?創建分割槽的形式:
? ? ? ?1)1-4 號尚有剩余,且系統未有extended:此時會出現讓你挑選Primary / Extended 的項目,且你可以指定1~4 號間的號碼;
? ? ? ?2)1-4 號尚有剩余,且系統有extended:此時會出現讓你挑選Primary / Logical 的項目;若選擇p 則你還需要指定1~4 號間的號碼;若選擇l(L的小寫)?則不需要配置號碼,因為系統會自動指定邏輯分割槽的文件名號碼;
? ? ? ?3)1-4 沒有剩余,且系統有extended:此時不會讓你挑選分割槽類型,直接會進入logical 的分割槽形式。
- 格式化磁盤:
? ? ? ?mkfs:在特定的分區上建立 linux 文件系統
? ? ? ?語法:mkfs [-V] [-t fstype] [fs-options] filesys [blocks]
? ? ? ?選項與參數:
- -t :可以接文件系統格式,例如 ext3, ext2, vfat 等(系統有支持才會生效)
- device :預備檢查的硬盤分區,例如:/dev/sda1
- -V :詳細顯示模式
- -c :在制做檔案系統前,檢查該partition 是否有壞軌
- -l bad_blocks_file :將有壞軌的block資料加到 bad_blocks_file 里面
- block :給定 block 的大小
? ? ? ?超過16T硬盤分區和格式化:傳統fdisk分區不支持2T以上的磁盤分區,而parted分區可以支持;ext4格式不支持16T以上的磁盤空間分區,必須使用xfs系統類型。
? ? ? ?parted:對大容量硬盤進行分區
? ? ? ?語法:parted [選項]... [設備 [命令 [參數]...]...]
? ? ? ?選項與參數:
- -h, --help :顯示求助信息
- -i, --interactive :在必要時提示用戶
- -l, --list :顯示所有磁盤設備的分區表
- -s, --script :不進入用戶交互模式
- -v, --version :顯示版本
- -m,?--machine :打印出方便機器解析的輸出
- -a,?--alignment :對齊分區
? ? ? ?對大容量硬盤進行格式化:mkfs.xfs [設備]
| check NUMBER | 做一次簡單的文件系統檢測 |
| cp [FROM-DEVICE] FROM-NUMBER TO-NUMBER | 復制文件系統到另一個分區 |
| help [COMMAND] | 顯示所有的命令幫助 |
| mklabel,mktable LABEL-TYPE??gpt | 創建新的磁盤卷標(分區表) |
| mkfs NUMBER FS-TYPE | 在分區上建立文件系統 |
| mkpart PART-TYPE [FS-TYPE] START END | 創建一個分區 |
| mkpartfs PART-TYPE FS-TYPE START END | 創建分區,并建立文件系統 |
| move NUMBER START END | 移動分區 |
| name NUMBER NAME | 給分區命名 |
| print [devices|free|list,all|NUMBER] | 顯示分區表、活動設備、空閑空間、所有分區 |
| quit | 退出 |
| rescue START END | 修復丟失的分區 |
| resize NUMBER START END | 修改分區大小 |
| rm NUMBER | 刪除分區 |
| select DEVICE | 選擇需要編輯的設備 |
| set NUMBER FLAG STATE | 改變分區標記 |
| toggle [NUMBER [FLAG]] | 切換分區表的狀態 |
| unit UNIT | 設置默認的單位 |
| Version | 顯示版本 |
- 檢驗磁盤:
? ? ? ?fsck:用來檢查和維護不一致的文件系統
? ? ? ?語法:fsck [-t 文件系統] [-ACay] 裝置名稱
? ? ? ?選項與參數:
- -t :給定檔案系統的型式,若在 /etc/fstab 中已有定義或 kernel 本身已支援的則不需加上此參數
- -s :依序一個一個地執行 fsck 的指令來檢查
- -A :對/etc/fstab 中所有列出來的 分區(partition)做檢查
- -C :顯示完整的檢查進度
- -V :詳細顯示模式
- -R :同時有 -A 條件時,省略 / 不檢查
- -d :?打印出 e2fsck 的 debug 結果
- -p :同時有 -A 條件時,同時有多個 fsck 的檢查一起執行
- -a :如果檢查有錯則自動修復
- -r :如果檢查有錯則由使用者回答是否修復
- -y :選項指定檢測每個文件是自動輸入yes,在不確定那些是不正常的時候,可以執行 # fsck -y 全部檢查修復
- 掛載與卸除磁盤:
? ? ? ?mount:掛載Linux系統外的文件
? ? ? ?語法:mount [-t 文件系統] [-L Label名] [-o 額外選項] [-n] 裝置文件名 掛載點
? ? ? ?選項與參數:
- -V :顯示程序版本
- -h :顯示輔助訊息
- -v :顯示較訊息,通常和 -f 用來除錯。
- -a :將 /etc/fstab 中定義的所有檔案系統掛上。
- -F :這個命令通常和 -a 一起使用,它會為每一個 mount 的動作產生一個行程負責執行。在系統需要掛上大量 NFS 檔案系統時可以加快掛上的動作。
- -f :通常用在除錯的用途。它會使 mount 并不執行實際掛上的動作,而是模擬整個掛上的過程。通常會和 -v 一起使用。
- -n :一般而言,mount 在掛上后會在 /etc/mtab 中寫入一筆資料。但在系統中沒有可寫入檔案系統存在的情況下可以用這個選項取消這個動作。
- -L :將含有特定標簽的硬盤分割掛上。
- -U :將檔案分割序號為 的檔案系統掛下。-L 和 -U 必須在/proc/partition 這種檔案存在時才有意義。
- -t :指定檔案系統的型態,通常不必指定。mount 會自動選擇正確的型態。
? ? ? ?umount:卸除目前掛在Linux目錄中的文件系統
? ? ? ?語法:umount [-fn] 裝置文件名或掛載點
? ? ? ?選項與參數:
- -a :卸除/etc/mtab中記錄的所有文件系統。
- -f? :強制卸除
- -h :顯示幫助。
- -n :卸除時不要將信息存入/etc/mtab文件中。
- -r :若無法成功卸除,則嘗試以只讀的方式重新掛入文件系統。
- -t :<文件系統類型> 僅卸除選項中所指定的文件系統。
- -v :執行時顯示詳細的信息。
- -V :顯示版本信息。
? ? ? ?掛載前注意的事情:
? ? ? ?1)單一文件系統不應該被重復掛載在不同的掛載點(目錄)中
? ? ? ?2)單一目錄不應該重復掛載多個文件系統;
? ? ? ?3)要作為掛載點的目錄,理論上應該都是空目錄才是。
? ? ? ?mtab文件和 fstab文件區別:它們結構和內容基本相同,一樣在 /etc 文件下,但是不同的是,mtab文件記錄的是,當前已掛載的分區信息。
? ? ? ?1)/etc/fstab文件作用:文件/etc/fstab存放的系統啟動時需要掛載的文件系信息。系統啟動時會讀該文件,當需要啟動時掛載時,系統就自動掛載;
? ? ? ?2)/etc/mtab文件作用:動態的記錄現在系統已經掛載的文件系統,包括操作系統建立的虛擬文件等;而/etc/fstab是為系統啟動掛載文件系統準備的。每當 mount 掛載分區、umount 卸載分區,都會動態更新 mtab,mtab 總是保持著當前系統中已掛載的分區信息,fdisk、df 這類程序,必須要讀取 mtab 文件,才能獲得當前系統中的分區掛載情況。
? ? ? ?進入單人維護模式,在/目錄只有read only的狀態,需要修改/etc/fstab
- mount -n -o remount,rw /
4.?RAID陣列
? ? ? ?RAID:(Redundant Arrays of Inexpensive Disks, RAID)容錯式廉價磁盤陣列,RAID 可以透過一個軟件或硬件,將多個較小的磁盤整合成為一個較大的磁盤裝置。
? ? ? ?RAID?level:
- RAID-0 (等量模式, stripe):效能最佳
- RAID-1 (映射模式, mirror):完整備份
- RAID 0+1,RAID 1+0
- RAID 5:效能與數據備份的均衡考量
- Spare Disk:預備磁盤,在壞掉硬盤時主動重建數據系統
| 最少磁盤數 | 2 | 2 | 4 | 3 | 4 |
| 最大容錯磁盤數 | 無 | n-1 | n/2 | 1 | 2 |
| 資料安全性 | 完全沒有 | 最佳 | 最佳 | 好 | 比RAID5好 |
| 理論寫入效能 | n | 1 | n/2 | <n-1 | <n-2 |
| 理論讀出效能 | n | n | n | <n-1 | <n-2 |
| 可用容量 | n | 1 | n/2 | n-1 | n-2 |
| 一般應用 | 強調效能但資料不重要的環境 | 資料與備份 | 服務器、云系統常用 | 資料與備份 | 資料與備份 |
5. 配置軟件磁盤陣列
- 創建RAID0
? ? ? ?1)新建分區:創建RAID0 需要兩塊硬盤,所以我們拿/dev/sdb和/dev/sdc來實驗。輸入"n" 新建分區,這里我們將整個磁盤都劃分成一個分區,然后輸入"p" 查看分區情況。
? ? ? ?2)修改分區類型:默認新建分區的類型是Linux,代號83,我們需要將其修改為raid 類型。輸入"t",然后輸入"L" 列出所有的文件格式,這里選擇"fdLinux raid auto", 輸入"fd",然后再輸入"p" 查看分區情況,這是分區格式已經變成了Linux raid autodetect;輸入"w" 保存分區。
? ? ? ?3)同步分區:使用“partprobe”命令同步分區情況,保存完后查看/proc/partitions是否存在。此命令在物理機管用,在虛擬機不行,只能重啟或“partx -a /dev/sdb1 /dev/sdb”
? ? ? ?4)創建RAID0:mdadm -C /dev/md0 -ayes -l0 -n2 /dev/sd{b,c}1
? ? ? ?mdadm:用于建設、管理和監控RAID陣列
? ? ? ?語法:mdadm [mode] [options]
? ? ? ?選項與參數:
- -A, --assemble :激活啟用磁盤陣列
- -C, --create :創建一個新陣列
- -D, --detail :打印陣列設備的詳細信息
- -G, --grow :改變陣列的大小或形態
- -v, --verbose :顯示詳細信息
- -f, --fail :將設備狀態定為故障
- -s, --scan :掃描配置文件或 /proc/mdstat以搜尋丟失的信息。配置文件/etc/mdadm.conf
- -c, --chunk= :設定陣列的塊chunk大小,單位為KB
- -a, --add :添加設備到陣列
- -x, --spare-devices= :指定初始陣列的備用盤數目
- -n, --raid-devices= :指定陣列成員數目,這個數目只能由 --grow 修改
- -l, --level= :設定磁盤陣列級別
- -r,?--remove : 移除設備
- --auto=yes :自動為其創建設備文件
- -S, --stop?:停用磁盤陣列
? ? ? ?5)查看RAID0狀態:cat /proc/mdstat; mdadm -D /dev/md0
? ? ? ?6)創建配置文件/etc/mdadm.conf:mdadm --detail --scan --verbose >>/etc/mdadm.conf
? ? ? ?7)格式化磁盤陣列:mkfs.ext4 /dev/md0
? ? ? ?8)建立掛載點并掛載:mkdir /mnt/raid0; mount /dev/md0 /mnt/raid0
? ? ? ?9)開機掛載:vi?/etc/fstab
- 創建RAID1
? ? ? ?和創建raid0類似,我們拿/dev/sdd和/dev/sde這兩塊硬盤來做演示。重復創建raid0前三個步驟。
? ? ? ?4)創建RAID1:mdadm -C /dev/md1 -ayes -l1 -n2 /dev/sd[d,e]1
? ? ? ?5)查看RAID1狀態:cat /proc/mdstat; mdadm -D /dev/md1
? ? ? ?6)創建配置文件/etc/mdadm.conf:mdadm --detail --scan --verbose >>/etc/mdadm.conf
? ? ? ?7)格式化磁盤陣列:mkfs.ext4 /dev/md1
? ? ? ?8)建立掛載點并掛載:mkdir /mnt/raid1; mount /dev/md1?/mnt/raid1
? ? ? ?9)開機掛載:vi?/etc/fstab
- 創建RAID10
? ? ? ?raid10就是由兩個raid1組成raid0的級別,raid0、raid1各需要兩塊磁盤,所以創建raid10就需要四塊磁盤。重復創建raid0前三個步驟。
? ? ? ?4)創建2個raid1:mdadm -C /dev/md3?-ayes -l1 -n2 /dev/sd[f,g]1; mdadm -C /dev/md4 -a yes -l1 -n2 /dev/sd{h,i}1
? ? ? ?5)創建raid0:mdadm -C /dev/md10?-ayes -l0 -n2 /dev/md{3,4}
? ? ? ?或以上2步驟化簡為:mdadm -C /dev/md10 -ayes -l10 -n4 /dev/sd{f,g,h,i}1
? ? ? ?6)查看RAID10狀態:cat /proc/mdstat; mdadm -D /dev/md10
? ? ? ?7)創建配置文件/etc/mdadm.conf:mdadm -Dsv >/etc/mdadm.conf
? ? ? ?8)格式化磁盤陣列:mkfs -t xfs -f /dev/md10?
? ? ? ?9)建立掛載點并掛載:mkdir /mnt/raid10; mount /dev/md10 /mnt/raid10
? ? ? ?10)開機掛載:vi?/etc/fstab
- 創建RAID5
? ? ? ?RAID5 至少需要三塊硬盤,我們拿/dev/sdf, /dev/sdg, /dev/sdh, /dev/sdi這四塊硬盤來做實驗,三塊做為活動盤,另一塊做為熱備盤。重復創建raid0前三個步驟。
? ? ? ?4)創建RAID5:mdadm -C /dev/md5 -ayes -l5 –n3 -x1 /dev/sd[j,k,l,m]1
? ? ? ?5)查看raid5 狀態:cat /proc/mdstat;?mdadm -D /dev/md5
? ? ? ?6)創建配置文件/etc/mdadm.conf:mdadm --detail --scan --verbose >>/etc/mdadm.conf
? ? ? ?7)格式化磁盤陣列:mkfs.ext4 /dev/md5
? ? ? ?8)建立掛載點并掛載:mkdir /mnt/raid5; mount /dev/md0 /mnt/raid5
? ? ? ?9)開機掛載:vi?/etc/fstab
- raid5維護
? ? ? ?1)模擬磁盤損壞:mdadm /dev/md5 -f /dev/sdm1
? ? ? ?2)查看重建狀態:cat /proc/mdstat;?mdadm -D /dev/md5
? ? ? ?3)移除損壞磁盤:mdadm /dev/md5 -r /dev/sdm1
? ? ? ?4)再次查看狀態:cat /proc/mdstat;?mdadm -D /dev/md5
? ? ? ?5)新加熱備磁盤:mdadm /dev/md5 -a /dev/sdm1
? ? ? ?6)再次查看狀態:cat /proc/mdstat;?mdadm -D /dev/md5
- 向RAID5增加存儲硬盤
? ? ? ?4)新加硬盤:mdadm /dev/md5 -a /dev/sdn1
? ? ? ?5)查看raid5 狀態:cat /proc/mdstat;?mdadm -D /dev/md5
? ? ? ?6)熱備盤轉換成活動盤:mdadm -G /dev/md5 -n4
? ? ? ?7)擴容文件系統:resize2fs /dev/md5;?df -TH
? ? ? ?8)創建配置文件/etc/mdadm.conf:mdadm --detail --scan --verbose >>/etc/mdadm.conf
- 刪除軟件磁盤陣列
? ? ? ?1)卸載陣列:umount?/dev/md0
? ? ? ?2)停止RAID陣列:
- mdadm --stop /dev/md0
- mdadm --misc --zero-superblock /dev/sdb
- mdadm --misc --zero-superblock /dev/sdc
? ? ? ?3)防止開機啟動RAID:把該設備相關的配置信息刪除 vim /etc/mdadm.conf;刪除開機啟動信息 vim /etc/fstab
4.?LVM卷管理
? ? ? ? LVM:(Logical Volume Manager)邏輯盤卷管理的簡稱,它是Linux環境下對磁盤分區進行管理的一種機制,LVM是建立在硬盤和分區之上的一個邏輯層,來提高磁盤分區管理的靈活性。、
? ? ? ?工作原理:通過將底層的物理硬盤抽象的封裝起來,然后以邏輯卷的方式呈現給上層應用。
? ? ? ?邏輯卷管理:
- PV(Physical Volume)物理卷,在邏輯卷管理中處于最底層,它可以是實際物理硬盤上的分區,也可以是整個物理硬盤,也可以是raid設備。
- VG(VolumneGroup)卷組,建立在物理卷之上,一個卷組中至少要包括一個物理卷,在卷組建立之后可動態添加物理卷到卷組中。一個邏輯卷管理系統工程中可以只有一個卷組,也可以擁有多個卷組。
- LV(Logical Volume)邏輯卷,建立在卷組之上,卷組中的未分配空間可以用于建立新的邏輯卷,邏輯卷建立后可以動態地擴展和縮小空間。系統中的多個邏輯卷可以屬于同一個卷組,也可以屬于不同的多個卷組。
- PE(Physical Extent)物理塊。整個LVM 最小的儲存區塊,數據資料都是由寫入PE 來處理的。
5.?卷管理操作?
? ? ? ?我們將模擬raid5、分區、物理硬盤三種類型設備創建VG,raid5需要四塊硬盤,分區和物理硬盤各一塊硬盤,還有擴容時需要至少一塊硬盤,所以在虛擬機里添加八塊硬盤,每塊5GB.
- 創建LVM
? ? ? ?1)安裝LVM管理工具
? ? ? ?檢查系統中是否安裝了LVM管理工具:rpm -qa | grep lvm
? ? ? ?如果未安裝,則使用yum 方式安裝:yum install lvm*;?rpm -qa | grep lvm
? ? ? ?2)新建raid5設備:使用/dev/sdb, /dev/sdc, /dev/sdd, /dev/sde四塊物理硬盤做軟raid模擬。重復創建raid0前三個步驟。
- mdadm-C /dev/md5 -ayes -l5 -n3 –x1 /dev/sd[b,c,d,e]
? ? ? ?3)創建配置文件/etc/mdadm.conf:mdadm -Dsv >/etc/mdadm.conf
? ? ? ?4)新建分區:使用/dev/sdf硬盤進行分割和格式化為/dev/sdf1
? ? ? ?5)創建PV:pvcreate /dev/md5 /dev/sdf1 /dev/sdg
? ? ? ?6)查看PV:pvdisplay;?pvs;?pvscan
? ? ? ?7)創建VG:vgcreate vg0 /dev/md5 /dev/sdf1 /dev/sdg
? ? ? ?8)查看VG:vgdisplay; vgs; vgscan
? ? ? ?9)創建LV:lvcreate -L 5G -n lv1 vg0
? ? ? ?10)查看LV:lvdisplay
? ? ? ?11)再看VG:vgs
? ? ? ?12)格式化LV:mkfs.ext4 /dev/vg0/lv1
? ? ? ?13)掛載LV:mkdir/mnt/lv1; mount /dev/vg0/lv1 /mnt/lv1/; df -TH
? ? ? ?14)開機掛載:vi?/etc/fstab
- 擴容LVM
? ? ? ?1)查看vg0:vgs
? ? ? ?2)擴容lv1:lvextend -L +1G /dev/vg0/lv1
? ? ? ?3)查看lv1:lvs
? ? ? ?4)擴容文件系統:resize2fs /dev/vg0/lv1;?df -TH
? ? ? ?5)擴容VG:pvcreate /dev/sdh; vgextend vg0 /dev/sdh
? ? ? ?或 mdadm /dev/md5 -a /dev/sdj1; mdadm -G /dev/md5 -n4; pvresize /dev/md5
- 縮減LVM
? ? ? ?1)卸載掛載點:umount /mnt/lv1/
? ? ? ?2)縮減文件系統:resize2fs /dev/vg0/lv1 4G
? ? ? ?3)檢查磁盤:e2fsck -f /dev/vg0/lv1
? ? ? ?4)再次執行縮減:resize2fs /dev/vg0/lv1 4G
? ? ? ?5)縮減LV:lvreduce /dev/vg0/lv1 -L 4G? (縮減到的大小)
? ? ? ?6)掛載查看:mount /dev/vg0/lv1 /mnt/lv1; df -TH
? ? ? ?7)卸載掛載點:umount /mnt/lv1/
? ? ? ?8)查看PV:pvs
? ? ? ?9)移除硬盤:vgreduce vg0 /dev/sdg
? ? ? ?10)查看vg0:vgs
- 刪除LVM
? ? ? ?1)卸載掛載點:umount /mnt/lv1/
? ? ? ?2)移除LV:lvremove /dev/vg0/lv1
? ? ? ?3)移除VG:vgremove vg0; vgs
? ? ? ?4)移除PV:pvremove /dev/md5 /dev/sdf1 /dev/sdg /dev/sdh
- LVM快照
? ? ? ?snapshot:快照就是將當時的系統信息記錄下來,就好像照相一樣,未來若有任何資料變動了,則原始資料會被移動到快照區,沒有被改動的區域則由快照區與檔案系統共享。
? ? ? ?1)建立LV:lvcreate -L 100M -n lv2?vg0
? ? ? ?2)格式化LV:mkfs.ext4 /dev/vg0/lv2
? ? ? ?3)掛載LV:mkdir?/mnt/lv2;?mount /dev/vg0/lv2 /mnt/lv2? ?(對 /mnt/lv2 掛載點寫入測試數據)
? ? ? ?4)創建快照:lvcreate -L 80M -s -n lv2snap /dev/vg0/lv2
? ? ? ?5)查看快照:lvdisplay
? ? ? ?6)掛載查看:mkdir /mnt/snapshot; mount /dev/vg0/lv2snap /mnt/snapshot? ?(對 /mnt/lv2 掛載點文檔進行修改操作)
? ? ? ?7)打包備份:cd?/mnt/snapshot; tar cjf /tmp/lvm.tar.bz2 *
? ? ? ?8)卸載并移除snapshot:umount /mnt/snapshot; lvremove /dev/vg0/lv2snap
? ? ? ?9)卸載并格式化/mnt/lv1:umount /mnt/lv2; mkfs.ext4 /dev/vg0/lv2
? ? ? ?10)恢復數據:mount /dev/vg0/lv2 /mnt/lv2; tar xjf /tmp/lvm.tar.bz2? -C /mnt/lv2
? ? ? ?11)查看掛載:ll /mnt/lv2/
6.?進程管理
? ? ? ?進程:是正在執行的一個程序或命令,每一個進程都是一個運行的實體,都有自己的地址空間,并占用一定的系統資源。
? ? ? ?進程和程序區別:
- 程序是靜態概念,本身作為一種軟件資源長期保存;而進程是程序的執行過程的動態概念,具有一定的生命期,是動態產生和消亡的。
- 程序和進程無對應關系。一個程序可以由多個進程公用;另一方面,一個進程在活動中有可順序地執行若干個程序。
? ? ? ?ps:顯示當前進程的狀態
? ? ? ?語法:ps [options] [--help]
? ? ? ?選項與參數:
- -w :顯示加寬可以顯示較多的資訊
- -C :指定顯示的進程名
- -au :顯示較詳細的資訊
- -aux :顯示所有包含其他使用者的行程
- au(x) :使用BSD操作系統格式顯示系統中所有進程
- -e :顯示所有進程,環境變量
- -f :顯示程序間的關系,全格式輸出
- -o :指定顯示列名
- -h :不顯示標題
- -l :長格式輸出
- -a :顯示終端上地所有進程,包括其他用戶地進程
- -r :只顯示正在運行地進程
- -x :顯示沒有控制終端地進程
- -u :以用戶為主的格式來顯示程序狀況
- --lines<行數> :每頁顯示的行數
- --width<字符數> :每頁顯示的字符數
- --help :顯示幫助信息
- --version :顯示版本顯示
? ? ? ?ps配合watch使用,每秒中進行刷新顯示:
- watch -n 1 'ps -u root u --sort -pcpu -pmem | head -n 10'
? ? ? ?pstree:以樹狀圖的方式展現進程之間的派生關系
? ? ? ?語法:pstree [選項]
? ? ? ?選項與參數:
- -a :顯示每個程序的完整指令,包含路徑,參數或是常駐服務的標示;
- -c :不使用精簡標示法;
- -G :使用VT100終端機的列繪圖字符;
- -h :列出樹狀圖時,特別標明現在執行的程序;
- -H<程序識別碼> :此參數的效果和指定"-h"參數類似,但特別標明指定的程序;
- -l :采用長列格式顯示樹狀圖;
- -n :用程序識別碼排序。預設是以程序名稱來排序;
- -p :顯示每個進程的PID
- -u :顯示每個進程的所屬賬號名稱
- -U :使用UTF-8列繪圖字符;
- -V :顯示版本信息。
- -A :各進程樹之間的連接以ASCII碼字符來連接
? ? ? ?top:實時顯示進程的動態
? ? ? ?語法:top [選項]
? ? ? ?選項與參數:
- -d :指定每兩次屏幕信息刷新之間的時間間隔。當然用戶可以使用s交互命令來改變之
- -p :通過指定監控進程ID來僅僅監控某個進程的狀態
- -q :沒有任何延遲的進行刷新
- -S :指定累計模式
- -s :使top命令在安全模式中運行,去除交互命令所帶來的潛在危險
- -i :使top不顯示任何閑置或者僵死進程
- -c :顯示整個命令行而不只是顯示命令名
- -n :更新的次數,完成后將會退出 top
- -b :批處理模式顯示程序信息
? ? ? ?交互式命令:
- K :終止一個進程。系統將提示用戶輸入需要終止的進程PID,以及需要發送給該進程什么樣的信號。一般的終止進程可以使用15信號;如果不能正常結束那就使用信號9強制結束該進程。默認值是信號15
- i :忽略閑置和僵死進程
- q :退出程序
- s :改變兩次刷新之間的延遲時間
- M :根據駐留內存大小進行排序
- P :根據CPU使用百分比大小進行排序
- T :根據時間/累計時間進行排序
- W :將當前設置寫入~/.toprc文件中
- x :打開/關閉排序列的加亮效果,通過”shift + >”或”shift + <”可以向右或左改變排序列
- r :重新安排一個進程的優先級別。系統提示用戶輸入需要改變的進程PID以及需要設置的進程優先級值。輸入一個正值將使優先級降低,反之則可以使該進程擁有更高的優先權。默認值是10
- S :切換到累計模式
- f或F :從當前顯示中添加或者刪除項目
- o或O :改變顯示項目的順序
- l :切換顯示平均負載和啟動時間信息
- m :切換顯示內存信息
- t :切換顯示進程和CPU狀態信息
- c :切換顯示命令名稱和完整命令行
? ? ? ?pidof:查找指定名稱的進程的進程號id號
? ? ? ?語法:pidof [option]?[command]?
? ? ? ?選項與參數:
- -s :僅返回一個進程號
- -c :僅顯示具有相同“root”目錄的進程
- -x :顯示由腳本開啟的進程
- -o :指定不顯示的進程ID
? ? ? ?nice:指定程序的運行優先級
? ? ? ?語法:nice [option]?[command]?
? ? ? ?選項與參數:
- -n,--adjustment= :指定優先級
- --help :顯示求助訊息
- --version :顯示版本資訊
? ? ? ?renice:改變一個或多個行程的優先級
? ? ? ?語法:renice priority [[-p] pid ...] [[-g] pgrp ...] [[-u] user ...]
? ? ? ?選項與參數:
- -n,--priority <priority> :指定標識符的計劃優先級
- -g,--pgrp <pgid> :標識符指定為進程組ID
- -u,--user <name_or_uid> :標識符指定為用戶名或用戶ID
- -p,--pid <pid> :標識符指定為進程ID(默認)
- -h,--help :顯示幫助信息
- -V,--version :顯示版本信息
? ? ? ?killall:殺死指定進程名
? ? ? ?語法:kill [參數] [進程號]
? ? ? ?選項與參數:
- -a :當處理當前進程時,不限制命令名和進程號的對應關系
- -Z :只殺死擁有scontext的進程
- -e :要求匹配進程名稱
- -I :忽略小寫
- -g :殺死進程組(不是進程)
- -i :殺死進程前會先詢問用戶
- -l :列出所有的已知信號名稱
- -q :禁止輸出警告信息
- -s :發送指定的信號
- -v :顯示報告信號是否成功發送
- -w :等待進程死亡
- -u :指定用戶
- --version :顯示版本顯示
? ? ? ?kill:刪除執行中的程序或工作
? ? ? ?語法:kill [參數] [進程id]
? ? ? ?選項與參數:
- -l :列出全部的信號名稱
- -a :當處理當前進程時,不限制命令名和進程號的對應關系
- -p :指定kill 命令只打印相關進程的進程號,而不發送任何信號
- -s :指定發送信號
- -u :指定用戶
| 1 | SIGHUP | 該信號讓進程立即關閉.然后重新讀取配置文件之后重啟 |
| 2 | SIGINT | 程序中止信號,用于中止前臺進程。相當于輸出 Ctrl+C 快捷鍵 |
| 8 | SIGFPE | 在發生致命的算術運算錯誤時發出。不僅包括浮點運算錯誤,還包括溢出及除數為 0 等其他所有的算術運算錯誤 |
| 9 | SIGKILL | 用來立即結束程序的運行。本信號不能被阻塞、處理和忽略。般用于強制中止進程 |
| 14 | SIGALRM | 時鐘定時信號,計算的是實際的時間或時鐘時間。alarm 函數使用該信號 |
| 15 | SIGTERM | 正常結束進程的信號,kill 命令的默認信號。如果進程已經發生了問題,那么這 個信號是無法正常中止進程的,這時我們才會嘗試 SIGKILL 信號,也就是信號 9 |
| 18 | SIGCONT | 該信號可以讓暫停的進程恢復執行。本信號不能被阻斷 |
| 19 | SIGSTOP | 該信號可以暫停前臺進程,相當于輸入 Ctrl+Z 快捷鍵。本信號不能被阻斷 |
? ? ? ?pkill:控制同名程序的所有進程
? ? ? ?語法:pkill [選項] [信號] 進程名
? ? ? ?選項與參數:
- -f :顯示完整程序
- -l :顯示源代碼
- -n :顯示新程序
- -o :顯示舊程序
- -v :與條件不符合的程序
- -x :與條件符合的程序
- -p<進程號> :列出父進程為用戶指定進程的進程信息
- -t<終端> :指定終端下的所有程序
- -u<用戶> :指定用戶的程序
? ? ? ?pgrep:查看當前正在運行的進程
? ? ? ?語法:pgrep [選項] 進程名
? ? ? ?選項與參數:
- -o :僅顯示找到的最小(起始)進程號
- -n :僅顯示找到的最大(結束)進程號
- -l :顯示進程名稱
- -P :指定父進程號
- -g :指定進程組
- -t :指定開啟進程的終端
- -u :指定進程的有效用戶ID
? ? ? ?w:顯示目前登入系統的用戶信息
? ? ? ?語法:w [選項]?[用戶名]
? ? ? ?選項與參數:
- -f :開啟或關閉顯示用戶從何處登入系統。
- -h :不顯示各欄位的標題信息列。
- -l :使用詳細格式列表,此為預設值。
- -s :使用簡潔格式列表,不顯示用戶登入時間,終端機階段作業和程序所耗費的CPU時間。
- -u :忽略執行程序的名稱,以及該程序耗費CPU時間的信息。
- -V :顯示版本信息。
7.?計劃任務
? ? ? ?at:一次性計劃任務,在某一固定的時間執行特定命令
? ? ? ?語法:at [選項] [時間參數]?
? ? ? ?選項與參數:? ? ? ?
- -m :當計劃任務執行結束后發郵件給客戶
- -l :查看用戶計劃任務
- -d :刪除用戶計劃任務
- -c :查看at計劃任務的具體內容
- -f /path/from/somefile :從指定文件中讀取任務,不用交互式輸入
? ? ? ?TIME格式:
- HH:MM :在今日的某時某分進行,若該時刻已過,則明天此時執行任務
- HH:MM YYYY-MM-DD :規定在某年某月的某一天的特殊時刻進行該項任務
- HH:MM [am|pm] [Month] [Date] :強調在某年某月某日的某時刻進行
- tomorrow,noon,midnight, teatime :明天、中午、午夜、下午茶時間
- HH:MM [am|pm] + number [minutes|hours|days|weeks] :在某個時間點再加幾個時間后才進行任務
- now+#{minutes,hours,days,or weeks} :現在之后的多久執行任務
? ? ? ?atd服務暫時啟動:systemctl start atd; service atd restart
? ? ? ?atd服務開機啟動:systemctl enable atd;?chkconfig --level 345 atd on
? ? ? ?chkconfig:更新(啟動或停止)和查詢系統服務的運行級信息? ? ?
? ? ? ?語法:chkconfig [--add] [--del] [--list] [系統服務] 或 chkconfig [--level <等級代號>] [系統服務] [on/off/reset]??
? ? ? ?選項與參數:?
- --add :增加所指定的系統服務,讓chkconfig指令得以管理它,并同時在系統啟動的敘述文件內增加相關數據
- --del :刪除所指定的系統服務,不再由chkconfig指令管理,并同時在系統啟動的敘述文件內刪除相關數據
- --list [name] :顯示所有運行級系統服務的運行狀態信息(on或off)。如果指定了name,那么只顯示指定的服務在不同運行級的狀態
- --level<等級代號> :指定系統服務要在哪一個執行等級中開啟或關畢
- ???等級0:表示關機
- ? ?等級1:單用戶模式
- ???等級2:無網絡連接的多用戶命令行模式
- ???等級3:有網絡連接的多用戶命令行模式
- ? ?等級4:不可用
- ? ?等級5:帶圖形界面的多用戶模式
- ? ?等級6:重新啟動
? ? ? ?需要說明的是,level選項可以指定要查看的運行級而不一定是當前運行級。對于每個運行級,只能有一個啟動腳本或者停止腳本。當切換運行級時,init不會重新啟動已經啟動的服務,也不會再次去停止已經停止的服務。
? ? ? ?crontab:周期性計劃任務,定期執行程序命令
? ? ? ?語法:crontab [-u user] [-l | -r | -e] [-i]? ? ? ? ? ? ? ? ? ?
? ? ? ?選項與參數:?
- -u :指定計劃任務的用戶,默認為當前用戶
- -l :查看計劃任務·
- -r :刪除計劃任務
- -e :編輯計劃任務
- -i :刪除時提示是否確認
? ? ? ?crontab服務暫時啟動:systemctl start crond;?systemctl status crond;?service cron?start;?service?crond?status
? ? ? ?crontab服務開機啟動:systemctl enable crond;?chkconfig –level 345 crond on
? ? ? ?分鐘? ? ? 小時? ? ? ? 日? ? ? ? ?月? ? ? ?星期? ? ? ? ?命令
? ? ? ?0-59? ? ? 0-23? ? ? 1-31? ? ? 1-12? ? ? 0-7? ? ? command? ?(取值范圍,0和7表示周日,周與日月不可同時并存)
? ? ? ?使用以下特殊字符:
- 星號(*):代表取值范圍內的數字
- 逗號(,):代表分隔時段
- 中杠(-):指定時間范圍
- 正斜線(/n):指定時間的間隔頻率
? ? ? ?at控制文件分別為 /etc/at.allow; /etc/at.deny
? ? ? ?crontab控制文件分別為?/etc/cron.allow; /etc/cron.deny
- 只有allow時,只允許allow用戶添加計劃
- allow與deny共存時,只允許allow中的用戶添加
- 只有deny時,除deny中的用戶都可添加
? ? ? ?crontab不執行問題總結
- crond服務未啟動:crontab不是Linux內核的功能,而是依賴crond服務,這個服務可以啟動當然也可以停止。如果停止了就無法執行任何定時任務了,解決的方法是啟動服務:/etc/init.d/crond restart
- 權限問題:(如:腳本沒有x執行權限,解決方法:增加執行權限,或者用?/bin/bash abc.sh的方法執行)
- 路徑問題:有的命令在shell中執行正常,但是在crontab執行卻總是失敗。有可能是因為crontab沒有使用絕對路徑
- 身份問題:在系統配置文件/etc/crontab里面,使用者自己的crontab并不需要指定身份,但/etc/crontab里面要指定身份!系統默認的例行性工作是以root的身份來進行的;“run-parts”后接目錄參數,將會運行此目錄中的每個腳本;如果去掉”run-parts”這個參數的話,后面可接運行的某個腳本名,而不是文件名
8. 日志管理
? ? ? ?日志:記錄系統活動信息文件
? ? ? ?重要性:日志文件對于診斷和解決系統中的問題很有幫助,因為在Linux系統中運行的程序通常會把系統消息和錯誤消息寫入相應的日志文件,這樣系統一旦出現問題就會“有據可查”。此外,當主機遭受攻擊時,日志文件還可以幫助尋找攻擊者留下的痕跡.
? ? ? ?常見日志文件:
- /var/log/messages :記錄Linux內核消息及各種應用程序的公共日志信息,包括啟動、IO錯誤、網絡錯誤、程序錯誤等。對于未使用獨立日志文件的應用程序或服務,一般都可以從該日志文件中獲得相關的事件記錄信息。
- /var/log/cron :記錄crond計劃任務產生的事件信息。
- /var/log/dmesg :記錄系統在啟動的時候核心偵測過程所產生的各項信息。
- /var/log/maillog :記錄進入或發出系統的電子郵件活動。
- /var/log/lastlog :最近幾次成功登錄事件和最后一次不成功登錄事件。
- /var/log/rpmpkgs :記錄系統中安裝的各rpm包列表信息。
- /var/log/secure :記錄用戶登錄認證過程中的事件信息。
- /var/log/wtmp :記錄每個用戶登錄、注銷及系統啟動和停機事件。
- /var/run/utmp :記錄當前登錄的每個用戶的詳細信息。
? ? ? ?日志格式:
- 事件發生的日期與時間
- 發生此事件的主機名稱
- 啟動此事件的服務名稱
- 該信息的實際數據內容
? ? ? ?日志級別:
- (EMERG)緊急:系統不可用
- (ALERT)警告:必須馬上采取措施
- (CRIT)嚴重:比較嚴重的錯誤
- (ERR)錯誤:軟件運行出現錯誤
- (WARNING)提醒:可能影響系統功能,給出用戶提醒
- (NOTICE)注意:不會影響系統功能,給出用戶提醒
- (INFO)信息:一般信息
- (DEBUG)調試:程序或系統調試信息
? ? ? ?日志類型:
- auth :認證相關
- authpriv :安全權限相關的日志
- cron :系統定期執行計劃任務時產生的日志
- damon :和各個守護進程相關的日志
- kern :內核相關日志
- lpr :打印服務相關日志
- mail :郵件收發日志
- mark :產生時間戳
- news :網絡新聞協議產生的日志
- syslog :記錄rsyslog服務產生的日志
- user :用戶程序產生的相關信息
- uucp :UUCP子系統的日志信息
- local0 through local7 :默認歸類的日志,留給本地用戶開發測試使用
? ? ? ?連接符號:
- “*”:代表所有日志等級
- “.”:代表只要比后面的等級高的(包含該等級)日志都記錄下來
- “.=”:代表只記錄所需等級的日志,其他等級的都不記錄
- “.!”:代表不等于,也就是除了該等級的日志外,其他等級的日志都記錄
? ? ? ?logger:通過shell命令接口使用Syslog的系統日志模塊
? ? ? ?語法:logger [options] [messages]
? ? ? ?選項與參數:?
- -d, --udp :使用數據報(UDP)而不是使用默認的流連接(TCP)
- -i, --id :逐行記錄每一次logger的進程ID
- -f, --file file_name :記錄特定的文件
- -h, --help :顯示幫助文本并退出
- -n,?--server :寫入指定遠程syslog服務器,使用UDP代替內裝式syslog的例程
- -P, --port port_num :使用指定的UDP端口。默認的端口號是514
- -p, --priority priority_level :指定輸入消息的優先級,優先級可以是數字或者指定為 "facility.level" 的格式
- -s,?--stderr :輸出標準錯誤到系統日志。
- -t,?--tag tag :指定標記記錄
- -u,?--socket socket :寫入指定的socket,而不是到內置系統日志例程。
- -V,?--version :現實版本信息并退出
- **messages :**寫入log文件的內容消息,可以與-f配合使用。
- ^ :后跟可執行腳本或程序的絕對路徑
9. 遠程日志同步
- 關閉防火墻和selinux
? ? ? ?清空防火墻規則:/etc/init.d/iptables stop;
? ? ? ?臨時關閉Sselinux:setenforce 0; getenforce?
? ? ? ?開機關閉selinux:vi?/etc/selinux/config,將SELINUX的值設置為disabled
? ? ? ?臨時關閉防火墻:systemctl stop firewalld;?systemctl status firewalld;?service iptables stop;?service iptables status
? ? ? ?開機自關閉防火墻:systemctl disable firewalld.service;?chkconfig iptables off
- 部署服務端
? ? ? ?1)打開TCP端口:vim /etc/rsylog.conf? ? ?
? ? ? ?$ModLoad imtcp?
? ? ? ?$InputTCPServerRun 514
? ? ? ?@表示udp協議發送,@@表示tcp協議發送
? ? ? ?2)編寫配置文件:在GLOBAL DIRECTIVE塊前追加以下三行
? ? ? ?#按照主機名區分目錄
- $template RemoteLogs,"/var/log/%HOSTNAME%/%PROGRAMNAME%.log" *
- *.* ?RemoteLogs
- & ~
? ? ? ?#按照ip地址區分目錄
- $template RemoteLogs,"/var/log/%fromhost-ip%/%fromhost-ip%_%$YEAR%-%$MONTH%-%$DAY%.log" *
- *.* ?RemoteLogs
- & ~
? ? ? ?3)重啟服務:systemctl? restart? rsyslog; service rsyslog restart
- 部署客戶端
? ? ? ?1)編輯配置文件:vim /etc/rsylog.conf
? ? ? ?2)重啟服務:systemctl? restart? rsyslog; service rsyslog restart
? ? ? ?cron.*? @@192.168.12.40:514?
? ? ? ?3)執行任務:crontab -e
? ? ? ?*/1 * * * * echo “nihao”>>/tmp/file.log
- 驗證配置
? ? ? ?客戶端查看:tail -f /var/log/cron
? ? ? ?服務端查看:tail -f /var/log/['hostname']/CROND.log? or? tail -f /var/log/[‘address’]/['address_date'].log
10. 日志輪替
? ? ? ?logrotate的配置文件:/etc/logrotate.conf;?/etc/logrotate.d/,logrotate.conf是主要參數文件,logrotate.d目錄里面的所有文件都會被主動讀入/etc/logrotate.conf當中來進行!另外在/etc/logrotate.d/文件中,如果沒有規定到的細部配置,則以/etc/logrotate.conf文件的規定來指定默認值。
? ? ? ?logrotate:管理記錄文件
? ? ? ?語法:logrotate [-vf] logfile
? ? ? ?選項與參數:
- -v,?--version :顯示日志輪替過程
- -f,?--force :強制進行日志輪替。不管日志輪替的條件是否已經符合,強制配置文件中所有的日志進行輪替
- -d, --debug :以預演方式運行logrotate,模擬演練日志輪循并顯示其輸出,便于排錯或了解程序執行的情況
- -s<狀態文件>, --state=<狀態文件> :使用指定的狀態文件
| daily | 指定轉儲周期為每天 |
| weekly | 指定轉儲周期為每周 |
| monthly | 指定轉儲周期為每月 |
| create mode owner group | 在輪替動作之后,postrotate腳本執行之前,立即使用剛輪替的日志文件名創建日志文件。MODE 指定日志文件的權限(0660之類),OWNER 指定日志文件的屬主,GROUP 指定日志文件的屬組 |
| rotate count | 輪替最多保留之前的數據幾次,超出的將被刪除或郵件接收,設0則不保存 |
| compress | 通過gzip壓縮轉儲以后的日志 |
| ? ? ?nocompress | 不需要壓縮轉儲 |
| ? nodelaycompress | 轉儲同時壓縮 |
| delaycompress | 指示logrotate不要將最近的歸檔壓縮,壓縮將在下一次輪循周期進行 |
| dateext | 使用日期作為日志輪替文件的后綴 |
| start count | 輪替文件名基于這個數字 |
| missingok | 如果日志不存在,則忽略該日志的警告信息 |
| sharedscripts | 在此關鍵字之后的腳本只執行一次 |
| minsize | 大小日志輪替的最小值。日志達到最小值才會輪替,否則就算時間達到也不輪替 |
| size Size | 當日志增長到指定大小的時候開始輪替,Size 可以指定 bytes(缺省)以及KB(sizek)或者MB (sizem) |
| nomail | 不發送郵件到任何地址 |
| mail address | 將輪替后的文件發送到指定E-mail地址 |
| ? ? ? ? ?errors address | 專儲時的錯誤信息發送到指定的Email 地址 |
| mailfirst/maillast | 向郵件發送輪替文件/輪替后歷史文件,默認 |
| notifempty | 若日志為空文件,則不進行日志輪替 |
| ifempty | 即使日志文件是空的也輪替 |
| ? noolddir | 轉儲后的日志文件和當前日志文件放在同一個目錄下,默認 |
| olddir directory | 輪替后日志文件放入指定的目錄,必須和當前日志文件在同一個文件系統 |
| copytruncate | 用于還在打開中的日志文件,把當前日志備份并截斷,開始輪替 |
| postrotate/endscript | 在日志輪替之后執行腳本命令,endscript標示postrotate腳本結束;這兩個關鍵字必須單獨成行,注意使用外部指令時要用絕對路徑 |
| prerotate/endscript | 在日志輪替之前執行腳本命令,endscript標示prerotate腳本結束 |
?
?
?
?
?
?
?
?
?
?
總結
- 上一篇: 创新谈-汪海
- 下一篇: linux 其他常用命令