Linux系統管理筆記

linux發展史+安裝+注意事項php

Unix發展html

  1. Multics(油呢可帝死)工程計劃最初的Unix

1965年,美國麻省理工學院(MIT)、 通用電氣公司(GE)AT&T的貝爾實驗室聯合 開發Multics工程計劃,其目標是開發一種交互式的具備多道程序處理能爲的分時操做系統,但因 Multics追求的目標過於龐大複雜,項目進度遠遠 落後於計劃,最後貝爾實驗室宣佈退出。node

1969年,美國貝爾實驗室的肯•湯普森 在DEC PDP-7機器上開發出了UNIX系統。mysql

  1. 常見Unix---全Unix三大運營商

a) AIX系統:由IBM公司在Unix的內核上開發出來的系統linux

b) HP-UX:HP戴爾公司在Unix內核上開發出來的系統ios

c) Solaris蛇牢瑞死)SUN微軟公司在Unix的內核上開出來的系統c++

 

Linux版本分類web

  1. 內核版:內核版Linux創始人帶領的團隊負責更新升級,公司網址www.kernel.org

a) Redhat 6.x 2.6.x (瑞的漢的)正則表達式

b) Redhat7.x 3.10.x算法

  1. 發行只要系統中的內核是Linux的,其操做Linux有百分90%類似

a) Redhat系列

  1. 企業RHEL RedHat Enterprise Linux (安來死裏牛死)
  2. 人版Fedora(肥多啦),全功能版本

 

b) Debian系列

  1. FedoraRedHatcentOSSUSEGentoo,紅旗MandrivaTurbolinuxRHELenterprise
  2. centOS 5.5  2.6.18 網址www.kernel.org 3.1.14
  3. DebianUbunto

Linux主要發行版本

c) Redhat (瑞的漢的)系列

  1. centOS  (汕頭OS
  2. SUSE 蘇誰)
  3. Fedoro (肥多啦)
  4. Gentoolinux (真吐)
  5. 紅旗Linux (淘汰了)
  6. Mandriva (忙拽我 
  7. Turbolinux (特譜裏牛死)

d) Debian (爹餅)系列

  1. Ubuntu 烏斑圖)
  2. Knopplx佛死)

 

常見開源軟件:

e) Apacheweb服務

f) NginxNg死):web服務器

g) Mysql:數據庫

h) PHP:腳本語言

i) Samba八)LinuxWindows之間的內網文件服務器

j) Python:腳本語言

k) Ruby(如比):腳本語言(日本開發)

l) Sphinx(斯分克絲):中文分詞

m) MongoDBNO庫)NOSQL數據

n) Redis(瑞地死)Linux中的輔助數據

注意Redis是用來輔助Mysql數據庫,用來優化SQL性能

GPT:開源軟件規範擁有法律效率)

查看服務器排網址:www.netcraft.com

 

 

Windows格式化續

  • o) 分出一小塊空間來作統計塊,統計你有多少塊塊組裏多少經佔有的Black,多少空閒沒用。有多少Inode佔有,有多少空閒。就是一個統計信息剩下的空間,分紅一塊塊塊組,個塊組按你的分區格式同,大小同。把塊組分紅部,部分一點空間放Ionde剩下的空間分給下部放Black

Linux系統文件格式

p) EXT2

q) EXT3

r) EXT4

s) XFS

Linux分區表類別

a) MBR分區表:主引導記錄分區表,最大隻支持2.1T硬盤,最多支持4分區。

b) GPT分區表:全局惟一標示分區表,支持9.4ZB硬盤1ZB=1024PB1PB=1024EB1EB=1024TB理論上GPT支持無限制分區

  1. MBR分區類型

a) 主分區:最多隻能有4

b) 擴展分區:最多隻能有1個,主分區加擴展分區最多4個,不能寫入數據,只能包含邏輯分區

c) 邏輯分區:在擴展分區能多支持多個邏輯分區,至少10以上,能夠寫入數據

注意:Linux跟windows的二個分區表一樣的

Linux分區步驟

t) 分區

u) 格式

v) 設備文件名:給分區設備文件名,有了設備文件名才能夠給掛載點

w) 掛載點:使用已經創建的空目錄做爲掛載點(任何目錄均可以除了/bin/ /etc/ /lib/

  1. 載點是Linux訪問分區的一個入口windows盤符相同意思
  2. Windows:是用ABCD字母來作盤符標誌
  3. Linux是用數字來作掛載點標誌的

注意Linux下一切皆文件

swap(死我撲)

 

 

分區設備名

x) 設備文件名:

  1. /dev/hda1 IDE硬盤接口,理論速度133Mbps
  2. /dev/sda1 SCSI硬盤接口,理論速度:200Mbps)SATA硬盤接口,理論速度500Mbps

注意/Linux目錄,叫根,是Linux的最高一級目錄

Linux是結構,根目錄下放一級目錄,一級目錄下放二級目錄等。

Windows也是樹型結構,不過他是的電腦—磁盤—目錄等

dex是專門用來放硬件設備的目錄,因此裏面放的內容大可能是硬件特殊設備的

hda1sda1中的a字母是表明你當前第幾塊硬盤,2塊硬盤a字母就會變成b字母

hda1sda1中的1數字是表明你當前是第幾個分區,要是第二分區1數字就會變成2數字

1-4數據的標誌必定是給主分區跟擴展分區的,不管邏輯分區怎麼分,都會從5數字開始

 

 

Linux分區

y) 必須分區:不分能裝系統

  1. / (根分區,必定要分單獨分)
  2. swap分區(死我撲)交換分區)
    1. 能夠當成是虛擬內存,當真實內存不夠用的時候,拿出swap硬盤分區當內存用,是爲了提高系統性能的。
    2. Swap若是真實內存小於4Gswap位內存的兩倍。若是真實內存大於4Gswop和內存大小一致。實驗環境,不大於2G

z) 推薦分區

  1. /boot (啓動分區,200MB是硬盤滿了,沒有分配啓動分區,系統在也開不起來
  2. /home這是用來保存文件數據的,跟根分區隔開
  3. /www能夠本身建立分區類別,可是實際用途這是要服務器來決定的

注意:若是有單獨的分區,他會有單獨的存儲空間,能夠往裏面寫入數據是不會寫在目錄裏,是寫在本身的空間裏的。就是說從系統上來看,他們是從屬關係,根是最高目錄。若是硬盤來看要單獨分區,他就會有單獨的存儲空間。因此叫單獨分區

Linux安裝

 

 

  1. 安裝或升級   √
  2. 沒有圖形界面的簡易安裝
  3. 安全模式
  4. 從硬盤啓動
  5. 內存檢測

 

 

Desktop                          圖形界面

Minimal Desktop (祕你樓)       圖形界面

Minimal                          最小化安裝

Basic server(貝思客)             基本服務

Database server(達特備四)       集成MySQL數據庫

Web server                       集成Apache web服務

Virtual host (個人有豪斯特)      集成虛擬化主機

Software deveiopment workstation集成軟件開發環境

 

centOS版本分類

aa) Desktop:圖形界面

ab) Minimal Desktop:圖形界面

ac) Minimal(咪NO最小化安裝

ad) Basic serverA我)基本服務

ae) Database server(爹死誰我)數據中心服務會裝Mysql

af) Web server:裏面會裝Apache

ag) Virtual Host(我濤好死)說本地話:裝虛擬機主鍵

ah) Software Developmaent Workstation:裝開發環境

遠程登陸管理工具

  1. Putty:古老的遠程管理工具,是綠色化工具,不須要安裝,雙擊打開能用,可是由於是不少年開發的,因此他的設置,字體,顏色都比較老化收費。
  2. Seret:目前比較主流的工具,也是很強大的一個工具,各方面的設置都很不錯收費。
  3. Xshell:目前比較主流也是最新的工具,能夠選擇收費企業免費我的版,各方面的設置都很不錯

Linux IP地址配置

  1. 輸入setup進入設置頁面,第三行,第一行,回車,設靜態IP地址oh boot個服務要啓動,點OK後保存退出
  2. 輸入service(服務) network(網卡) restart(重啓):重啓網卡服務
  3. 如下步驟只針對虛擬機,虛擬網卡設置爲橋接
  4. 橋接到有網卡
  5. 輸入serivce(服務) network(網卡) restart(重啓):重啓網卡服務
  6. 是以上的設置後還不行,檢查IP要是檢查IP問題,那就多是UUID衝突
  7. UUID衝突惟一識別符,只針對複製鏡像生效)
  8. 輸入vi /etc/sysconfig/network-scripts/ifcfg-etho:刪除MAC地址行
  9. 輸入rm –rf /etc/udev/rules.d/70-persistent-net.rvles:刪除MAC地址UUID綁定文件
  10. 輸入reboot 重啓Linux系統

點注意事項

  1. 目錄用~表明
  2. #:表明超級用戶
  3. $表明普通用戶
  4. Linux嚴格區分大小命令都是小寫的,-」選項是大寫。
  5. 函數是名稱後面有「.so.4」的就是函數
  6. 虛擬文件系統:不能夠在裏面存儲數據,由於重啓后里面的數據就會被清空
  7. /OPT/:要把軟件放置到/usr/local/目錄當中
  8. 清空數據rm –rf /目錄/* 注意後面必定要加「*」號
  9. /tmp/臨時目錄,通常要清空的時候要先看下目錄,由於要是裝了PHPMysql的軟件,他們會自動在這目錄中新建他們的目錄,一旦刪除了PHPMysql目錄,PHPMysql他們會本身崩潰。應對方案:在PHPMysql安裝的過程,是能夠更改安裝路徑,這樣就能夠更改到別的目錄裏面。
  10. 源碼:通常存放/usr/local/src/目錄
  11. 內核源碼包:通常存放/usr/src/linux/目錄
  12. rar目錄:是放可變數據的
  13. /var/www/html/目錄:存儲網頁可變數據的
  14. 目前建議能作實驗的目錄:/root/,/tmp/,
  15. Windows下的程序不能直接在Linux上安裝使用,由於Linux中的軟件須要開源軟件,windows的軟件是要不開源的軟件,因此雙方的軟件沒法通用
  16. Linux中:「.」是表明當前目錄,「..」是表明上級目錄
  17. 服務器上不能出現777權限,777Linux系統最高權限

Linux硬盤和光盤

  1. Linux中全部內容都是以文件形式保存的,包括硬件
  2. 硬盤文件是:/dev/sd[a-p]
  3. 光盤文件是/dev/sro/

Linux不靠擴展名區分文件類型

  1. 壓縮:「*.gz」,「*.bz2」,「tar.bz2」,「*.tgz」
  2. 二進制軟件包:「*.rpm」
  3. 網頁文件:「*.html」,「*.php」
  4. 腳本文件:「*.sh」
  5. 配置文件:「*.conf」,配置文件必定要加擴展名不加系統識別不了

注意:建議是有以上的文件在,必定要加擴展名,由於Linux系統不止你一我的在維護,這也會好分類容易分得清楚

Linux存儲設備掛載

  1. Liunx全部的存儲設備都必須掛載以後用戶才能使用包括了硬盤U,移動硬盤,光盤等

a) Windows下存儲設備全自動分配盤符,可是全都要手動出設備  (盤符=掛載點)

b) Linux只有硬盤是自動掛載的,其它的存儲設備全須要手動掛載,可是全都要手動彈出設備

注意:Linux系統中能夠設置自動掛載存儲設備,可是一旦設置了自動掛載,要是開機的話,系統沒有檢測到存儲設備,那系統會調動全都的運算能力來分析爲什麼沒有,於是死機

服務器注意事項

  1. 遠程服務器不容許直接關機只能重啓。
  2. 準備重啓時應該關閉全部服務才重啓。能夠保護硬盤防止損壞數據
  3. 要在服務器訪問高峯運行高負載命令,:大數據的查詢,備份,拷備
  4. 遠程配置防火牆時不要把本身踢出服務器,應對方案:配置前先設置定時任務,每幾分自動清理一下防火牆,建議按自身的能力來設置時間。
  5. 指定合理的密碼規範並按期更新
  6. 合理的分配權限,不要隨便加權限,默認權限的是比較合理的權限分配,不必時候要去更改默認權限。注意能不給編程人員動服務器就讓他們動。
  7. 服務器上不能出現777權限,777Linux系統最高權限

CentOS 6.*  安裝流程 & 遠程登陸 請附件

*************************************

linux經常使用命令

Linux 文件的命名規則

  1. 除了 / 以外,全部的字符都合法,但有些字符最好不用,如空格符、製表符、退格符和字符 @ # $ & ( ) -
  2. 避免使用 「 . 」 做爲普通文件名的第一個字符
  3. 大小寫敏感,嚴格區分大小寫(包括文件命名、命令、命令選項、用戶名等)

Linux命令的格式(ls)

  1. 命令的【選項】【參數

a) 選項:是用於調整命令的功能的,不加權限只能執行,加了權限能夠執行更復雜的功能

b) 參數:是命令的操做對象,省略參數的緣由是默認參數

c) 當有多個選項時,能夠寫在一塊兒

d) 兩個特殊的目錄 . .. ,分別表明當前目錄和當前目錄的父目錄

e) 個別命令不遵循此格式

ls命令

ls (選項)(參數)

默認名:(ll:顯示目錄下全部文件的配套信息)

經常使用

ls :顯示目錄文件 路徑:/bin/ls/ 權限:全部用戶。

ls a /目錄/ :顯示全部文件

ls color=nerern /目錄/ :不顯示顏色顯示目錄下內容

ls lh :顯示文件大小單位

ls l :顯示目錄下全部文件的配套信息

能夠用(ll命令做用同樣

ls ld :只顯示當前輸入的目錄信息,不顯示該目錄下的子目錄

ls i :顯示文件的inodei節點

man ls :查看ls下的短選項跟長選項

選項:

-a :顯示全部檔案及目錄(ls內定將檔案名或目錄名稱爲「.」的視爲影藏,不會列出);

-A:顯示除影藏文件.」和「..」之外的全部文件列表;

-C:多列顯示輸出結果。這是默認選項;

-l:與-C」選項功能相反,全部輸出信息用單列格式輸出,不輸出爲多列;

-F:在每一個輸出項後追加文件的類型標識符,具體含義:*」表示具備可執行權限的普通文件,「/」表示目錄,「@」表示符號連接,「|」表示命令管道FIFO,「=」表示sockets套接字。當文件爲普通文件時,不輸出任何標識符;

-b:將文件中的不可輸出的字符以反斜線「」加字符編碼的方式輸出;

-c:與-lt」選項連用時,按照文件狀態時間排序輸出目錄內容,排序的依據是文件的索引節點中的ctime字段。與「-l」選項連用時,則排序的一句是文件的狀態改變時間;

-d:僅顯示目錄名,而不顯示目錄下的內容列表。顯示符號連接文件自己,而不顯示其所指向的目錄列表;

-f:此參數的效果和同時指定aU」參數相同,並關閉「lst」參數的效果;

-i:顯示文件索引節點號(inode)。一個索引節點表明一個文件;

--file-type:與-F」選項的功能相同,可是不顯示「*」;

-k:以KB(千字節)爲單位顯示文件大小;

-l:以長格式顯示目錄下的內容列表。輸出的信息從左到右依次包括文件名,文件類型、權限模式、硬鏈接數、全部者、組、文件大小和文件的最後修改時間等;

-m:用,」號區隔每一個文件和目錄的名稱;

-n:以用戶識別碼和羣組識別碼替代其名稱;

-r:以文件名反序排列並輸出目錄內容列表;

-s:顯示文件和目錄的大小,以區塊爲單位;

-t:用文件和目錄的更改時間排序;

-L:若是遇到性質爲符號連接的文件或目錄,直接列出該連接所指向的原始文件或目錄;

-R:遞歸處理,將指定目錄下的全部文件及子目錄一併處理;

--full-time:列出完整的日期與時間;

--color[=WHEN]:使用不一樣的顏色高亮顯示不一樣類型的。

參數

目錄:指定要顯示列表的目錄,也能夠是具體的文件。

  1. ll :顯示目錄文件的配套信息

文件格式的意思

 

  1. 第一項:drwxr_xr_x. 表明權限位
  2. 第二項:2 表明引用計數

a) 引用計數分

  1. 文件:表明此文件的硬接個
  2. 目錄:表明此目錄下一級子目錄的個數,要是該目錄下沒有子目錄,就不顯示。
  3. 第三項root 表明全部者(屬主)是那個用戶
  4. 第四項:root 表明屬組
  5. 第五項:4090 表明文件大小,單位字節Byst
  6. 第六項:28 20:16 表明文件最後一次修改時間
  7. 第七項:123 表明文件名稱

目錄操做命令(cd,pwd,mkdin,rmdir,rm,tree)

  1. cd:切換目錄

a) cd :切換目錄路徑:shell內置命令,權限:全部用戶

b) cd ~ :進入家目錄或用cd直接進入

c) cd – :進入上次目錄

d) cd . :進入當前目錄

e) cd .. 進入上級目錄

  1. pwd 顯示當前所在目錄,路徑:/bin/pwd,權限:全部用戶
  2. mkdir :創建目錄

a) mkdir :創建目錄路徑:/bin/mkdir/,權限:全部用戶

b) mkdir –p :遞歸創建目錄,一級過一級的創建

  1. rmdir :刪除目錄,路徑:/bin/rmdir/,權限:全部用戶
  2. rm刪除

a) rm 刪除文件,路徑:/bin/rm/權限:全部用戶

b) rm –rf :刪除文件跟目錄

c)     -r :遞歸,刪除目錄

d)     -f :強制

  1. tree(吹)目錄顯示指定目錄下全部內容目錄樹,路徑/bin/tree/權限:全部用戶

 

相對路徑跟絕對路徑

1. 相對路徑:參照當前所在的目錄,進行找,必定確實當前全部的目錄從當前位置開始查找打開

2. 絕對路徑:從根目錄開始指定,一級一級遞歸查找。任何目錄都能進入指定位置,目錄開始查找打開。

文件操做命令(touch,rm,cat,more,less,head,tail,echo)

  1. touch(踏):建立空文件修改文件時間,路徑/bin/touch/權限:全部用戶注意:touch也稱爲觸摸,要是文件不存在,創建新文件。要存在,會修改文件的最後修改時間

拓展:

echo hello> 文件名

> 會覆蓋源文件的內容

>> 追加內容到源文件中

touch {5..10}.txt

  1. rm刪除

a) rm 刪除文件,路徑:/bin/rm/權限:全部用戶

b) rm –rf :刪除文件跟目錄

c)     -r :遞歸,刪除目錄

d)     -f :強制

  1. cat() :查看文件內容從頭至尾路徑/bin/cat/權限:全部用戶,加「-n」:列出

  拓展:

-n 列出行號

cat  顯示多個文件的內容

cat  將多個文件合併(按照文件前後順序)

  1. more(莫:分屏顯示文件內容路徑:/bin/more/權限:全部用戶

操做方式:

空格向下翻頁,b翻頁?,q鍵退出,,Enter鍵換行

拓展:

head -n 顯示文件前n

tail    -n 顯示文件最後n

tail -f   實時監控文件尾部變化

  1. less(烈死) :分行顯示文件內容路徑:/bin/less/權限:全部用戶操做方式:空格鍵換行,q鍵退出
  2. head()(嚇用本地話說) :顯示文件頭

a) head :默認顯示文件頭10行。路徑/bin/head/。權限:全部用戶

b) head -n 20 文件 :顯示文件頭20

  1. tail(菜O :默認顯示文件尾

a) tail :默認顯示文件尾10行。路徑/bin/tail/權限:全部用戶,

b) tail -n 20 文件 顯示文件尾20

c) tail  –f 文件名監聽文件不退出適合監聽實時文件

  1. echo(唉扣) 輸入或插入的內容  /目錄/文件 輸出命令,能夠插入文件內容,會寫在文件最後面,從最後開始寫起

文件和目錄操做的命令(rm,cp,mv,shell,type,ln)

  1. rm刪除文件或目錄

a) rm 刪除文件,路徑:/bin/rm/權限:全部用戶

b) rm –rf :刪除文件跟目錄

c)     -r :遞歸,刪除目錄

d)     -f :強制

  1. cp :複製

a) cp 源文件 目標位置:複製。路徑/bin/cp/權限:全部用戶

b) cp -a 源文件 目標位置:至關-r -p -d 這三功能

c) cp –r 源文件 目標位置:複製目錄

d) cp -p 源文件 目標位置:連帶文件屬性複製,包括時間等

e) cp -d 源文件 目標位置文件連接文件則複製連接屬性

f) cp 文件 /目標目錄/:原名複製

g) cp 文件 /目標目錄/新文件名:更名複製

  1. mv:剪切或更名路徑:/bin/mv/權限:全部用戶

a) mv 文件 /目標目錄/:剪切

b) mv 文件 .新文件更名「.」來表明當前目錄

  1. shell(誰歐 :命令解釋,路徑:/bin/bash linux標準shell/

a) 內部命令shell自帶明確的執行文件

b) 外部命令:後期開發執行文件

  1. type(菜譜) 命令 :用來區分命令類型

 

  1. ln :連接文件路徑/bin/ln/權限全部用戶

a) ln 文件 目標文件:連接

b) ln –s 源文件 目標文件連接文件必需要寫絕對路徑

連接跟硬連接的分類

  1. 連接

a) 相似windows快捷方式

b) 軟連接擁有本身I節點和Block塊,可是數據只保存文件文件名和I節點,並沒有實際的文件數據

c) 軟連接的權限爲1rwxrwxrwx。爲系統中最高權限

d) 修改任何個文件,另外一個都改變

e) 刪除連接文件,源文件不愛影響。刪除文件,連接沒法訪問

f) 軟連接能夠鏈接文件,也能夠鏈接目錄,能夠跨分區

g) ln 源文件 目標文件:硬連接

  1. 連接

a) 擁有相同的I節點存儲Block塊,能夠作是同一個文件

b) 修改任何一個文件另外一個都改變

c) 刪除任何一個文件,一個都能訪問

d) 硬連接文件和原文件的Inode號一致,只有這個標記表明硬連接,很不容易找到

e) 不能連接目錄,不能跨分區

f) 刪除源文件快捷方式文件還能夠訪問,這就是跟軟連接的區別

g) ln s 源文件 目標文件:軟連接,文件名都必需要寫絕對路徑

alias:別名

aliasa兒死) :別名(照顧管理員的使用習慣)

alias :查詢系統現有別名

alias ser(別名)=「命令」 :給命令起個別名,方便使用

注意事項

命令行臨時生效,永久生效須要寫入對應的系統文件

別名的優先級高於系統命令,除非必要時不能和命令名重疊

權限位

  1. .」權限後面.SELinux用來限制管理員的權限,保護系統

 權限位爲10

  1. 第一位:文件類型

a) - :普通文件

b) d :目錄文件

c) l :連接文件

d) b :塊設備文件

e) c :字設備文件

f) s :

g) p :管道

注意:經常使用是前三個文件類型,四個是特殊文件類型

  1. 九位是權限

a) 後九位分類

  1. 三位爲:屬主或全部者權限「u」表明
  2. 三位爲:屬組權限,「g」表明
  3. 三位爲:其餘人權限,「o」表明

b) 三位權限分類

  1. 「r」:讀「4」表明
  2. 「w」:寫,「2」表明
  3. 「x」:執行,「1」表明

修改權限(chmod)

  1. chmod(撐的) :修改權限。路徑:/bin/chmod/執行權限:全部用戶

a) chmod 權限 文件修改權限

b) chmod 755 abc

c) chmod 644 abc

chmod  u+x   aa aa文件的全部者添加x權限

chmod  g+w,o+w  aa aa文件的所屬組和其餘人添加w權限

chmod  u=rwx    aa aa文件的全部者賦予rwx權限

chmod  644  aa 修改aa文件的權限爲755,對應爲rw-r--r--

常見權限

  1. 644權限:標準文件權限
  2. 755權限

a) 文件執行權限

b) 目錄:標準權限

  1. 777權限:表明最大權限。服務器不容許出現最大權限
  2. 467權限:表明最小權限。只有在實驗中使用

 

 

權限的意義(寫執行基本權限)

  1. 權限對文件的含義

a) r :讀取文件內容(cat,more.head,tail)

b) w :編輯,新增,修改文件內容可是不包含刪除文件,要是要刪除文件,須要在文件的當前目錄中刪除文件(vi,echo)

c) x :文件可執行

注意:要想刪除文件須要擁有w目錄的權限,由於刪除文件是在目錄中刪

  1. 權限對目錄的含義

a) r :能夠查詢目錄下文件名

b) w :具備修改目錄結構的權限。如新建文件和目錄,刪除此目錄文件目錄重命此目錄文件和目錄剪切(tovch,rm,mv,cp)

c) x :能夠進入目錄(cd)

對文件有寫權限,只表明能夠修改這個文件的內容;要想刪除文件,須要對文件所在目錄有寫權限

只要對目錄有寫權限,目錄中的文件,就算是root建立的,普通用戶同樣能刪除

目錄通常都同時有r-x權限,若是一個目錄只有r卻沒有x,你能用ls查看,卻不能cd 進去!(用普通用戶測試)

權限命令

  1. chown(撐O:屬主和組命令,路徑:/bin/chown/權限:全部用戶

a) chown 用戶名 文件 改變文件屬主者/全部者。                         (例:chown  user1  aa user1必須存在

b) chown  :用戶 文件修改屬組者chown :user1 aa

c) chown 用戶:用戶名 文件 改變屬主/全部者同時改變屬,(chown user1:user1 aa

例:

chown  user1  aa :將aa文件的全部者修改成user1用戶

chown  user1:user1  aa :將aa文件的全部者修改成user1用戶而且所屬組修改成user1

chown  :user1  aa:將aa文件的所屬組修改成user1

  1. chgrp 屬組 文件:改變屬組,路徑:/bin/chgrp/權限:全部用戶

例:

chgrp  adm  file1:改變文件file1的所屬組爲adm

 

用戶的創建

  1. whoami(好咪 查詢當前用戶的等級,是普通用戶仍是管理員
  2. user()add() 用戶 創建用戶
  3. passwd 用戶 建立密碼

退出遠程管理:logout (落狗兒刺

權限的注意事項

  1. 文件目錄的最大權限

a) 文件最大權限:x權限

b) 目錄最大權限:w權限

  1. 目錄可用權限

a) 0最小權限

b) 5基本權限,可進入,可查看。

c) 7:完整權限

  1. 普通用戶能夠改文件和目錄,前提是普通用戶對文件或目錄有全部者權限,要是要轉移文件,就要有超級用戶贊成。
  2. 普通用戶能改權限,不能改全部者是誰,管理員能夠更改
  3. 管理員擁有最高權限
  4. 注意:文件是誰創建的,全部者的權限就是誰的要是一個用戶一個文件擁有全部者跟屬組。那全部者的權限優先。(全部者的權限是給建立文件的人,屬組者是給普通用戶的

系統文件目錄默認權限

  1. umask(u罵死可) 權限:修改系統文件和目錄的默認權限,路徑:shell內置命令,權限:全部用戶。(umask 644 臨時修改umask值)
  2. umask :查看當前系統文件跟目錄的默認權限。 -S()字母顯示權限
  3. umask所在的環境變量配置文件:/etc/profile
  4. 文件跟目錄

a) 文件

  1. 666022等於644,按下面的計算
  2. –wr-wr-wr- 減去 -----w--w- 等於 –wr--r--r-

b) 目錄

  1. 777減去022等於755按下面的計算
  2. wrxwrxwrx 減去 -----w--w- 等於 wrx-rx-rx
  3. 系統文件的默認權限是:644
  4. 系統目錄的默認權限是:755
  5. 普通用戶的umask500
  6. 超級用戶的umask0

總結:Linux的安全機制,不給新建文件x權限。

幫助命令(help,lnfo,man)

  1. help(O破   蝦:說本地話) 命令,路徑:Shell內置命令

a) help 內部命令 :查看內部命令幫助 

b) 命令 --help 查看命令的常見選項

  1. -q    隱藏文件名
  2. -v    顯示文件名
  3. -c   顯示字節數
  4. -n 顯示的行數
  5. Info (音否) 命令

a) 回車:進入子幫助頁面(*標記)

b) u 進入上層頁面

c) n 進入下一個幫助小節

d) p :進入上一個幫助小節

e) q :退出

  1. man(慢的命令,路徑/bin/man/

a) man 命令 :查看命令幫助

b) man 級別 命令 :查看命令在級別分類中的命令

c) whatis 命令 :查看命令擁有那些特別的幫助

 

查找命令

  1. which(劃去 劃:說本地話 命令名 :查找命令的命令,能看到相關別名跟路徑,路徑:/usr/bin/which
  2. whereis 命令名 :查找命令的命令,同時看到幫助文檔位置,路徑/usr/bin/whereis
  3. locate (露K 文件名 :按照文件名查找,按照數據庫查找,路徑:/usr/bin/locate

a) updatedbO破強) :強制更新數據庫

b) /var/lib/mlocate :命令所搜索的後臺數據庫

c) /etc/updated.conf :配置文件,用於定義locate命令

d) PRUNE_BIND_MOUNTS=yes」:開啓搜索限制

e) PRUNEFS= :搜索時,不搜索的文件系統

f) PRUNENAMES= :搜索時,不搜索的文件類型

g) PRUNEPATHS= :搜索時,不搜索的路徑

 注意:有些系統文件打開後出現的是亂碼,這是爲了保護系統安全

find 搜索命令

  1. 按照文件名查找

a) find(返) 查找位置 –name 文件 :按照文件名查找(例find  / -name  aabbcc

  1. 按照時間查找

a) –ctime :按照文件狀態修改時間(change

b) –mtime :按照文件數據修改時間 modify

c) –atime :按照訪問時間 acces

注意-4的是前

+4指的是前五天

d) 例find  /  -ctime  +4

按天   ctime  atime mtime

按分鐘 cmin   amin    mmin

c  change #表示屬性被修改過:全部者、所屬組、權限

a  access #被訪問過(被查看過)

m  modify #表示內容被修改過

例:

find /etc -mmin -120 120分鐘內內容被修改過的

find /etc -ctime +7 :七天以前屬性被修改過的文件

  1. 按照用戶

a) –uid 數字 按照用戶屬主ID查找文件

b) –gid 數字 按照屬組ID查找文件

c) –user 用戶 :按照屬主用戶名查找文件

find /home -user lisi

    /home中,查找全部lisi用戶的文件

注意,在系統中須要存在此用戶,不然報錯

d) –group 組 按照屬組組名查找文件

e) –nouser :找沒有屬主的文件(經常使用)

f) 例find / -nouser

  1. 按照文件權限

a) –name :按照文件名

b) –size :按照文件大小不能加小數點,(單位k(小寫,M(大寫+50k:大於50k-50k:小於50k50k:等於50k。)(例find  /  -size  +50k

單位是數據塊  一塊是512字節

1M -> 1024k -> 2048塊  (1塊是0.5k 也就是512字節)

100M -> 102400k -> 204800

例:

find /etc -size -10k 查找小於10k的文件

find /etc -size +2M 查找大於2M的文件

注意+-號,若是沒有,是精確這麼大,一般都會帶上+-號,表示一個範圍

c) –type 類型 按文件類型查找,(f:普通d目錄l:連接

d) –perm  755: 按照權限查找(例find  .  –perm  644      -400只要比這個權限大,包含在內的就會列出全部    +400只要有一個包含你寫的權限就會顯現出來)

e) –inum :按照i節點查詢  (例find  .  inum 節點數)

f) –iname :按照文件名查找,不區分大小寫

 

 

通配符跟正表達式

  1. 配符:用於匹配文件名,徹底匹配

a) * :用於匹配任內容

b) ?:用於匹配任意一個內容,必須有一個,否則是出不來的

c) [] 用於匹配中括號內任意個內容:[a-z]任意一個小寫字母,[A-Za-z] 任意一個字母[0-9]任意一個數字

  1. 正則表達式:用於匹配文件中的字符串,是包含匹配

a) * :前一個字符重複任意屢次

b) ?:前一個字符重複10

c) [] 匹配中括號中任意一個內容:[a-z]任意一個小寫字母,[A-Za-z] 任意一個字母[0-9]任意一個數字

Linux沒有全部者的正常文件

  1. 外來文件(光盤U盤,移動硬盤,網絡文件)注意:目錄顯示包含30120目錄不是垃圾文件,是正常文件
  2. 極少數的內核直接產生的文件(/proc/sys/net

注意:要是不在這2內的文件要很注意。有可能入侵文件

-exec命令的疊加查詢

-exec find  目錄  –perm(第一種命令)  -444  -exec  ls(第二種命令)  –l  {} \ ;

命令一的執行結果做爲命令二的操做對象

find  .  –size  +5k  -exec  ls  -lh  {}\;

find  ...  -exec 命令 {}  \;

{}表示find查詢的結果集

\是轉義符,不使用命令別名,直接使用命令自己

;分號是表示語句的結束

注意:固定格式,只能這樣寫。注意中間的空格。

 

邏輯跟運算

 find  .  –type  f  -a  -size  +2k  注意(-a=AMD)

邏輯與運算,兩個條件都成立才成立

 find  .  –type  f  -o  -size  +2k  注意-o=OR

邏輯或運算,兩個條件成立一個,成立

邏輯鏈接符:   

-a    and 邏輯與)     

-o   or  邏輯或)

例:find /etc -size +1k -a -size -10k  

etc目錄下查找大於1k而且小於10k的文件

findgrep意義

  1. find在系統當中,搜索符全條件的文件名,若是須要匹配,使用通配符匹配,通配符是徹底匹配。
  2. grep:在文件當中,搜索符合條件的字符串,若是須要匹配,使用正表達式匹配,正則表達式是包含匹配

grep

  1. grep  「字符」  文件 查找符合條件的字串行,路徑:/bin/grep/。(例grep  「root」  /etc/passwd
  2. grep  -i  「字符」  文件 查找的時候忽略大小寫        (例grep  -i  「root」  /etc/passwd
  3. grep  -v  「字符」  文件 查找的時候反向查詢         (例grep  -v  「root」  /etc/passwd
  4. grep  -o  「字符」  文件  統計有幾個關鍵字 (例grep  -v  「root」  /etc/passwd

注意事項:

儘可能不要在根目錄/中查找,查找得慢,會佔用太多服務器資源

若是須要在服務器中全盤查找,能夠寫一條計劃任務在凌晨執行(計劃任務後面講)

查找範圍越小越好,匹配條件,越精準越好

 

轉義符的做用是什麼?

linux中有一個別名機制,如rm刪除文件,執行的倒是rm -i(which rm 能夠查看命令別名),使用rm刪除文件前會提示,就是由於rm -i這個參數。若是想使用命令原意,能夠在加\轉義,

  如:\rm test.txt   則不會提示,直接刪除

 

管道

cat  install.log  |  grep  lib

在顯示文件的結果中,grep搜索含有lib

命令1  |  命令2  命令1的結果做爲命令2操做對象

道符例子

  1. ||  /etc/  |  more

把第一個命令的結果放在一個臨時文件裏,第二個命令處理這臨時文件,這臨時文件原本不存在的

  1. ||  /etc/  |  grep  yum

第二個命令從第一個命令的臨時文件中搜索包含yum」這個的文件名

  1. netstat  -auln  |  grep  80

如何按關鍵字查詢端口

  1. netsat  -an  |  grep  EATBLISHED  |  ws  -l

第一命令查詢系統網絡狀態第二命令用第一命令查詢結果來查詢關鍵,第三個命令第二命令結果來統計數量

         判斷服務器正在鏈接的有多少統計

netstat查看系統網絡鏈接狀態

  1. netstat查看系統網絡狀態

a) –t:查看tcp協議端口

b) –u:查看udp

c) –l:監聽

d) –n:以ip端口號顯示,而不是主機名和協議名

e) -a 顯示全部socket,包括正在監聽的。

f) -c 每隔1秒就從新顯示一遍,直到用戶中斷它。

g) -i 顯示全部網絡接口的信息,格式同「ifconfig -e」。

h) -r 顯示核心路由表,格式同「route -e」。

i) -v 顯示正在進行的工做。

ps  aux 查看進程

  1. 常見網絡端口

a) 20  21 ftp服務,文件共享

b) 22 SSH服務,安全運維網絡管理

c) 23 telnet服務

d) 25 smtp:簡單郵件傳輸協議,發信

e) 110 pop3郵局協議,收信

f) 80  www網頁服務

g) 3306 Mysql端口

h) 3389 windows終端服務

i) 53   DNS端口

  1. /ect/services :全部系統常見端口

a) 端口數量:

  1. Tcp :65535
  2. Udp 65535
  3. telnet  ip  端口  測試端口是否能夠正常鏈接

a) ctrl+] ------------ quit   退出方式

  1. netstat  -tlun  :查看本機全部監聽端口

a) –t  tcp  -u  udp  -l  監聽  -n  IP端口號顯示

壓縮和解壓縮

「.zip」  「.gz」  「.bz2」  Linux能夠識別的壓縮格式

常見壓縮格式:

.zip  .gz  .bz2   linux能夠識別的常見壓縮格式

.tar.gz .tar.bz2 常見的壓縮和打包格式

  1. 「.zip」( Z格式,路徑:/usr/bin/zip

a) zip :是爲了跟windows通用的一種格式,用的很少

b) zip 壓縮文件  壓縮文件  :壓縮,不刪除原文件

c) zip  -r  壓縮目錄名  壓縮目錄  壓縮目錄 (例zip  -r  test.zip  /test  -r壓縮目錄

d) unzip 壓縮 壓縮。路徑/usr/bin/unzip

  1. 「.gz」格式,路徑:/bin/gzip/

a) 「.gz」格式 :不會打包,要是強制打包,只會打包目錄下的全部文件

b) gzip  源文件名  壓縮,不會保存源文件

c) gzip  -c  源文件名  >  壓縮文件 :強制保留源文件例:gzip  -c  cangls  >  cangls.gz

d) gzip  -r  目錄 不能壓縮目錄,壓縮目錄下全部內容

e) gzip  -d  壓縮 壓縮

  1. 「.bz2」格式,路徑:/usr/bin/bzip

a) 「.bz2」格式:不能壓縮目錄。

b) bzip2  源文件  壓縮 (例bzip2 aa

c) bzip2  -k  源文件  壓縮以後保留源文件

d) bzip2  -d  壓縮文件 :解壓,(bzip2  -d  aa.bz2 -k保留壓縮文件。

  1. 「tar」打包命令路徑:/bin/tar/

a) 不壓縮,只打包

  1. tac  -cvf  打包文件名  文件 打包 (例tar  -cvf  aa.tar  aa )-c打包,-v顯示打包過程,-f指定生產的文件名
  2. tar  -xvf  :打包文件名 (例tar  -xvf  aa.tar  -x 解打

 

b) 壓縮同時打包「tar.gz」/」.gz」格式

  1. tar  -zcvf  壓縮文件名  文件 壓縮時打包 (例tar  -zcvf  aa.tar.gz  aa -z  識別.gz格式
  2. tar  -zxvf  壓縮文件名  壓縮同時解打包 (例tar    -zxvf  aa.tar.bz2

c) 壓縮同時打包「tar.bz2」/」.bz2」格式

  1. tar  -jcvf  壓縮文件名  文件 :壓縮同時打包 (例tar  -jcvf  aa.tar.bz2  aa
  2. tar  -jxvf  壓縮文件名:解打包同時解壓縮 (例tar   -jxvf  aa.tar.bz2  aa

d) 查看不解

  1. tar  -ztvf  壓縮文件名 :只查看不解壓  (例tar   -ztvf  aa.tar.gztar.gz格式
  2. tar  -jtvf  壓縮文件名 只查看,不解壓 (例tar  -jtvf  aa.tar.bz2tar.bz2格式
  3. -z  識別.gz格式
  4. –j :識別 .bz2
  5. –v : 顯示打包過程
  6. –f :指定打包後文件名
  7. –t :只查看,不解壓

e) 指定解壓縮文件位置

  1. tar  -jxvf  壓縮  -C  /目標目錄/ :指定解壓縮位置(例tar  -jxvf  toot.tar.bz2  -C  /tmp/
  2. tar  -jxvf  壓縮  -C  /解壓的文件名/ :解壓指定文件。

注意:按上面例子,壓縮包 –C之間只能有一個空格,多個空格報錯。

經常使用網絡命令

  1. w  :查詢當前登陸服務器的全部用戶路徑:/usr/bin/w

 

a) 登陸終端

  1. 本地終端:
    1. tty1-tty6:本地字符終端:至關能夠6實際的操做界面切換:Alt+F1-F6
    2. tty7:本地圖形終端:要求安裝Linux圖形界面,能夠擁有一個操做界面,切換:Ctrl+Alt+F7要按3
    3. 遠程終端:
      1. pts0-pts255 :遠程終端最多支持255
      2. who :查詢登陸用戶詳細,路徑/usr/bin/who
      3. last :列出登陸系統的相關信息,路徑:/usr/bin/last
      4. lastlog :顯示全部賬戶最後一次登陸時間路徑/usr/bin/lastlog
      5. write 用戶 給在線用戶寫信息,路徑/usr/bin/write

a) 例write root tty1 :寫內容給tty1登陸root

b) 按ctrl+d,保存發送

  1. wall :對全部在線用戶說話,路徑:/usr/bin/wall/

a) 按ctrl+d,保存發送

  1. ping 測試網絡連通性,/bin/ping/

a) ping  -c  次數  ip  探測網絡通暢

b) ping  -s  65536  ip  :指定探測數據包的大小

c) ctrl+c 強制終止

d) 虛擬機不一樣:

  1. 確實IP地址
  2. 防火牆
  3. 確實虛擬網卡鏈接方式
  4. ifconfig :查詢本機網絡信息/sbin/ifconfig/,權限root

a) ifconfig  eth0  192.168.140.252.netmask 255.255.255.0 臨時生效 eth0eth0:0第一塊網卡和第一模擬網卡

ifconfig eth0 192.168.1.1 netmask 255.255.255.0

ifconfig eth0 192.168.1.1/24

ifconfig eth0:0 192.168.1.2 設置網卡子端口

ifconfig命令

ifconfig  (參數)

add<地址>:設置網絡設備IPv6ip地址;

del<地址>:刪除網絡設備IPv6IP地址;

down:關閉指定的網絡設備;

<hw<網絡設備類型><硬件地址>:設置網絡設備的類型與硬件地址;

io_addr<I/O地址>:設置網絡設備的I/O地址;

irq<IRQ地址>:設置網絡設備的IRQ

media<網絡媒介類型>:設置網絡設備的媒介類型;

mem_start<內存地址>:設置網絡設備在主內存所佔用的起始地址;

metric<數目>:指定在計算數據包的轉送次數時,所要加上的數目;

mtu<字節>:設置網絡設備的MTU

netmask<子網掩碼>:設置網絡設備的子網掩碼;

tunnel<地址>:創建IPv4IPv6之間的隧道通訊地址;

up:啓動指定的網絡設備;

-broadcast<地址>:將要送往指定地址的數據包當成廣播數據包來處理;

-pointopoint<地址>:與指定地址的網絡設備創建直接連線,此模式具備保密功能;

-promisc:關閉或啓動指定網絡設備的promiscuous模式;

IP地址:指定網絡設備的IP地址;

網絡設備:指定網絡設備的名稱。

啓動關閉指定網卡:

ifconfig eth0 up

ifconfig eth0 down

爲網卡配置和刪除IPv6地址:

ifconfig eth0 add 33ffe:3240:800:1005::2/64    #爲網卡eth0配置IPv6地址

ifconfig eth0 del 33ffe:3240:800:1005::2/64    #爲網卡eth0刪除IPv6地址

ifconfig修改MAC地址:

ifconfig eth0 hw ether 00:AA:BB:CC:dd:EE

配置IP地址:

[root@localhost ~]# ifconfig eth0 192.168.2.10

[root@localhost ~]# ifconfig eth0 192.168.2.10 netmask 255.255.255.0

[root@localhost ~]# ifconfig eth0 192.168.2.10 netmask 255.255.255.0 broadcast 192.168.2.255

啓用和關閉arp協議:

ifconfig eth0 arp    #開啓網卡eth0 arp協議

ifconfig eth0 -arp   #關閉網卡eth0 arp協議

設置最大傳輸單元:

ifconfig eth0 mtu 1500    #設置能經過的最大數據包大小爲 1500 bytes

 

mail(收信,發信)

a) mail :

  1. 12查看對應郵件
  2. h :列出郵件標題
  3. q :退出

b) 郵件保存位置:/var/spool/mail/root/

  1. 郵件保存位置:/var/spool/mail/root/(老式
  2. 看過郵件保存位置~/mbox/(老式

c) mail 用戶 發信

  1. 標題
  2. 內容
  3. Ctrl+d  

shell的發信

直接調用mail命令發送郵件

 echo "mail test" |mail -s "tsest a" destination@csair.com

發送帶附件的郵件, -a 參數

 echo "jboss log of yesterday as attachment" |mail -s "jboss server logs" -a $logDir.tar.gz destination@csair.com

 

模擬網卡

  1. cd  /etc/sysconfig/netnork-scripts/:進入網卡配置目錄
  2. cp  ifcfg-etho  ifcfg-eth0:0 :複製的網卡配置文件
  3. vi  ifcfg-eth0:0  :進入配置文件
  4. DEVICE=eth0:0  IP地址 :更改DEVICE和當IP地址
  5. service network restart :重啓網卡服務

關機-重啓命令

  1. 關機命令

a) sync 數據同步,把內存中數據強制保存進硬盤,建議關機前使用

b) shutdown  -h  now :關機命令,建議使用路徑:/sbin/ shutdown/權限:root

  1. shutdown  -h  05:50 定時關機

c) init 0 :關機

d) halt :關機

e) poweroff :關機

  1. 重啓命令

a) shutdown  -r  now  :重啓命令

  1. Shutdown  -r  05:50定時重啓,不建議使用

b) reboot :重啓命令,路徑/sbin/reboot/,權限:root

c) init 6 :重啓命令

掛載命令

Linux全部存儲設備都必須掛載使用,包括硬盤

常見的存儲設備:

/dev/sda1 第一個scsi硬盤的第一分區         

/dev/cdrom 光盤

/dev/sr0 光盤 centos 6.x

 

經常使用掛載點:

/mnt

/media

/cdrom

  1. mount :掛載路徑:/bin/mount/
  2. mount  -a  :依據配置文件/etc/fstab的內容,自動掛載

掛載格式:

mount   [-t 文件系統類型] [-o 特殊選項]  設備文件名  掛載點

選項:

-t :文件系統:加入文件系統類型來指定掛載的類型,能夠ext3ext4iso9660 等文件系統。

-o :特殊選項:能夠指定掛載的額外選項,好比讀寫權限、同步異步等,若是不指定則默認值生效。

-o loop :掛載光盤文件

 

  1. \ 換行符,表明這一行沒有完,換行

 

 

  1. mount :查看系統中已經掛載的文件系統注意有虛擬文件系統
  2. noexec/exec:權限

a) mount  -o  remount,noexec  /boot :從新掛載/boot分區目錄,並使用noexec禁止使用執行文件權限

b) mount  -o  remount,exec  /boot :從新掛載/boot分區目錄,並使用exec恢復使用執行文件權限

  1. mkdir  /mnt/disk1  :創建掛載點目錄
  2. mount  /dev/sdb1  /mnt/disk1 :掛載分區

光盤掛載

  1. 光盤設備名:

a) Redhat5.x  之前  /dev/hdc

b) Redhat6.x  之後  /dev/sr0

  1. mount  -t 文件系統 設備描述文件 掛載點(已經存在空目錄)掛載光盤 (例mount  -t  iso9660  /dev/cdrom  /mnt/cdrom
  2. mount  /dev/sr0/  /mnt/cdrom/ :掛載光盤
  3. umount  /dev/cdrom:卸載光盤。強調:退出掛載目錄,才能卸載

U掛載

  1. fdisk  -l  :查看全部分區。確實存儲設備的設備文件名
  2. mkdir  /mnt/usb/ 創建掛載點(手工隨意指定)
  3. mount  -t  vfat  /dev/sdb1  /mnt/usb  使用vfat文件系統,掛載第二塊scsi硬盤的第二個分區(U被識別爲sdb1
  4. mount  /dev/sdb1  /mot/usb  :掛載U
  5. umount  /dev/sdb1:退出U盤
  6. mount  -o  iocharset=utf8 /dev/sdb1  /mnt/usb  :掛載的時候,修改成中文字幕

注意Linux默認不識別windowsNTFS文件格式,若是要使用必須從新編譯內核

卸載:

umount 設備名稱或者是掛載點

#全部的掛載的設備卸載方式都同樣

掛載注意事項

  1. 掛載建議使用原目錄,由於軟連接目錄在修復模式,特殊模式等沒法使用
  2. 若是掛載的目錄裏面有數據,那一旦掛載原目錄的數據會隱藏,簡單說,就是掛載後系統把目錄名稱了掛載點做爲入口使用,因此原目錄就失去了目錄名稱,全部系統找不到原目錄的位置。原目錄的數據,要等到卸載掛載點後才能夠

 

Shell使用小技巧:

  1. 補齊功能

a) 補齊功能容許用戶輸入命令名或文件名起始的若干個字母后,按Tab鍵補齊命令名或文件名。

  1. 命令歷史

a) 命令歷史容許用戶瀏覽先前輸入的命令並從新調用它們,用history命令能夠顯示命令列表,按方向鍵↑和↓可查找之前執行過的命令。!命令前綴

  1. 命令別名定義:

a) 範例:

  1. alias  copy=cp
  2. alias  dirrm= ‘rm -rf ’
  3. .bashrc    永久生效(家)
  4. 查看別名信息:alias
  5. 刪除別名:unalias copy

Linux的驅動

  1. 直接集成到內核
  2. 保存在硬盤以模的方式加載
  3. 保存在硬盤上。以模塊形式保存,可是默認加載(NTFS須要從新編譯內核)
  4. 手工安裝驅動,通常不須要手工安裝,若是須要手工安裝的就分之80安裝

注意事項

  1. 中文支持

a) 安裝中文字體和編碼

b) 終端或傳輸協議須要支持的

  1. echo  $LANG :顯示當前字體
  2. LANG=zh_CN.UTF-8 :強制更改成中文字幕

配置文件:

a) /etc/fstab 自動掛載配置文件

b) /var/lib/mlocate/mlocate.db

c) /etc/updated.confl

 

服務器管理規範:

越是安全等級要求高的服務器,越是嚴格限制用戶等級,不能全部人都是root,遠程服務器不能關機+重啓。

服務器不容許在負載高峯執行高負載命令。例如殺毒、大數據壓縮解壓縮,複製,全盤搜索

 

*************************************

VIM編輯

Vim編輯器簡介

Linux圖形化界面下的文本編輯器

gedit libre office evince PDF閱讀器

gedit是一個GNOME桌面環境下兼容UTF-8的文本編輯器。它使用GTK+編寫而成,所以它十分的簡單易用,有良好的語法高亮,對中文支持很好,支持包括gb2312gbk在內的多種字符編碼。gedit是一個自由軟件。

LibreOfficeOpenOffice.org 辦公套件衍生版, 一樣免費開源,以Mozilla Public License V2.0許可證分發源代碼,但相比OpenOffice增長了不少特點功能。LibreOffice擁有強大的數據導入和導出功能,能直接導入PDF文檔、微軟WorksLotusWord,支持主要的OpenXML格式。軟件自己並不侷限於DebianUbuntu平臺,OpenXML格式WindowsMacPRM packageLinux等多個系統平臺。

 ③Evince是一套文件閱讀工具,能夠用來閱讀許多種格式的資料,像是PostscriptPDF 或是其餘格式的文件

 

文本編輯器的做用:

建立或者修改文本文件

維護Linux系統中的各類配置文件

經常使用版本

a) vi :類Unix系統中默認的文本編輯器

b) vim vi編輯器的加強版本,習慣上也稱爲vi

c) vim 全屏幕純文本編輯器

d) vim vi的升級版

vim的使用

命令模式、輸入模式、末行模式

三種模式之間的互相切換方式

 

插入命令

e) a :在光標全部字符後插入,(追加

f) A :在光標全部行尾插入

g) i  :在光標全部字符前插入插入

h) I  :在光標全部行行首插入

i) o  :在光標下插入新行,打開新行

j) O  :在光標上插入新行

命令模式操做

k) 移動光標

  1. h :向左移動
  2. j :移動
  3. k :向上移動
  4. l :向右移動

l) 把光標移動到文件文件

  1. gg :移動光標到文件
  2. G  移動光標到文件
  3. shift+g :移動光標到文件尾

m) 把光標移動到行首或行尾

  1. shift+^ :移動到行首
  2. shift+$ 移動到行尾

n)  :n  移動到第幾 (例 :30 :移動到第30行

  • o) 刪除字母
  1. x :刪除單個字母
  2. nx :刪除n字母(:要刪除5,先按數字5x

p) 刪除整行,剪切,(刪除至關剪切)

  1. dd :刪除單行
  2. :n1,n2d :刪除指定範圍的行 (例2,5d 刪除第二行到第五行的數據)
  3. ndd :刪除 要刪除5,先按數字5dd
  4. p :粘貼 (粘貼剛剛刪除數據,刪除至關剪切)
  5. P :粘貼到光標前(粘貼剛剛刪除數據,刪除至關剪切)

q) 複製(用p/P粘貼

  1. yy :複製一行
  2. nyy :複製多 複製5,先按數字5yy
  3. dG :從光標全部行刪除到文件尾

r) 撤銷

  1. windows
    1. ctrl+z :撤銷
    2. ctrl+y :反撤銷
    3. Linux
      1. U   :撤銷
      2. ctrl+r :反撤銷

s) 替換

  1. r :替換光標所在處的字符
  2. R :從光標所在處開始替換字符,按ESC結束

t) 顯示行號

  1. :set nu   :顯示行號(臨時設置,要永久就要去配置文件:~/.vimrc裏面設置)
  2. :set nonu :不顯示行號

u) 顏色開頭

  1. :syntax off :關閉顏色
  2. :syntax on 開啓顏色

v) 查找,掌握

  1. / 查找內容,默認向下查找
    1. n :
    2. N 上一個

w) 批量替換

  1. 1,10s/old/new/g :替換110的全部oldnew
  2. %s/old/new/g  :替換整個文件的oldnew

注意:g 的範圍內全部oldnew

x) 批量註釋

  1. :1,5s/^/#/g 註釋15
  2. :1.5g/^#//g 取消註釋
  3. :1.5s/^/\/\//g :文件頭加入//註釋
  4. :1,5s/^/\/\//g :文件頭取消//註釋

vim 使用技巧

y) 在vim中導入其餘文件內容或命令結果

  1. :r 文件 :導入其餘文件內容,在命令模式
  2. :! 命令 vim執行系統命令
  3. :r  !命令 :導入命令執行後的結果

vim 文件模式

z) vim  -o  文件1  文件2 打開二個文件(列表模式ctrl + w + 向 切換

aa) vim  -o  文件1  文件2 同時打開二個文件(列模式)ctrl + w + 向右鍵 切換

配置文件

ab) ~/.vimrc vim的配置文件,注意:剛開始的話,些文件是不存在的,新創建的

ac) ~/.bashrc 環境變量配置文件:別名

快捷

ad) :map  快捷鍵  快捷鍵執行的命令 :設定快捷鍵執行的命令

 

 

注意:臨時生效,要永久生效,須要寫入 ~/.vimrc 文件

1

:map  ^P   I#<esc>

當輸入ctrl+p快捷鍵時,執行在首行添加#註釋

^P 不能手動輸入,須要執行ctrl+V+P 來定義。或者ctrl+V,而後ctrl+P

 

2

:map ^B ^x

當輸入ctrl+B快捷鍵時,光標會移動到行首,而後刪除一個字符

 

3

:ab mymail liuchuan@itxdl.cn

 

注:若是想讓這些快捷鍵永久生效,能夠寫入vim的配置文件

替換

ae) :ab  字符  替換字符 替換,按空格鍵或回車鍵替換

af) :ab  mymail  shenchao@lampbrother.net

ag) 輸入mymail 按回車鍵就會變成shenchao@lampbrother.net

注意:臨時生效,要永久生效,須要寫入 ~/.vimrc 文件

 

*************************************

軟件安裝

軟件包分類

  1. 源碼
  2. 進制包
  3. 腳本安裝包不算

 

軟件包類型

  1. 二進制包(二進制封裝包)

a) rpm軟件包   擴展名爲.rpm

b) dpkg軟件包 擴展名爲.deb

  1. 源代碼包(tar包)

a) 通常爲.tar.gz」、「.tar.bz2」等格式的壓縮包,包含程序的原始代碼

  1. 附帶安裝程序的軟件包

a) 在壓縮包內提供install.shsetup等腳本安裝程序

b) 綠色免安裝軟件包

c) 在壓縮包內提供已編譯好的執行程序,解壓到指定位置便可直接使用

 

源碼包的特色

 

 

 

進制包的分類

  1. 分類

a) DPKG包

 

DPGKDebian Packager的簡寫,Debian提供的一種軟件包管理系統,用於安裝、卸載、升級等操做,以*.deb做爲軟件包的後綴名。

 

 

 

b) RPM

 

RPMRed Hat Package Manager的縮寫,Red Hat提供的一種軟件包管理系統,用於安裝、卸載、升級等操做,以*.rpm做爲軟件包的後綴名。

RPM優缺點

c) 優勢

 

d) 缺點

 

二進制軟件包的特色

專門的工具進行安裝、卸載、升級和管理軟件

安裝簡潔、速度快

通過封裝,沒法直接獲取源代碼

功能選擇性差,功能定製不靈活

軟件包的選擇

  1. 若是軟件包是給大量客戶端訪問的,建議源碼包,由於源碼包效率高(LAMP
  2. 若是軟件是給本機訪問的,或少許用戶訪問,建議RPM

Linux軟件包的命名

Linux軟件包的命名也有必定的規律,通常遵循:名稱-版本-修正版-類型

tree-1.2.3-4.x86_64.tar.gz

tree-1.2.3-4.el6.x86.rpm

軟件名:tree

版本號:1.2.3

修訂次數:4

適用系統:el5 el6 el7

應用平臺:i386 i686 x86 x86_64 amd64 noarch不區分平臺

軟件類型:.rpm .deb .tar.gz

 

二進制軟件包安裝位置

/etc/ 配置文件保存位置

/usr/bin/ 軟件命令保存位置

/usr/lib/ 函數文件保存位置

/usr/share/doc/ 使用手冊保存位置

/usr/share/man/ 幫助文檔保存位置

RPM的依賴

  1. 樹型依賴

 

  1. 環型依賴

 

  1. 模塊依賴

a) 模塊依賴:是安裝包安裝的時候指定的一個安裝包,須要人們去官方網站:www.rpmfing.net 中查找

 

 

名和包全名的區別

  1. 全名:操做的是未安裝軟件包,使用包全名,而且須要絕對路徑
  2.   :操做的是已經安裝的軟件包,使用包名,能夠不使用絕對路徑,由於包名記錄在rpm數據

 

rpm的命名含義

 

rpm包的默認安裝位置

 

 

rpm包安裝命令

  1. rpm  –ivh  包全 :安rpm,注意必定要包命名

a)   –i  install安裝install

b)   –v  :顯示理詳細的信息(verbose

c)   -h  :打包#顯示安裝進度(hash

d)   --test  :測試安裝,只是檢測一下依賴性,不會實際安裝

e)   --force 強制安裝。無論是否已經安裝,都從新安裝。--replacefi/es –replacepkgs的綜合,注意:用來要是系統中軟件中的一個文件丟失可用--force修復,--force只替換軟件中沒的文件其它文件的配置等都會保留

如下能夠做爲參考,不建議使用

 

 

RPM包服務啓動

  1. service  服務  start  :啓動服務
    1. start  :啓動服務
    2. stop  :中止服務
    3. restart  :重啓服務
    4. status  :查看服務狀態
    5. httpd服務的啓動

a) service  httpd  start  :啓動服務

b) /etc/rc.d/init.d/httpd start Linux各個版本通用的服務啓動方法

c) 網頁目錄:/var/www/html/.index.html

d) 配置目錄:/etc/httpd/conf/httpd.conf

e) 日誌文件/var/log/httgp/

 注意服務的標準啓動方式:/目錄/啓動文件 restart

RPM升級

 

升級命令:

格式:

rpm   Uvh  軟件包全名

-U 升級安裝,若沒安裝,則直接安裝,若安裝有舊版本,則升級安裝

-F 升級安裝,若沒安裝,則不安裝,必須有舊版本,才進行升級安裝

 

RPM卸載

  1. rpm  -e  包  :卸載,要是有依賴性就須要把包全都一一的卸載

a) --nodeps  :不檢查依賴性,不能使用

RPM的查詢

  1. 查詢是否安裝

a) rpm  -q  包名  查詢包是否安裝 -q  query

b) rpm  -qa  包名  列出系統全部安裝包 -a  all

c) rpm  -qa  |  wc  -l  :查詢一共多少包

d) rpm  -qa  |  grep  httpd :顯示全部安裝包

  1. 查詢軟件信息

a) rpm  -qi  包名 查詢安裝包的信息

  1. -p :安裝

b) Rpm  -qip  包全名  查詢有安裝包的信息

  1. 查詢包安裝位置

a) rpm  -ql  包名  查詢以安裝包中件的安裝位置(-l list

b) rpm  -qlp  全名 查詢未安裝包打算安裝到那位置的信息

  1. 查詢系統文件屬於那個包

a) rpm  -qf  系統文件名  查詢系統文件屬於那個包 -f  file

  1. 查詢包依賴的軟件包

a) rpm  -qR  包名  查詢已安裝包的依賴 -Rrequires

b) rpm  -qRp  包全名  查詢未安裝依賴

RPM驗證

1. rpm  -V  已安裝的包名 檢驗指定RPM中的文件(v: verify

指定軟件安裝後的完整性,及文件的元數據是否發生變化

2. rpm  -Va  :檢驗本機已經安裝的全部軟件包

3. rpm  -Vf  系統文件  檢驗某個文件是否被修改

校驗例證:

[root@lchuan ~]rpm -V  httpd

.......T.  c /etc/httpd/conf/httpd.conf

打印到屏幕上的信息共分爲3部分:

第一部分爲驗證結果;第二部分爲文件類型;第三部分爲文件位置。

 

 

對稱加密跟非對稱加密

  1. 對稱加密:

a) 本身把本身的文件加密,別人想要看個文件,就須要跟全部者就是加密這個文件的人,索取密碼

b) 至關於跟人共用一個密碼,安全級別較低,安全係數在128-512之間

  1. 非對稱加密

a) AB有本身的公鑰和私鑰跟密碼,公鑰表明鎖,私鑰表明鑰匙,密碼錶明密碼鎖。

b) A持有B公鑰,AB文件時用B公鑰加密,B能夠用本身的私鑰和密碼打開,由於是用B公鑰加密,因此這個加密文件就只有B能打開

c) A持有B公鑰,AB文件時AB公鑰加密,這樣AB能夠單獨的打開加密文件

d) 個人擁有密碼,不怕外露

e) 加密等級較高,安全係數是1024左右

f) 驗證公鑰時須要安裝CA數字證書,全部的公鑰都是CA認證的才能擁有CA數字證書

g) 由第三方CA認證來保障公鑰的可度和安全

 

數字證書

 

數字證書

剛剛的校驗方法只能對已經安裝的RPM包中的文件進行校驗,但若是RPM包自己就被動過手腳,那校驗就不能解決問題了,咱們就必須使用數字證書驗證。

數字證書的使用:

² 首先必須找到原廠的公鑰文件,而後進行安裝

² 而後安裝RPM包時,會去提取RPM包中的證書信息,而後和本機安裝的原廠證書進行驗證

² 若是驗證經過,則容許安裝;若是驗證不經過,則不容許安裝並警告

 

RPM中文件的提取

  1. 提取RPM中的文件,提取指定包中指定文件
  2. rpm2cpio  包全名  |  cpio  -div  .文件絕對路徑

a) rpm2cpio :將rpm轉換爲cpio格式的命令

b) cpio ß:是一個標準工具,它用於建立軟件檔案文件和從檔案文件中提取文件

c) –idv  :還

d) .文件絕對路徑:必定要有.」 是沒有「.」就會覆蓋系統路徑,「.」是表明當前目錄

  1. rpm2cpio  提取的包全名  |  cpio  -div  .覆蓋的文件路徑(提取到當前目錄)
  2. cp  .剛剛提取文件路徑  . 覆蓋的文件路徑  (用剛纔提取的文件複製到實際軟件路徑)
  3. cpio  -idv  用於解決文件內容的錯誤

注意:要是命令中有2就表明從2的格式轉換成2的格式(例rpm2cpio  rpm格式 轉換 cpio格式

 

cpio命令主要是用來創建或者還原備份的工具,cpio命令能夠複製文件到歸檔包中(壓縮),或者從歸檔包中導出文件(解壓縮)。

 

cpio的三種模式:

備份

格式:cpio ovcB > [文件|設備]

-o:進入copy-out模式(壓縮)

-v:顯示過程

-c:使用portable format存儲方式

-B:設定輸入輸出塊爲512bytes

例子:

cpio備份:

find  /etc  -print | cpio ocvB > /root/etc.cpio

#利用find 找出/etc 而後備份到/root

 

還原:

格式:cpio idvcu < [cpio文件]

-i:進入copy-in模式(解壓)

-d:恢復到指定位置(視壓縮方式恢復)

-v:顯示過程

-c:使用portable format存儲方式

-u:替換全部文件,無提示

例子:

cpio還原

cpio –idvcu < /root/etc.cpio

 

注:因爲備份時備份的路徑使用的是絕對路徑,全部恢復時會按照絕對路徑恢復回去,因此不會在/root下生成文件。

 

例子2

 

備份:

cd /etc #切換到/etc

find  .  –print  |  cpio  -ocvB > /root/etc.cpio

#以相對路徑方式進行備份

 

恢復:

cd /root #切換到/root

mkdir  test #建立恢復目錄

cd  test #進入恢復目錄

cpio  -idvcu  < /root/etc.cpio

#恢復以相對路徑備份的etc.cpio文件,內容會被恢復到/root/test/目錄下。

 

10rpm2cpio 提取RPM軟件包中的文件

格式:rpm2cpio  包全名 | cpio idv ./命令絕對路徑

# ./ 是當前目錄  +  命令的絕對路徑是which查詢出的絕對路徑(必須)

 

例子:

假設不當心把系統下的/bin/ls 命令刪除了,使用時報錯了,須要恢復。

方案:

A、從新安裝ls命令,使用--force選項強制執行

B、從相對應的軟件包內提取ls 命令

步驟:

² 先肯定ls 命令屬於哪個軟件包

² 先模擬出ls命令被刪除的樣子

² 提取RPM包中的ls命令,並恢復到/bin 目錄下(站到/目錄下進行恢復)

yum經常使用命令

  1. yum  -y  install  包名  :安裝
  2. yum  -y  remove 包名  卸載,卸載帶有依賴性,(若是卸載某個包,也許個包就會有依賴性,就會把這個包被依賴的包卸載。危險
  3. yum  -y  update  包名  升級,前提是要有新版本
  4. yum  list  :查詢全部能夠安裝的包
  5. yum  list  包名  :查詢yum源服務器中是否包含某個軟件包
  6. yum  search  關鍵  :搜索yum源服務器上全部和關鍵字相關的包
  7. yum  info  samba  :查詢指定軟件包的信息
  8. yum  list  :查詢yum加更新數據庫

yum管理命令

  1. 查詢能夠安裝的軟件組

a) yum  grouplist  :列出全部可用的軟件組列表

  1. 查詢軟件組內包含的軟件

a) yum  groupinfo  軟件組名 :列出軟件組中包含的軟件   (例yum  groupinfo  "Web Server" :查詢軟件組"Web Server"中包含的軟件

  1. 安裝軟件組

a) yum  groupinstall  軟件組名 :安裝指定軟件組 (例yum  groupinstall  " Web Server " :安裝網頁服務軟件組

  1. 卸載軟件組

a) yum  groupremove 軟件組名  :卸載指定軟件組

yum搭建方式:

² 本地光盤源

² 局域網yum源

² 互聯網yum源

光盤yum

  1. cd  /etc/yum.repos.d/ :找到系統下的默認yum
  2. mv  CentOS-Base.repo  CentOS-BS.repo.bak :更改系統默認yu源,能夠用更更名稱讓系統識別到。

注意:通常須要禁止的系統執行文件基本都用更名來處理

a) 解釋下yum源文件

  1. [base] :容器名稱,必定要放在[]中
  2. name :容器說明,能夠本身隨便寫
  3. mirrorlist :鏡像站點,這個能夠註釋掉
  4. baseurl :咱們的 yum 源服務器的地址。默認是 CentOS 官方的 yum 源服務器,是能夠使用的,若是你以爲慢能夠改爲你喜歡的 yum 源地址
  5. enabled :此容器是否生效,若是不寫或寫成 enable=1 都是生效,寫成enable=0 就是不生效
  6. gpgcheck :若是是 1 是指 RPM 的數字證書生效,若是是 0 則不生效
  7. gpgkey :數字證書的公鑰文件保存位置。不用修改
  8. mount  /dev/sr0  /mnt/cdrom  :掛載光盤
  9. vi  /etc/yum.repos.d/CentOS-Media.rpo 進入光盤yum的配置文件

a) baseurl=file:///mnt/cdrom/ :將第一行修改成光盤路徑,要是有剩就一一註釋

注意/////是表明協議/表明根目錄

b) enabled=1  設置yum源文件生效

  1. yum  list  :查詢yum加更新數據庫
  2. pkill  -9  yum-updatesd  :若是yum報錯正在升級,執行此命令,強制殺死升級進程
  3. yum  -y  install  gcc  gccc語言編譯器,不裝gcc,源碼包不能安裝

源碼包安裝問題

  1. 否能夠安裝rpmApache,又安裝源碼包的Apache

a) 答案:能夠的,由於安裝的路徑位置不一樣

  1. 生產環境下,是否會同時安裝兩個Apache?

a) 答案:不會,由於系統只能啓動

  1. 端口,是否能夠修改?

a) 若是服務是給大量客戶端訪問的,不建議修改端口,如Apache

b) 若是服務只是給內部用戶訪問,建議修改端口,如ssh

  1. 到底選安裝那個?

a) 答案:建議源碼包

RPM包跟源碼包的配置文件

  1. RPMApacherpm  -ql  包名  :查詢包名的路徑

a) 配置文件 /etc/httpd/conf/httpd.conf

b) 啓動腳本 /etc/rc.d/init.d/httpd

c) 網頁     /var/www/html/

d) 日誌     /var/log/httpd/

e) 啓動方式 

  1. Service  httpd  start :啓動
  2. /etc/rc.d/init.d/httpd  start :啓動

f) RPM的僞用戶:daemon

  1. 源碼包:Apache全部的源碼包都在/usr/local/apache2/

a) 配置文件 /usr/local/apache2/conf/httpd.conf

b) 啓動腳本 /usr/local/apache2/bin/apachectl

c) 網頁     /usr/local/apache2/htdocs/

d) 日誌     /usr/local/apache2/logs/

e) 啓動方式 

  1. /usr/local/apache2/bin/apachectl  start

f) 源碼包的僞用戶:apache

源代碼軟件包特色:

最新的軟件版本

根據用戶須要,靈活定製軟件功能

應用場合舉例:

安裝較新版本的應用程序時

當二進制軟件沒法知足須要時  

  編譯安裝可由用戶自行修改、定製功能

須要爲應用程序添加新的功能時

make命令

make命令是GNU的工程化編譯工具,用於編譯衆多相互關聯的源代碼問價,以實現工程化的管理,提升開發效率。

注意:使用要先安裝gccc語言編譯

make  (選項)  (參數)

選項:

-f:指定makefile」文件;

-i:忽略命令執行返回的出錯信息;

-s:沉默模式,在執行以前不輸出相應的命令行信息;

-r:禁止使用build-in規則;

-n:非執行模式,輸出全部執行命令,但並不執行;

-t:更新目標文件;

-qmake操做將根據目標文件是否已經更新返回"0"或非"0"的狀態信息;

-p:輸出全部宏定義和目標文件描述;

-dDebug模式,輸出有關文件和檢測時間的詳細信息。

源碼包安裝

 注意:必定要指定安裝位置(除非指定安裝位置會報錯)

安裝源碼包前必須先安裝gccgccc語言編譯器

安裝方式:yum  -y  install  gcc

  1. 遠程傳輸工具

a) winscp :綠化工具,目前主流

b) xshell自帶的文件傳輸工具

  1. rpm -ivh /mnt/cdrom/packages/lrzsz-0.12.20.27.1.e16.i686:安裝傳輸工具包
  2. rz :上傳文件
  3. sz 下傳文件
  4. 安裝

a) 解壓

b)  cd 解壓目錄

c)  查看安裝文檔

  1. INSTALL :安裝文檔
  2. README :說明文檔
  3. 編譯前準備:

a) ./configure  --prefix=/usr/local/apache2/

b) –prefix :指定安裝位置

c) 檢查系統環境是否符合安裝要求

d) 自定義功能,最後生成Makefile文件

  1. 如何判斷報錯

a) 安裝必須中止

b) 是否出現error,warning,no等關鍵

  1. 編譯 make

a) 若是安裝報錯,就必須先用make clean命令,才能從新安裝

  1. 編譯安裝:make install

a) 若是安裝報錯不止要用make clean命令,還要刪除安裝位置注意error warning等錯誤報警

  1. 啓動 /usr/local/apache2/bin/apachectl  start

a) 如何啓動能夠在安裝文檔中查詢

b) 啓動時有報錯不用理

  1. 刪除 :直接刪除安裝目錄

安裝舉例

準備環境:

yum 倉庫

確認源代碼編譯環境

需安裝支持 C/C++程序語言的 編譯器

gcc-4.1.1-52.el5gcc-c++-4.1.1-52.el5

make-3.81-1.1.i386 ……

安裝步驟:

 

補丁

  1. 補丁的生成

a) diff  選項 old  new :比較 old new 文件的不一樣

b) 選項:

  1. -a 將任何文檔當作文本文檔處理
  2. -b 忽略空格形成的不一樣
  3. -B 忽略空白行形成的不一樣
  4. -I 忽略大小寫形成的不一樣
  5. -N 當比較兩個目錄時,若是某個文件只在一個目錄中,則在另外一個目錄中視做空文件
  6. -r 當比較目錄時,遞歸比較子目錄
  7. -u 使用同一的輸出格式
  8. 實驗:

a) 分別建立old 和  new 兩個文本文件,有相同的內容,也有不一樣的內容,造成對比。、

 

b) #建立兩個文件,內容要有差異

c) diff  -Naur  /test/old.txt  /test/new.txt  >  ./txt.patch

 

d) 打開生成的txt.patch,會發現new 比 old 多出來的兩行被單獨標記出來(用+號)

e) 比較下兩個文件的不一樣,並生成補丁文件

  1. diff  -Naur  /root/test/old.txt  /root/test/new.txt  > txt.patch:比較兩個文件的不一樣,同時生成 txt.patch 補丁文件
  2. 打入補丁

a) patch  –pn  < 補丁文件:按照補丁文件進行更新(例:patch -p3  <  txt.patch  patching file  old.txt

b) 選項:

  1. –pn  n 爲數字。表明按照補丁文件中的路徑,指定更新文件的位置。
  2. -p:設置要剝離的目錄層數

c) –p3 :用來刪除補丁文件裏面的目錄,如/tmp/texe刪除:根,tmptexe三個目錄因此就是-p3

d) 「-pn」很差理解,咱們說明下。補丁文件是要打入舊文件的,可是你當前所在的目錄和補丁文件中的記錄的目錄是不必定匹配的,因此就須要「-pn」來同步兩個目錄。好比我當前是在「/root/test」目錄中(我要打補丁的舊文件就在當前目錄下),補丁文件中記錄的文件目錄爲「/root/test/old.txt」,這時若是寫入「-p1」(在補丁文件目錄中取消一級目錄)那麼補丁文件就會打入「/root/test/root/test/old.txt」文件中,這顯然是不對的。那若是寫入的是「-p2」(在補丁文件目錄中取消二級目錄)那麼補丁文件打入的就是「/root/test/test/old.txt,這顯然也不對。若是寫入的是「-p3」(在補丁文件目錄中取消三級目錄)那麼補丁文件就是打入的「/root/test/old.txt」,咱們的 old.txt 文件就在這個目錄下,因此就應該是「-p3

實驗:

patch -p2 < txt.patch

#按照補丁文件對old.txt 進行更新

 

 

腳本安裝程序

  1. 腳本安裝

a) webmin是經過網頁來管理Linux系統

b) ./setup.sh

  1. 安裝時出現選項意思

a) 安裝位置

b) 日誌位置

c) Perl安裝位置

d) 端口

e) 管理員名

f) 管理密碼

g) 是否開啓自動啓動

h) ssl:不啓動

函數庫管理

  1. 函數庫分類

a) 靜態函數庫

  1. 函數庫文件通常以*.a」擴展名結尾。這種函數庫在被程序調用時會被直接整合到程序當中
  2. 優勢:程序執行時,不須要再調用外部數據,能夠直接執行
  3. 缺點: 由於把全部內容都整合到程序中,因此編譯生成的文件會比較大升級比較困難,須要把整個程序都重新編譯

b) 動態函數庫

  1. 函數庫文件一般以*.so」擴展名結尾。這種函數庫被程序調用時,並無直接整合到程序當中,當程序須要用到函數庫的功能時,再去讀取函數庫。在程序中只保存了函數庫的指向

 

  1. 函數庫管理

a) 查詢

  1. ldd  -v  可執行文件名 :查詢執行程序調用了那個函數庫 (例ldd  /bin/ls :查詢 ls 命令調用了哪些函數庫
  2. -v  顯示詳細版本信息

 

函數庫通常能夠直接在網上下載到,那麼應該如何安裝呢?

通常狀況下函數庫文件的存放位置是在/usr/lib/ /lib 下;而後會在/etc/ld.so.conf 配置文件中記錄 這兩個目錄或者新增長的目錄,這個配置文件中只記錄函數庫存放目錄,不記錄實際函數庫名稱

 

b) 安裝

  1. 安裝介紹:咱們新安裝了一個函數庫,如何讓它被系統識別呢?其實軟件若是是正常安裝,是不須要手工調整函數庫的,它們都會被正常安裝。可是萬一沒有安裝正確,須要手工安裝呢?那也很簡單,只要把函數庫放入指定位置,通常咱們都放在「/usr/lib」或「/lib中,而後把函數庫所在目錄寫入「/etc/ld.so.conf文件。注意是把函數庫所在目錄名寫入,而不是函數庫的文件名
    1. 函數存放目錄:/usr/lib
    2. 函數寫入文件:/etc/ld.so.conf
    3. cp  *.so  /usr/lib/ :把函數庫拷貝入/usr/lib 目錄

因爲/usr/lib/已經被/etc/ld.so.conf配置文件記錄因此不須要重寫

3. 假有新的目錄須要改寫到/etc/ld.so.conf配置文件中,寫完後須要刷新下緩存

ldconfig 刷新函數庫配置文件緩存

-p 列出緩存中識別的全部的函數庫

  1. vi  /etc/ld.so.conf :修改函數庫配置文件
  2. include  ld.so.conf.d/*.conf :寫入函數庫所在目錄(其實/usr/lib 目錄默認已經被識別)
  3. ldconfig :從/etc/ld.so.conf 中把函數庫讀入緩存
  4. ldconfig  –p:查詢列出系統緩存中全部識別的函數庫

補充

  1. date

a) date :查看系統時間

b) date  –s  日期/時間 :修改系統日期,時間要另外在修改

c) date  -s  時間/日期 :修改系統時間日期要另外在修改

  1. ll  -h  目錄名:只能統計文件大小,不能統計目錄,要是強制統計目錄只會統計目錄的i節點Block的大小
  2. du

a) du  -h  目錄 查看目錄下文件的大小並統計目錄的大小統計文件大小,要是和df的結果不同,建議重啓系統

b) du  -sh  目錄名 :只查看目錄大小統計文件大小,要是和df的結果不同,建議重啓系統

  1. df  -h  :查看分區,是統計空間
  2. df跟du的區別

a) df :統計佔用的空間大小,統計剩餘空間是準確的

b) du :統計文件大小。統計的文件大小是準確的

 

*************************************

用戶管理

Linux是基於用戶身份對系統的資源進行管理的操做系統

用戶和組的類型

用戶賬號:UID(User Identity,用戶標識號)

  超級用戶  UID:0 UID:0

系統用戶  UID:1-499 UID:1-999

普通用戶  UID:500-65535 UID:1000-65535

組賬號:GID(Group Identify,組標識號)

  初始組(私有組)

  附加組(公共組)

用戶信息文件

  1. 用戶信息文件:/etc/passwd
  2. 影子文件 /etc/shadow
  3. 組信息文件 /etc/group
  4. 組密碼文件:/etc/gshadow
  5. 用戶郵箱目錄 /var/spool/mail
  6. 用戶模板目錄:/etc/skel/

用戶信息文件/etc/passwd

 

  1. 第一列:用戶名
  2. 第二列:密碼位
  3. 第三列:用戶 ID

a) 用戶 ID :0  超級用戶 UID。若是用戶 UID 爲 0,表明這個帳號是管理員帳號。 Linux 中如何把普通用戶升級成爲管理員呢?就是把其餘用戶的  UID 修改成 0 就能夠了,這點和 Windows 是不一樣的。不過不建議建 立多個管理員帳號。

b) 用戶 ID :1-499  系統用戶(僞用戶)UID。這些UID帳號是系統保留給系統用戶的UID,也就是說 UID 1-499 範圍內的用戶是不能登陸系統的,而是用來運行系統或服務的。其中 1-99 是系統保留的帳號,系統自動建立。100-499 是預留給用戶建立系統帳號的。

c) 用戶 ID :500-65535  普通用戶 UID。創建的普通用戶 UID 從 500 開始,最大到 65535。這些用戶足夠使用了,可是若是不夠也不用懼怕,2.6.x 內核之後的Linux 系統用戶 UID 已經能夠支持 232 這麼多了。

  1. 第四列:組 ID  GID 添加用戶時,若是不指定用戶所屬的初始組,那麼會創建和用戶名相同的組

添加用戶時,若是不指定用戶的初始組,則會自動建立和用戶名相同的組。

  1. 第五列:用戶說明
  2. 第六列:用戶家目錄超級管理員root的家目錄/root/;普通用戶的家目錄 /home/***
  3. 第七列:登陸 shell /bin/bash

如何把普通用戶變成超級用戶:把用戶 UID 改成 0

/bin/bash 能登陸系統;/sbin/nologin 不能登陸系統

影子文件 /etc/shadow

 

  1. 第一列:  用戶名
  2. 第二列:  加密密碼

a) 咱們也能夠在密碼前人爲的加入「!」或「*」改變加密值讓密碼暫時失效,使這個用戶沒法登錄,達到暫時禁止用戶登陸的效果。

b) 注意全部僞用戶的密碼都是「!!」或「*」,表明沒有密碼是不能登陸的。

c) 固然我新建立的用戶若是不設定密碼,它的密碼項也是「!!」,表明這個用戶沒有密碼,不能登陸

  1. 第三列:  密碼最近更改時間, 1970 1 1 日做爲標準時間

a) 時間戳轉日期

  1. [root@localhost ~]#  date -d "1970-01-01 15775 days"
  2. 2013 03 11 日 星期一 00:00:00 CST

b) 日期轉時間戳

  1. [root@localhost ~]# echo $(($(date --date="2013/03/11" +%s)/86400+1))
  2. 1577
  3. 第四列:  兩次密碼的修改間隔時間(和第 3 字段相比)密碼最短有效期
  4. 第五例:  密碼有效期(和第 3 字段相比)密碼最長有效期
  5. 第六列:  密碼修改到期前的警告天數(和第 5 字段相比)
  6. 第七列:  密碼過時後的寬限天數(和第 5 字段相比)
  7. 第八列:  密碼失效時間

a) 這裏一樣要寫時間戳,也就是用 1970 1 1 日進行時間換算。若是超過了失效時間,就算密碼沒有過時,用戶也就失效沒法使用了

  1. 第九列:  保留

組信息文件 /etc/group

 

  1. 第一列:  組名
  2. 第二列:  組密碼位
  3. 第三列:  GID     ID號(GID
  4. 第四列:  此組中支持的其餘用戶.附加組是此組的用戶

a) 初始組:每一個用戶初始組只能有一個,初始組只能有一個,通常都是和用戶名相同的組做爲初始組

b) 附加組:每一個用戶能夠屬於多個附加組。要把用戶加入組,都是加入附加組

組密碼文件:/etc/gshadow

  1. 若是我給用戶組設定了組管理員,並給該用戶組設定了組密碼,組密碼就保存在這個文件當中。組管理員就能夠利用這個密碼管理這個用戶組了。

用戶的家目錄

  1. 超級用戶:默認在:/root 中
  2. 普通用戶:默認在:/home/的目錄

用戶郵箱目錄

  1. /var/spool/mail 目 錄 當 中 ,
  2. lamp 用 戶 的 郵 箱 就 是/var/spool/mail/lamp 文件

用戶模板目錄

  1. /etc/skel/ :用來設置創建用戶的默認設置

添加用戶:useradd 命令

  1. useradd 用戶名 :建立用戶
  2. useradd  選項  用戶名

a) 選項:

  1. -u 550 指定 UID
  2. -g 組名  指定初始組 不要手工指定
  3. -G 組名  指定附加組,把用戶加入組,使用附加組
  4. -c 說明  添加說明

6-d 目錄  手工指定家目錄,目錄不須要事先創建

  1. -s shell  /bin/bash.

b) 例useradd  -u  550  -g  lamp1  -G   root -d /home/lamp1   -c  "test user"  -s  /bin/bash lamp1 :創建用戶 lamp1 的同時指定了 UID550),初始組(lamp1),附加組(root),家目錄(/home/lamp1),用戶說明(test user)和用戶登陸 shell/bin/bash

  1. useradd  -G  user1  aa  添加用戶 aa,指定附加組爲 user1

 

 

 

 

 

 

 

 

 

 

useradd 默認值文件

  1. useradd 添加用戶時參考的默認值文件主要有兩個,分別是/etc/default/useradd /etc/login.defs

/etc/default/useradd

 

a) GROUP=100 :這個選項是創建用戶的默認組,也就是說添加每一個用戶時,用戶的初始組就是 GID 100 的這個用戶組。目前咱們採用的機制私有用戶組機制。

b) HOME=/home :這個選項是用戶的家目錄的默認位置,因此全部的新建用戶的家目錄默認都在/home/下。

c) INACTIVE=-1 :

  1. 這個選項就是密碼過時後的寬限天數,也就是/etc/shadow 文件的第七個字段。若是是天數,
  2. 好比 10 表明密碼過時後 10 天后失效;
  3. 若是是 0,表明密碼過時後當即失效;
  4. 若是是-1,則表明密碼永遠不會失效。
  5. 這裏默認值是-1,因此全部新創建的用戶密碼都不會失效。

d) EXPIRE=   :

  1. 這個選項是密碼失效時間,也就是/etc/shadow 文件的第八個字段。
  2. 也就說用戶到達這個日期後就會直接失效。固然這裏也是使用時間戳來表示日期的。默
  3. 認值是空,因此全部新建用戶沒有失效時間,永久有效。

e) SHELL=/bin/bash :

  1. 這個選項是用戶的默認 shell 的。/bin/bash Linux 的標誌 shell
  2. 因此全部新創建的用戶默認都具有 shell 賦予的權限。

f) SKEL=/etc/skel :這個選項就是定義用戶的模板目錄的位置,/etc/skel/目錄中的文件都會複製到新建用戶的家目錄當中。

g) CREATE_MAIL_SPOOL=yes  :

  1. 這個選項定義是否給新建用戶創建郵箱,默認是建立,
  2. 也就是說全部的新建用戶系統都會新建一個郵箱,
  3. 放在/var/spool/mail/下和用戶名相同。

 

 

 

 

 

 

/etc/login.defs

 

 

h) MAIL_DIR  /var/spool/mail :

  1. 這行指定了新建用戶的默認郵箱位置。好比 lamp用戶的 郵箱是就是/var/spool/mail/lamp

i) PASS_MAX_DAYS  99999 :

  1. 這行指定的是密碼的有效期,也就是/etc/shadow 文件的第五字段。表明多少天以後必須修改密碼,默認值是 99999

j) PASS_MIN_DAYS  0  :

  1. 這行指定的是兩次密碼的修改間隔時間,也就是/etc/shadow 文件的第四字段。表明第一次修改密碼以後,幾天後才能再次修改密碼。默認值是 0

k) PASS_MIN_LEN  5  :

  1. 這行表明密碼的最小長度,默認不小於 5 位。可是咱們如今用戶登陸時驗證已經被 PAM模塊取代,因此這個選項並不生效。

l) PASS_WARN_AGE  7  :

  1. 這行表明密碼修改到期前的警告天數,也就是/etc/shadow 文件的第六字段。表明密碼到底有效期前多少天開始進行警告提醒,默認值是 7 天。

m) UID_MIN 500

n) UID_MAX 60000

  1. 這兩行表明建立用戶時,最小 UID 和最大的 UID 的範圍。咱們 2.6.x 內核開始,Linux用戶的 UID 最大能夠支持 232 這麼多,可是真正使用時最大範圍是 60000。還要注意若是我手工指定了一個用戶的 UID 550,那麼下一個建立的用戶的 UID 就會從 551 開始,哪怕500-549 之間的 UID 沒有使用(小於 500 UID 是給僞用戶預留的)。
  • o) GID_MIN 500

p) GID_MAX 60000

  1. 這兩行指定了 GID 的最小值和最大值之間的範圍。

q) CREATE_HOME  yes :

  1. 這行指定創建用戶時是否自動創建用戶的家目錄,默認是創建

r) UMASK  077 :

  1. 這行指定的是創建的用戶家目錄的默認權限,由於 umask 值是 077,因此新建的用戶家目錄的權限是 700umask 的具體做用和修改方法咱們能夠參考下一章權限設定章節。

s) USERGROUPS_ENAB  yes :

  1. 這行指定的是使用命令 userdel 刪除用戶時,是否刪除用戶的初始組,默認是刪除。

t) ENCRYPT_METHOD SHA512 :

  1. 這行指定 Linux 用戶的密碼使用 SHA512 散列模式加密,這是新的密碼加密模式,原先的 Linux 只能用 DES MD5 方式加密

設定密碼

  1. passwd 用戶名 :更改密碼,root能夠更改任何一個用戶的密碼
  2. passwd 更改密碼,主要給普通用戶更改自己的密碼
  3. passwd 選項 用戶名

a) 選項:

  1. -l 鎖定用戶密碼,用戶不容許登陸
  2. -u 解鎖
  3. -S(大)  用戶名 #查看用戶賬號的狀態(是否被鎖定)
  4. --stdin 容許管道符輸入密碼
  5. echo  "123456"  |  passwd  --stdin  user2
  6. 主要是用來寫腳本的

第一次對用戶使用時是爲此用戶建立密碼,第二次使用時是修改密碼。

root身份執行passwd

1、能夠給任何用戶設置或修改密碼

2、在進行密碼修改時不須要提供原始密碼

普通用戶執行passwd

1、默認只能給本身修改密碼

2、給本身修改密碼時須要提供用戶的當前密碼

非交互式密碼設置:

echo 「123123」 | passwd --stdin user1

用戶信息修改

  1. usermod  選項  用戶 :修改已經存在的用戶信息

a) 選項:

  1. -u 550 指定 UID
  2. -g 組名  指定初始組 不要手工指定
  3. -G 組名  指定附加組,把用戶加入組,使用附加組
  4. -c 說明  添加說明
  5. -d 目錄  手工指定家目錄,目錄不須要事先創建

-d 目錄 #結合 -m 選項直接對源家目錄進行更名實現修改家目錄

usermod m d /home/u4  user4 (用戶user的原家目錄是/home/user4

  1. -s  shell  類型 : 修改用戶的登陸shell類型  /bin/bash.
  2. Usermod  -G  組  用戶  把用戶加進組
  3. usermod  -L()  用戶名 鎖定用戶
  4. usermod  -U()  用戶名 解鎖
  5. usermod  -l 新名 舊名 : 用戶更名

刪除用戶

1.  userdel  -r 用戶名 :刪除用戶

-r :連帶家目錄一塊兒刪除

添加刪除組

  1. groupadd  組名 添加組,
  2. groupdel  組名 在組中刪除用戶  注意:必須是空組

把已經存在的用戶加入組

  1. usermod  -G  組名 用戶名 用戶加入組
  2. gpasswd  -a  用戶名 組名 用戶加入組
  3. gpasswd  -d  用戶名 組名 把用戶從組中刪除

用戶相關命令

  1. id  用戶名 :顯示用戶的 UID,初始組,和附加組
  2. su  -  用戶名 切換用戶身份

a)  「-「  連帶環境變量一塊兒切換

改變有效組的命令

  1. 假設 aa 用戶即屬於 aa 組,也屬於 group1 組,若是有效組是 aa 組,那麼 aa用戶創建文件時,文件默認屬組是 aa 組。若是有效組是 group1 組,那麼aa 用戶創建文件時,文件默認屬組是 group1
  2. aa 身份登陸:
  3. newgrp  group1   aa必須屬於group1組,改變aa的有效組爲group1
  4. aa 建立的新文件,默認屬組僞 group1,而再也不是 aa

用戶權限賦予

  1. /test 目錄,要求 aabbcc 用戶對此目錄有 rwx。其餘人沒有權限
  2. groupadd  testgrp  創建組
  3. gpasswd  -a  aa  testgrp  aabbcc 加入組
  4. bb
  5. cc
  6. chmod  770  /test  修改組權限
  7. chgrp  testgrp  /test  修改屬組

補上

  1. env :查詢系統下已經生成或生效的環境變量
  2. echo  $PATH :$PATH環境變量,裏面存放着命令

其餘相關命令

一、id 用戶名

#顯示用戶的UID、初始組、附加組列表

二、su 用戶名

#切換用戶身份

   su  -  用戶名

#連帶環境變量一塊兒切換

三、newgrp 組名

#修改用戶的有效組,切換到普通用戶以後,執行命令

有效組定義:用戶建立文件或目錄時使用哪一個組做爲文件的所屬組,就是有效組。

注:

初始組、附加組:是用戶和組之間的關係

有效組:用戶和文件之間的關係

 

*************************************

權限管理

ACL權限

ACL 概述

 

ACLAccess Control Lists),爲單一的用戶或者組設置對文件或者目錄的獨立rwx權限,對於有些特殊需求很是有幫助。

  1. ACL查詢

a) dumpe2fs  -h  分區文件 :查詢指定分區詳細文件系統信息

  1. -h :僅顯示超級塊中信息,而不顯示磁盤塊組的詳細信息

ACL基本命令

 查詢

b) getfacl

  1. getfacl 文件名 :查詢文件的 acl 權限
  2. setfacl 選項 文件名 : 設定 acl 權限
    1. -m :設定權限
    2. -b :刪除權限
    3. –x :刪除指定權限

 創建

  1. setfacl  -m  u:用戶名:權限  文件名 :給用戶額外加文件權限。
    1. 例:setfacl  -m  u:aa:rwx  /test :給test目錄賦予 aa 是讀寫執行的 acl 權限
    2. setfacl  -m  g:組名:權限  文件名 :給組額外加文件權限。
      1. 例:setfacl  -m  g:aa:rwx  /test :給test目錄賦予 aa 是讀寫執行的 acl 權限
      2. setfacl  -m  u:用戶名:權限  -R  目錄名  :賦予遞歸 acl 權限,只能賦予目錄 (例setfacl  -m u:cc:rx  -R soft/
        1. -R :遞歸
        2. setfacl  -m  d:u:用戶名:權限  -R  /test acl 默認權限。 注意:默認權限只能賦予目錄,就是給目錄下的新建文件賦予默認權限 (例setfacl  -m  d:u:aa:rwx  -R  /test
        3. setfacl  -m  m:權限  project/:設定 mask 權限爲 r-x。使用「m:權限」格式 (例setfacl  -m  m:rx  project/

注意:若是給目錄賦予 acl 權限,兩條命令都要輸入

-R 遞歸·

-m  u:用戶名:權限 :只對已經存在的文件生效

-m  d:u:用戶名:權限 :只對將來要新建的文件生效

刪除

  1. setfacl  -b  文件名  刪除 acl 權限 (例setfacl  -b  project/
  2. setfacl  -x  u:用戶名  /project/ :刪除指定用戶和用戶組的 ACL 權限 (例setfacl  -x  u:st  /project/

 

手工開啓ACL 權限

a) mount  -o  remount,acl  / :從新掛載根分區,並掛載加入 acl 權限 (臨時生效)

  1. vi  /etc/fstab  
  2. UUID=c2ca6f57-b15c-43ea-bca0-f239083d8bd2 / ext4 defaults ,acl 1 1
  3. 永久生效

 

 

 

Sudo受權權限

sudo簡介和原則

  1. Sudo是管理員將部分只有管理員才能執行的命令受權給普通用戶。
  2. 超級用戶賦予普通用戶,部分只能超級用戶才能執行的命令
  3. Sudo是用戶針對命令的權限
  4. 普通用戶獲得的權限,必須是由超級用戶賦予的
  5. 原則

a) 命令越詳細,獲得的權限就越小

b) 命令越粗略,獲得的權限就越大

 

root 身份  visudo命令

  1. visudo  :賦予普通用戶權限命令,命令執行後和 vi 同樣使用

a) root     ALL=(ALL)   ALL

b) 用戶名  被管理主機的地址=(可以使用的身份)  受權命令(絕對路徑)

c) %wheel   ALL=(ALL)   ALL

d) %組名    被管理主機的地址=(可以使用的身份)  受權命令(絕對路徑)

  1. 用戶名/組名:
    1. 表明 root 給哪一個用戶或用戶組賦予命令,
    2. 注意組名前加%」用戶能夠用指定的命令管理指定 IP 地址的服務器。
    3. 若是寫 ALL,表明能夠管理任何主機,若是寫固定 IP,表明用戶能夠管理指定的服務器。(這裏真的很奇怪啊,超哥一直認爲這裏的 IP 地址管理的是登陸者來源的 IP 地址,查了不少資料也都是這樣的。直到有一天超哥查看「man 5 sudoers」幫助,才發現你們原來都理解錯誤了,這裏的 IP 指定的是用戶能夠管理哪一個 IP 地址的服務器。
    4. 那麼若是你是一臺獨立的服務器,這裏寫 ALL 和你服務器的 IP 地址,做用是同樣的。而寫入網段,只有對 NIS 服務這樣用戶和密碼集中管理的服務器纔有意義)。
    5. 若是咱們這裏寫本機的 IP 地址,不表明只容許本機的用戶使用指定命令,而表明指定的用戶能夠從任何 IP 地址來管理當前服務器。
    6. 可以使用身份:
      1. 就是把來源用戶切換成什麼身份使用,(ALL)表明能夠切換成任意身份。這個字段能夠省略
      2. 受權命令:
        1. 表明 root 把什麼命令受權給普通用戶。默認是 ALL,表明任何命令,這個固然不行。
        2. 若是須要給那個命令受權,寫入命令名便可,不過須要注意必定要命令寫成絕對路徑

舉例

  1. 設置重啓命令給普通用戶使用

a) visudo  :打開配置文件

b) 用戶名  ALL= /sbin/shutdown  –r  now

c) sudo  -l :查看當前用戶可用的受權

  1. 設置普通用戶管理Web服務

a) 首先要分析受權用戶管理 Apache 至少要實現哪些基本受權:

  1. 能夠使用 Apache 管理腳本
  2. 能夠修改 Apache 配置文件
  3. 能夠更新網頁內容
  4. 假設 Aapche 管理腳本程序爲/etc/rc.d/init.d/httpd

b) 第一種方法

  1. visudo
  2. lamp  192.168.0.156=/etc/rc.d/init.d/httpd reload,\/etc/rc.d/init.d/httpd configtest
  3. 受權用戶 lamp 能夠鏈接 192.168.0.156 上的 Apache 服務器,經過 Apache 管理腳本從新讀取配置文件讓更改的設置生效(reload)和能夠檢測 Apache 配置文件語法錯誤(configtest),但不容許其執行關閉(stop)、重啓(restart)等操做。(「\」的意思是一行沒有完成,下面的內容和上一行是同一行。)

c) 第二種方法

  1. visudo
  2. lamp  192.168.0.156=/binvi /etc/httpd/conf/httpd.conf
  3. 受權用戶lamp能夠用root身份使用vi編輯Apache 配置文件

注意以上兩種 sudo 的設置,要特別注意,不少朋友使用 sudo 會犯兩個錯誤:第一,受權命令沒有細化到選項和參數;第二,認爲只能受權管理員執行的命令

d) 條件三則比較簡單,假設網頁存放目錄爲/var/www/html ,則只須要受權 lamp 對此目錄具備寫權限或者索性更改目錄全部者爲 lamp 便可。若是須要,還能夠設置 lamp 能夠經過 FTP等文件共享服務更新網頁

  1. 受權普通用戶能夠添加其餘普通用戶

a) visudo

b) aa  ALL=/usr/sbin/useradd :賦予 aa 添加用戶權限.命令必須寫入絕對路徑

  1. 受權普通用戶能夠密碼取消root密碼修改

a) visudo

b) aa  ALL=/usr/bin/passwd :賦予改密碼權限

c) aa ALL=/usr/bin/passwd [A-Za-z]*, !/usr/bin/passwd "", !/usr/bin/passwd  root  :賦予改密碼權限並取消對 root 的密碼修改

  1. 普通用戶使用 sudo 命令執行超級用戶命令

a) sudo  /usr/sbin/useradd  ee :普通用戶使用 sudo 命令執行超級用戶命令

三大文件特殊權限

分類

  1. SetUID   :只針對文件
  2. SetGID   :針對文件也針對目錄
  3. Sticky BIT :只針對目錄

設定文件特殊權限

  1. 特殊權限這樣來表示:

a) 4 :表明 SUID

b) 2 :表明 SGID

c) 1 :表明 SBIT

 

SetUID

SetUID是什麼,功能

  1. SetUID 的功能能夠這樣理解:

a) 只有能夠執行的二進制程序才能設定 SUID 權限

b) 命令執行者要對該程序擁有 x(執行)權限

c) 命令執行者在執行該程序時得到該程序文件屬主的身份(在執行程序的過程當中靈魂附體爲文件的屬主)

d) SetUID 權限只在該程序執行過程當中有效,也就是說身份改變只在程序執行過程當中有效

SetUID做用介紹

 

  1. /usr/bin/passwd 命令擁有特殊權限 SetUID ,也就是在屬主的權限位的執行權限上是 s
  2. 能夠這樣來理解它:當一個具備執行權限的文件設置 SetUID 權限後,
  3. 用戶執行這個文件時將以文件全部者的身份執行。/usr/bin/passwd 命令具備 SetUID 權限,全部者爲 rootLinux中的命令默認全部者都是 root),
  4. 也就是說當普通用戶使用 passwd 更改本身密碼的時候,那一瞬間忽然靈魂附體了,實際是在用 passwd 命令全部者 root 的身份在執行 passwd 命令,
  5. root 固然能夠將密碼寫入/etc/shadow 文件(不要忘記 root 這個傢伙是 superman 什麼事均可以幹),因此普通用戶也能夠修改/etc/shadow 文件,命令執行完成後該身份也隨之消失

 

注意:若是取消 SetUID 權限,則普通用戶就不能修改本身的密碼了

SetUID命令

  1. chmod  u+s  執行文件手工添加SUID權限

a) 例chmod  u+s /usr/bin/vim

  1. ll  /usr/bin/vim
  2. -rwsr-xr-x. 1 root root 1847752 4 5 2012 /usr/bin/vim

SetUID幾點建議

  1. 關鍵目錄應嚴格控制寫權限。好比/」、「/usr」等;
  2. 用戶的密碼設置要嚴格遵照密碼三原則;
  3. 對系統中默認應該具備 SetUID 權限的文件做一列表,定時檢查有沒有這以外的文件被設置了 SetUID 權限

 

檢測SetUID 的腳本???

 

 

 

 

 

 

SetGID

SetGID的做用

  1. 針對文件的做用:SGID 便可以針對文件生效,也能夠針對目錄生效,這和 SUID 明顯不一樣。若是針對文件,

a) SGID 的含義以下:

  1. 只有可執行的二進制程序才能設置 SGID 權限
  2. 命令執行者要對該程序擁有 x(執行)權限
  3. 命令執行在執行程序的時候,組身份升級爲該程序文件的屬組
  4. SetGID 權限一樣只在該程序執行過程當中有效,也就是說組身份改變只在程序執行過程當中有效

 

b) 當普通用戶 lamp 執行 locate 命令時,會發生以下事情:

  1. /usr/bin/locate 是可執行二進制程序,能夠賦予 SGID
  2. 執行用戶 lamp 對/usr/bin/locate 命令擁有執行權限
  3. 執行/usr/bin/locate 命令時,組身份會升級爲 slocate 組,而 slocate 組對/var/lib/mlocate/mlocate.db 數據庫擁有 r 權限,因此普通用戶能夠使用 locate命令查詢 mlocate.db 數據庫
  4. 命令結束,lamp 用戶的組身份返回爲 lamp 組
  5. 針對目錄的做用

a) 若是 SGID 針對目錄設置,含義以下:

  1. 普通用戶必須對此目錄擁有 r 和 x 權限,才能進入此目錄
  2. 普通用戶在此目錄中的有效組會變成此目錄的屬組
  3. 若普通用戶對此目錄擁有 w 權限時,新建的文件的默認屬組是這個目錄的屬組

b) 舉例

  1. cd  /tmp/ :進入臨時目錄作此實驗。由於臨時目錄才容許普通用戶修改
  2. mkdir  dtes :創建測試目錄
  3. chmod  g+s  dtest :給測試目錄賦予 SGID
  4. ll  –d  dtest/ :查看SGID 生效
  5. chmod  777  dtest/ :給測試目錄權限,讓普通用戶能夠寫
  6. su  –  lamp :切換成普通用戶 lamp
  7. cd  /tmp/dtest/ :普通用戶進入測試目錄
  8. touch  abc :普通用戶創建 abc 文件
  9. ll  :查看 

 

SetGID命令

  1. chmod  g+s  dtest :給目錄賦予SGID權限
  2. chmod  g+s  /usr/bin/locate  :給文件賦予SGID權限

 

文件特殊權限之Sticky BIT

Sticky BIT做用

  1. Sticky BIT 粘着位,也簡稱爲 SBITSBIT 目前僅針對目錄有效,它的做用以下:

a) 粘着位目前只對目錄有效

b) 普通用戶對該目錄擁有 w 和 x 權限,即普通用戶能夠在此目錄擁有寫入權限

c) 若是沒有粘着位,由於普通用戶擁有 w 權限,因此能夠刪除此目錄下全部文件,包括其餘用戶創建的文件。一但賦予了粘着位,除了 root 能夠刪除全部文件,普通用戶就算擁有 w 權限,也只能刪除本身創建的文件,可是不能刪除其餘用戶創建的文件

 

文件系統屬性 chattr 權限

命令格式

 

a) [+-=]

  1. +: 增長權限
  2. -: 刪除權限
  3. =: 等於某權限

b) [選項]

  1. i: 若是對文件設置 i 屬性,那麼不容許對文件進行刪除、更名,也不能添加和修改數據;若是對目錄設置 i 屬性,那麼只能修改目錄下文件的數據,但不容許創建和刪除文件。
  2. a: 若是對文件設置 a 屬性,那麼只能在文件中增長數據,可是不能刪除也不能修改數據;若是對目錄設置 a 屬性,那麼只容許在目錄中創建和修改文件,可是不容許刪除
  3. e: Linux 中絕大多數的文件都默認擁有 e 屬性。表示該文件是使用 ext 文件系統進行存儲的,並且不能使用「chattr -e」命令取消 e 屬性。

查看文件系統屬性 lsattr

  1. lsattr  選項  文件  查看文件系統屬性

a) 選項

  1. -a :顯示全部文件和目錄
  2. -d :若目標是目錄,僅列出目錄自己的屬性,而不是子文件的

舉例

  1. 1

a) 給文件賦予 i 屬性

  1. touch  ftest :創建測試文件
  2. chattr  +I  ftest :賦予chattr 權限
  3. rm  -rf  ftest :刪除賦予 i 屬性後,root 也不能刪除
  4. echo  111  >>  ftest :不能修改文件的數據

b) #給目錄賦予 i 屬性

  1. mkdir  dtest  :創建測試目錄
  2. touch  dtest/abc :再創建一個測試文件 abc
  3. chattr  +I  dtest/ :給目錄賦予 i 屬性
  4. cd  dtest/ :進入/dtest/
  5. touch bcd  :創建文件, dtest 目錄不能新建文件
  6. echo  11  >>  abc :寫入數據,可是能夠修改文件內容
  7. cat  abc :查看數據,「11「
  8. rm  -rf  abc :刪除不能刪除
  9. 2

a) mkdir  -p  /back/log :創建備份目錄

b) chattr  +a  /back/log/ :賦予 a 屬性

c) cp  /var/log/messages  /back/log/ :能夠複製文件和新建文件到指定目錄

d) rm  -rf  /back/log/messages 可是不容許刪除

 

 

 

 

 

 

*************************************

文件系統管理

*************************************

文件系統管理-初級

硬盤結構

  1. 硬盤的邏輯結構

 

a) 硬盤的邏輯結構二種

  1. 磁道:是用來存儲數據
  2. 扇區:是磁盤的最小存貯單位,爲512Byte。每一個扇區容量是固定的

 

b) 硬盤的大小是使用「磁頭數×柱面數×扇區數×每一個扇區的大小」這樣的公式來計算的。其中磁頭數(Heads)表示硬盤總共有幾個磁頭,也能夠理解成爲硬盤有幾個盤面,而後乘以二;柱面數(Cylinders)表示硬盤每一面盤片有幾條磁道;扇區數(Sectors)表示每條磁道上有幾個扇區;每一個扇區的大小通常是 512Byte

  1. 硬盤分類

a) 機械硬盤

b) 固態硬盤

 

文件系統

  1. super block(超級塊):

a) 記錄整個文件系統的信息,包括 block 與 inode 的總量,已經使用的 inode block 的數量,未使用的 inode block 的數量,blockinode 的大小,文件系統的掛載時間,最近一次的寫入時間,最近一次的磁盤檢驗時間等。

  1. date block(數據塊,也稱做 block):

a) 用來實際保存數據的(櫃子的隔斷),block的大小(1KB2KB 4KB)和數量在格式化後就已經決定,不能改變,除非從新格式化(製做櫃子的時候,隔斷大小就已經決定,不能更改,除非從新制做櫃子)。

b) 每一個 blcok 只能保存一個文件的數據,要是文件數據小於一個 block 塊,那麼這個block 的剩餘空間不能被其餘文件是要;要是文件數據大於一個 block 塊,則佔用多個 block 塊。

c) Windows 中磁盤碎片整理工具的原理就是把一個文件佔用的多個block 塊儘可能整理到一塊兒,這樣能夠加快讀寫速度。

  1. inode(i 節點,櫃子門上的標籤):

a) 用來記錄文件的權限(r、w、x),文件的全部者和屬組,文件的大小,文件的狀態改變時間(ctime),文件的最近一次讀取時間(atime),文件的最近一次修改時間(mtime),文件的數據真正保存的 block 編號。每一個文件須要佔用一個 inode

經常使用的硬盤管理命令

dfdu命令和區別

  1. df 命令

a)  df  –ahT

  1. -a :顯示特殊文件系統,這些文件系統幾乎都是保存在內存中的。如/proc,由於是掛載在內存中,因此佔用量都是 0
  2. -h :單位再也不只用 KB,而是換算成習慣單位
  3. –T大寫 :多出了文件系統類型一列
  4. du 命令

a) du  [選項]  [目錄或文件名] 

  1. -a :顯示每一個子文件的磁盤佔用量。默認只統計子目錄的磁盤佔用量
  2. -h :使用習慣單位顯示磁盤佔用量,如 KBMB GB
  3. -s :統計總佔用量,而不列出子目錄和子文件的佔用量

du df 的區別:

lsof  |  grep  deleted :查看被刪除的文件,而後一個進程一個進程的手工 kill 也是能夠的

些文件在必要的狀況下,能夠謹慎的選擇無用文件刪除,是全都的文件被刪除,系統就會崩潰

在非必要狀況下重啓就能夠解決垃圾文件的問題,就不必去手工刪除。手工刪除危險性高。

 

fsck 文件系統修復命令

b) fsck  –y  /dev/sdb1 :無需手工啓動,這命令系統啓動時會自動啓動。若是開機啓動修復失敗了,那手工啓動修復也沒用

顯示磁盤狀態dumpe2fs

c) dumpe2fs  /dev/sda3  

  1. Filesystem volume name:      <none>  ß  卷標名
  2. Last mounted on:             /       ß  掛載點
  3. Default mount options:     user_xattr acl   掛載參數
  4. Filesystem state:           clean ß    文件系統狀態正常
  5. Inode count:              1826816  ß    inode總數
  6. Block count:               7300864      ß塊總素
  7. Block size:                 4096 ß        塊大小
  8. Inode size:                 256         ßinode 的大小
  9. Group 0: (Blocks 0-32767) [ITABLE_ZEROED]  ß第一個數據組的內容

 

 

 

 

 

 

 

查看文件的詳細時間

d) stat  文件名 查看文件的詳細時間

 

a) Access: 2011-10-29 22:27:45.000000000 +0800 :訪問時間

b) Modify: 2011-09-14 18:02:00.000000000 +0800 :數據修改時間

c) Change: 2011-10-25 22:21:44.000000000 +0800 :狀態修改時間

判斷文件類型

e) file 文件名  判斷文件類型

f) type 命令名  判斷命令類型

 

 

 

fdisk 命令手工分區

fdisk磁盤分區模式

  1. fdisk  -l  :查看系統全部硬盤及分區
  2. fdisk  /dev/sdb  :進行磁盤分區(分區尚未分區號)

 

安裝步驟

a) 新建主分區

  1. fdisk  /dev/sdb :進入硬盤分區模式
  2. n :新建分區
  3. p :創建主分區
  4. 1 :設置分區號
  5. 回車起始從最初的開始
  6. +2G :始終柱面,分區大小
  7. W :保存退出

b) 新建擴展分區

  1. fdisk  /dev/sdb :進入硬盤分區模式
  2. n :新建分區
  3. e :新建擴展分區
  4. 2 :設置分區號
  5. 回車起始從最初的開始
  6. 回車鍵 :始終柱面,把剩餘的全都給擴展分區
  7. w :保存退出

c) 新建擴展分區

  1. fdisk  /dev/sdb :進入硬盤分區模式
  2. n :新建分區
  3. e :新建邏輯分區
  4. 不用指定分區號
  5. 回車起始從最初的開始
  6. +2G :始終柱面, 
  7. w :保存退出

 

 

注意:要是出現以上二個圖片中的內容

若是新建分區後沒有重啓系統的狀況下在新建分區就會出錯,出錯信息:有多是由於系統的分區表正在被佔用,須要重啓系統後才能生效

 partprobe

d) 強制重讀全部分區文件,從新掛載分區文件內全部分區。這不是分區必須命令,

e) 若是沒有提示重啓,能夠不執行,也能夠重啓系統( Warning: Unable to open /dev/hdc read-write (Read-only file system)./dev/hdc has been opened read-only.光盤只讀掛載,不是錯誤,不用緊張)

f) 若是這個命令不存在請安裝 parted-2.1-18.el6.i686 這個軟件包

注意:目前partprobe被淘汰了6.8之後效果

格式化

  1. 格式化:創建文件系統  ext3 linux 默認文件系統
  2. mkfs  -t  文件類型  分區設備文件名 :格式化分區

a) mkfs 命令很是簡單易用,不過是不能調整分區的默認參數的(好比塊大小是 4096),這些默認參數除非特殊狀況,不然不須要調整,若是想要調整就須要使用 mke2fs 命令進行從新格式化

  1. mkfs  [選項]  分區設備文件名

a) 選項:

  1. -t 文件系統:  指定格式化成哪一個文件系統,如 ext2ext3ext4
  2. -b 字節:  指定 block 塊的大小
  3. -i 字節:  指定「字節/inode」的比例,也就是多少個字節分配一個 inode
  4. -j:  創建帶有 ext3 日誌功能的文件系統
  5. -L 卷標名: 給文件系統設置卷標名,就不使用 e2label 命令設定了
  6. mke2fs  -t  ext4  -b  2048  /dev/sdb6 :格式化分區,並指定 block 的大小爲 2048

創建掛載點

g) mkdir  掛載目錄 創建掛載目錄

掛載

h) mount  分區設備文件名  掛載目錄 :掛載目錄

i) mount :查詢當前系統以掛載的設備

自動掛載

j) 修改分區自動掛載文件

k) vi  /etc/fstab  注意:此文件直接參與系統啓動,若是修改錯誤,系統啓動報錯

 

l) 第一列:設備文件名

m) 第二列: 掛載點

n) 第三列: 文件系統

  • o) 第四列: 掛載選項

p) 第五列:是否能夠被備份 0不備份 1天天備份 2不按期備份

q) 第六列: 2是否檢測磁盤 fsck  0 不檢測 1 啓動時檢測 2 啓動後檢測

  1. 能夠使用 UUID 進行掛載,UUID(硬盤 通用惟一識別碼,能夠理解爲硬盤的 ID )這個字段在 CentOS 5.5 的系統當中是寫入分區的卷標名或分區設備文件名的,如今變成了硬盤的 UUID。這樣作的好處是當硬盤增長了新的分區,或者分區的順序改變,再或者內核升級後,任然可以保證分區可以正確的加載,而不至於形成啓動障礙

r) dumpe2fs  分區設備文件名 能夠查看UUID

重啓

s) 要是全都作好沒問題的話

t) 重啓測試  mount  -a  從新掛載全部內容,用它進行測試

/etc/fstab/文件修復

  1. 若是/etc/fstab/輸入錯誤,重啓的時候系統出錯

 

  1. 提示輸入 root 密碼

 

  1. 成功進入系統,輸入/etc/fstab 文件修改回來

 

  1. 提示是沒有寫權限,那麼只要把/分區從新掛載下,掛載爲讀寫權限不就能夠修改了

a) mount  -o  remount,rw  / :從新掛載並讀寫分區

b) 修改/etc/fstab 文件,把它改回來就能夠正常啓動了

 

parted 命令分區

分區表

  1. 咱們 Linux 系統中有兩種常見的分區表 MBR 分區表(主引導記錄分區表)和 GPT 分區表(GUID 分區表),
  2. MBR 分區表:支持的最大分區是 2TB1TB=1024GB);最多支持 4 個主分區,或 3個主分區 1 個擴展分區
  3. GPT 分區表:支持最18EB 的分區(1EB=1024PB=1024*1024TB);最多支持 128 個分區,其中 1 個系統保留分區,127 個用戶自定義分區
  4. 不過parted命令也有點小問題,
    1. 就是命令自身分區的時候只能格式化成ext2文件系統,不支持 ext3 文件系統,
    2. 那就更不用說 ext4 文件系統了(截止到 CentOS 6.3 仍是這樣,
    3. 這裏只是指不能用 parted 命令把分區格式化成 ext4 文件系統,
    4. 可是 parted 命令仍是能夠識別 ext4 文件系統的)。不過這沒有太多的影響,
    5. 由於咱們能夠先分區再用 mkfs 進行格式化嘛!

parted 交互模式

  1. parted  /dev/sdb :進入parted 交互模式

 

查看分區

  1. print :在parted 交互模式中輸入

 

 

  1. 使用 print 能夠查看分區表信息,包括硬盤參數,硬盤大小,扇區大小,分區表類型和分區信息。分區信息總共七列,分別是:
    1. Number:分區號
    2. Start:分區起始位置,這裏再也不像 fdisk 用柱面表示,而是使用 Byte 更加直觀
    3. End:分區結束位置
    4. Size:分區大小
    5. Type:分區類型
    6. File system:文件系統類型。我不是說 parted 不支持 ext4 文件系統嗎?注意,
    7. 我一直都是說 parted 不能直接把分區直接格式化成 ext4 文件系統,可是它是能夠
    8. 識別的。
    9. 標誌:Flags,就是分區的標記

修改爲 GPT 分區表

 

  1. mklabel  gpt : 修改分區表命令
    1. 修改了分區表,若是這塊硬盤已經有分區了,那麼原有分區和分區中的數據都會消失,並且須要重啓系統纔會生效。還有咱們轉換分區表的目的是爲了支持大於 2TB 的分區,若是分區並無大於 2TB,那麼這步是能夠不執行的

注意:必定要把/etc/fstab 文件中和原有分區的內容刪除掉,才能重啓動。要不繫統啓動就必定會報錯的

創建分區

  1. 由於修改過了分區表,因此/dev/sdb 中的全部數據都消失了,因此咱們能夠從新對這塊硬盤分區了。不過創建分區時,默認文件系統就只能創建成 ext2
  2. mkpart :建立分區命令,parted交互模式使用

 

  1. 不知道你們注意到了嗎?
    1. 咱們如今的 print 查看的分區,和第一次查看 MBR 分區表的分區時有些不同了,
    2. 少了 Type 這個字段,也就是分區類型的字段,
    3. 多了 Name 分區名字段。分區類型是標識主分區、擴展分區和邏輯分區的,
    4. 不過這種標識只在 MBR 分區表中使用,咱們如今已經變成了 GPT 分區表了,因此就再也不有 Type 類型了。
    5. 也就說折磨咱們好久的主分區、擴展分區和邏輯分區的概念再也不有用了

創建文件系統

  1. 分區分完了,咱們還須要格式化。不過咱們已經知道若是使用 parted 交互命令格式化的話,只能格式化成 ext2 文件系統。咱們這裏是要演示下 parted 命令的格式化方法,因此就格式化成 ext2 吧。
  2. mkfs  :格式化命令,parted交互模式使用

 

 

  1. 格式ext2文件系統若是要ext4的文件系統,是用mkfs命令(注意不是 parted 交互命令中的mkfs,而是系統命令 mkfsmkfs  -t  ext4  分區設備文件名

調整分區大小

  1. parted 命令還有一大優點,就是能夠調整分區的大小(windows 中也能夠實現,不過要不須要轉換成動態磁盤,要不須要依賴第三方工具,如硬盤分區魔術師)。起始 Linux LVMRAID 是能夠支持分區調整的,不過這兩種方法也能夠當作是動態磁盤方法,使用 parted 命令調整分區要更加簡單
  2. 注意:parted 調整已經掛載使用的分區時,是不會影響分區中的數據的,也就是說數據不會丟失。可是必定要 先卸載分區,再調整分區大小,不然數據是會出現問題的。還有要調整大小的分區必須已經創建了文件系統(格式化),不然會報錯
  3. resize :調整分區大小parted交互模式下使用

 

注意:若是不是ext2模式的不能夠調整分區大小

 

刪除分區

  1. rm  :刪除分區,pared交互模式中使用

 

 

注意還有件事要注意,parted 中全部的操做都是當即生效,沒有保存生效的概念。這點和fdisk 交互命令明顯不一樣,因此所作的全部操做你們要倍加當心

swap 分區

分區

a) fdisk  /dev/sdb :進行磁盤分區

  1. 新建主分區
    1. fdisk  /dev/sdb :進入硬盤分區模式
    2. n :新建分區
    3. p :創建主分區
    4. 1 :設置分區號
    5. 回車鍵:起始柱面,從最初的開始
    6. +1G :始終柱面,分區大小
    7. W :保存退出

修改swap分區ID

b) t :修改分區ID硬盤分區模式中使用

c) 只有一個分區,因此不用選擇分區了

d) 82 :改成 swap ID

 

格式化

e) mkswap  /dev/sdb1 swqp分區專屬的格式命令

 

查看內存信息

f) free 查看內存信息

 

  1. Mem :內存
    1. total :內存總大小
    2. used 目前使用量
    3. free :剩餘空間
    4. shared 空閒空間
    5. buffer :緩衝 是增長數據寫入速度
    6. cached :緩存 是增長數據讀取速度
    7. -/+ buffers/cache :
      1. used :實際內存使用容量
      2. free 提高性能

swap分區掛載

g) swapon  分區設備文件名 掛載,swap分區的專用掛載

  1. swapon  /dev/sdb1

swap 分區自動掛載

h) vi  /etc/fstab :配置自動掛載數據

 

 

 

 

 

 

 

 

 

*************************************

文件系統管理-高級

磁盤配額的概念

因爲Linux是一個多用戶管理的操做系統,而Linux默認狀況下並不限制每一個用戶使用磁盤空間的大小,假如某個用戶疏忽或者惡意佔滿磁盤空間,將致使系統磁盤沒法寫入甚至崩潰;爲了保證系統磁盤的有足夠的剩餘空間,咱們須要對用戶和組進行磁盤空間使用限制。

 

磁盤配額限制類型:

1. 限制用戶和組對磁盤空間的使用量

2. 限制用戶和組在磁盤內建立文件的個數

 

磁盤配額限制級別:

  1. 軟限制:低級限制,此限制能夠突破,突破時會被警告,超出部分會有寬限天數,寬限天數到期後超出部分被清空,軟限制不能超過硬限制
  2. 硬限制:絕對限制,此限制不會被突破,達到指定限制後沒法使用更多空間
  3. 寬限天數:當有數據超過軟限制後,超出部分會被計時,寬限天數到期後超出部分數據將被清空,寬限天數默認是7

 

注:磁盤配額是針對分區進行設置的,沒法實現「某用戶在系統中共計只能使用50MB磁盤空間」只能設置某用戶在/home分區能使用30M這樣的限制。切記:磁盤配額是針對分區的!

 

磁盤配額開啓條件

內核是否支持磁盤配額?

#grep "CONFIG_QUOTA" /boot/config-2.6.32-431.el6.x86_64

磁盤配額相關命令是否安裝?

#rpm  -q  quota

 

磁盤配額實驗規劃

ü 準備足夠大小的分區,要遠大於實驗的需求空間

ü 建立實驗用戶和組

用戶:cjbdxz

組:thot

ü 磁盤配額規劃

thot:硬:500M 軟:450M 文件數不限制

cj 硬:50M 軟:40M 硬:10 軟:8

bd 硬:250M 軟:200M 文件數不限制

xz 硬:250M 軟:200M 文件數不限制

ü 寬限天數修改成8

 

磁盤配額實驗流程

環境準備

操做系統,額外的磁盤,內核是否支持

查看系統是否支持磁盤配額

#grep "CONFIG_QUOTA" /boot/config-2.6.32-431.el6.x86_64

查看分區的掛載屬性是否知足

dumpe2fs h  /dev/sdb1 | grep "Default mount options"

注:沒法查看分區是否支持用戶和組的磁盤配額,須要使用mount 查看

查看結果中是否包含usrquotagrpquota兩個掛載屬性?

若是沒有兩個掛載屬性,則須要從新掛載並添加兩個屬性,並寫入自動掛載

建立分區、用戶、用戶組

分區大小要遠大於實驗要求大小,避免影響實驗結果

用戶:cjbdxz

組:thot

注:建立用戶時,指定thot爲初始組

SELinux 必須關閉才能進行下面的實驗

保證用戶建立的文件能消耗組額度

Useradd  –g  thot  cj

quotacheck 生成用戶和組的配置文件

quotacheck 選項

-a 掃描/etc/mtab文件中全部啓用磁盤配額功能的分區。若是加入此參數,命令後面就不須要加入分區名了

-u 創建用戶配額的配置文件,即生成aquota.user

-g 創建組配額的配置文件,即aquota.group

-v 顯示掃描過程

-c 清除原有的配置文件,從新創建新的配置文件

quotacheck  -avug

注:若報錯沒有權限生成文件,則須要關閉SELinux

 

編輯配置文件、設置指定限制大小

edquota 選項 用戶名或組名

-u 用戶名

-g 組名

-t 設定寬限時間

-p 複製磁盤配額規則,不須要每個用戶或者組都手動設置一遍

# edquota -p 模板用戶 -u 目標用戶

注:配置文件中所寫大小默認單位KB

啓動和關閉磁盤配額

啓動:

quotaon  選項

-a 根據/etc/mtab文件啓動全部分區的磁盤配額(不寫分區名)

-u 啓動用戶的磁盤配額

-g 啓動組的磁盤配額

-v 顯示啓動過程信息

quotaon  -avug

關閉:

quotaoff  選項 分區名

-a 根據/etc/mtab文件關閉全部分區的磁盤配額(不寫分區名)

-u 關閉用戶的磁盤配額

-g 關閉組的磁盤配額

-v 顯示啓動過程信息

      quotaoff  -avug

查看磁盤配額的信息

查詢指定用戶和組的配額:

quota 選項 用戶或組名

-u 用戶名

-g 組名

-v 顯示詳細信息

-s 以常見單位顯示大小

quota  -uvs  用戶

quota  -gvs   組名

查詢指定分區的磁盤配額:

repquota 選項 分區名

-u 查詢用戶配額

-g 查詢組配額

-v 顯示詳情

-s 以常見單位顯示

repquota  -uvs  查詢用戶配額

repquota  -gvs  查詢組配額

 

驗證磁盤配額是否生效

切換到執行用戶,以預設用戶身份進行文件建立(su

測試工具:

dd 生成指定大小的文件(dd命令詳解見下面附件)

dd if=/dev/zero of=/分區名/testfile bs=1M count=60

注意:用戶的測試須要切換到指定用戶身份,而組磁盤配額的驗證須要?

 

非交互設置磁盤配額

setquota -u 用戶名 軟(容)  硬(容) 軟(數) 硬(數) 分區名

注:一樣,這樣的非交互式的命令更適合寫入腳本,並且,假若有不少用戶的磁盤配額配置相同也能夠用複製來實現。

磁盤配額關鍵屬性

usrquota

grpquota

SELinux關閉

在用redhat linux操做系統下怎樣關閉SElinux呢?因爲在默認狀況下,SElinux是默認開啓的,即SElinux的狀態爲enable。對於實驗環境下,有時候SElinux的存在很讓人頭疼。

1.怎樣查看iptablesSElinux狀態:

   #service iptables status

   #getenforce

2、關閉iptablesSElinux

   #service iptables stop   #臨時關閉防火牆

   #chkconfig iptables off    #永久關閉防火牆,開機不自啓動,想自啓動改爲on

#setenforce 0    #臨時關閉SElinux,臨時打開SElinux狀態命令:setenforce 1

3、永久關閉SElinux

   #vim /etc/selinux/config,而後將改SELINUX=disabled,這樣即便重啓操做系統SElinux也是關閉狀態。

查看SElinux狀態:

   #/usr/sbin/sestatus -v 

臨時關閉:setenforce 0

 

 

僞設備文件

/dev/zero  :產生無限個0

來測試

dd if=/dev/zero of=/分區名/testfile bs=1M count=60

 

/dev/null  位桶(垃圾桶)

能夠讓不想顯示打印在界面的,能夠用 >> /dev/null 吞掉

/dev/zero,是一個輸入設備,你可你用它來初始化文件。該設備無窮盡地提供0,能夠使用任何你須要的數目——設備提供的要多的多。他能夠用於向設備或文件寫入字符串0

 

/dev/null——它是空設備,也稱爲位桶(bit bucket)。任何寫入它的輸出都會被拋棄。若是不想讓消息以標準輸出顯示或寫入文件,那麼能夠將消息重定向到位桶。外號叫無底洞,你能夠向它輸出任何數據,它通吃,而且不會撐着!

 

LVM邏輯卷管理

LVMLogical Volume Manager)邏輯卷管理,它是Linux環境下對磁盤分區進行管理的一種機制。

普通的磁盤分區管理方式在分區劃分好以後就沒法改變其大小,當一個邏輯分區存放不下某個文件時,解決的方法一般是使用符號連接,或者使用調整分區大小的工具,但這只是暫時解決辦法,沒有從根本上解決問題。

簡單來講LVM就是將物理磁盤融合成一個或幾個大的虛擬磁盤存儲池,按照咱們的需求去存儲池劃分空間來使用,因爲是虛擬的存儲池,因此劃分空間時能夠自由的調整大小,以下圖:

 
   

 

LVM的組成部分

 

ü 物理卷(PVPhysical Volume):由磁盤或分區轉化而成

ü 卷組(VGVolume Group):將多個物理卷組合在一塊兒組成了卷組,組成同一個卷組的能夠是同一個硬盤的不一樣分區,也能夠是不一樣硬盤上的不一樣分區,咱們一般把卷組理解爲一塊硬盤。

ü 邏輯卷(LVLogical Volume):把卷組理解爲硬盤的話,那麼咱們的邏輯卷則是硬盤上的分區,邏輯卷能夠進行格式化,存儲數據。

ü 物理擴展(PEPhysical Extend):PE卷組的最小存儲單元,PE所在的位置是VG卷組,即硬盤上,那麼咱們能夠把PE理解爲硬盤上的扇區,默認是4MB,可自由配置。

 

建立LVM

ü 將物理磁盤分區,或整塊磁盤分紅一個區

ü 將物理磁盤上的分區創建成物理卷(PV

ü 將建立好的物理卷組合成卷組(VG),經過添加或者刪除一塊物理卷,來實現卷組大小的調整。

ü 最後將卷組劃分紅邏輯卷(LV),邏輯卷也是能夠隨意調整大小的,邏輯卷至關於真正的分區,那麼要使用必須進行格式化和掛載。

 

物理卷管理

  1. 使用fdisk 來進行分區,分區的系統ID須要使用t選項修改成8e
  2. 建立物理卷--pvcreate
  3. 查看物理卷pvscan & pvdisplay
  4. 刪除物理卷pvremove

 

卷組管理

建立卷組vgcreate

格式:vgcreate  選項  卷組名 物理卷名(能夠寫多個,空格分開)

  -s 大小:指定VGPE大小

 

查看卷組

vgscan 查看簡單信息

vgdisplay :查看詳細信息

 

增長卷組容量vgextend

格式:vgextend 卷組名 物理卷名

 

減少卷組容量--vgreduce

格式:vgreduce 卷組名 物理卷名

vgreduce a 卷組

#刪除指定卷組內全部空的物理卷

 

刪除卷組

vgremove

 

邏輯卷管理

建立邏輯卷--lvcreate

格式:lvcreate 選項 -n 邏輯卷名 卷組名

-L 容量:指定建立的邏輯卷大小,單位:MB,GB,TB

-l(小) 個數:按照PE個數來指定邏輯卷大小

-n 邏輯卷名:指定邏輯卷叫什麼名

 

注:由於邏輯卷至關因而分區,因此須要進行格式化和掛載才能使用,及自啓動

 

查看邏輯卷

lvscan :查看簡單信息 

lvdisplay :查看詳細信息

 

增長邏輯卷容量--lvextend

注:修改lv及文件系統的大小,必須先將lv及文件系統卸載(umount

eg.

lvextend -L +10G /dev/testvg/testlv #先增長lv的大小

resize2fs -f /dev/testvg/testlv 30G #再修改文件系統的大小

 

減少邏輯卷容量lvreduce

注:減小lv空間的操做是有風險的,操做以前必定要作好備份,以避免數據丟失。

eg.

e2fsck -f /dev/vg/lv #檢查文件系統

resize2fs /dev/vg/lv newsize #減小後文件系統大小

lvreduce -L newsize /dev/vg/lv #減小後lv大小

 

RAID磁盤陣列

定義:獨立磁盤構成的具備冗餘能力的陣列

 

磁盤陣列分類:

一是外接式磁盤陣列櫃、

二是內接式磁盤陣列卡,

三是利用軟件來仿真

 

1.經過把多個磁盤組織在一塊兒做爲一個邏輯卷提供磁盤跨越功能

2.經過把數據分紅多個數據塊(Block)並行寫入/讀出多個磁盤以提升訪問磁盤的速度

3.經過鏡像或校驗操做提供容錯能力

 

RAID磁盤陣列主要爲了保證硬件損壞的狀況下業務不會終止,沒法防止誤操做

 

-raid

raid 獨立的管理系統

raid 藉助系統來管理

 

RAID磁盤陣列簡介

 

RAID 0:沒有奇偶校驗的條帶卷

RAID 0提升存儲性能的原理是把連續的數據分散到多個磁盤上存取,這樣,系統有數據請求就能夠被多個磁盤並行的執行,每一個磁盤執行屬於它本身的那部分數據請求

 

RAID 1:獨立磁盤冗餘陣列(鏡像卷)

RAID 1經過磁盤數據鏡像實現數據冗餘,在成對的獨立磁盤上產生互爲備份的數據。當原始數據繁忙時,可直接從鏡像拷貝中讀取數據,所以RAID 1能夠提升讀取性能。

 

RAID 10:鏡象陣列條帶

Raid 10是一個Raid 1Raid0的組合體,它是利用奇偶校驗實現條帶集鏡像,因此它繼承了Raid0的快速和Raid1的安全。

先建raid1  raid0

損壞一塊磁盤時的損壞率:0% raid01 0%

損壞二塊磁盤時的損壞率:分之一 raid01 :三分之二)

損壞三塊磁盤時的損壞率:分百 raid01 :百分百)

 

RAID5:分佈式奇偶校驗的獨立磁盤結構

RAID 5 是一種存儲性能、數據安全和存儲成本兼顧的存儲解決方案。 RAID 5能夠理解爲是RAID 0RAID 1的折中方案。

等分成幾分之一,用來存儲備份。

 

Raid 5 陣列搭建流程

準備物理磁盤

建立raid5陣列

mdadm -Cv 陣列名稱(md*) -l5 -n3  磁盤   -x1 磁盤

-Ccreate

-v:顯示詳細信息

eg.

mdadm -Cv /dev/md0 -l5 -n3 /dev/sdb1 /dev/sdb2 /dev/sdb3 -x1 /dev/sdb5

 

記得要格式化並掛載才能使用,還有自動掛載

查看raid5陣列信息

mdadm D 設備名

生成raid5陣列配置文件

 

模擬raid5陣列磁盤損壞

mdadm  /dev/md0  f  /dev/sdb3

#標記陣列中某磁盤損壞,並查看磁盤狀態

移除故障磁盤,添加新磁盤

mdadm  /dev/md0  --remove  /dev/sdb3

#移除故障磁盤

mdadm /dev/md0 --add /dev/sdb6

#添加新的磁盤,恢復正常熱備

 

 

 

 

 

 

*************************************

dd擴展

dd:用指定大小的塊拷貝一個文件。

if=文件名:輸入文件名,缺省爲標準輸入。即指定源文件。< if=input file >

of=文件名:輸出文件名,缺省爲標準輸出。即指定目的文件。< of=output file >

bs=bytes:同時設置讀入/輸出的塊大小爲bytes個字節。

count=blocks:僅拷貝blocks個塊,塊大小等於ibs指定的字節數。

 

dd應用實例

 

1.將本地的/dev/hdb整盤備份到/dev/hdd

  dd if=/dev/hdb of=/dev/hdd

 

2./dev/hdb全盤數據備份到指定路徑的image文件

  dd if=/dev/hdb of=/root/image

 

3.將備份文件恢復到指定盤

  dd if=/root/image of=/dev/hdb

 

4.備份/dev/hdb全盤數據,並利用gzip工具進行壓縮,保存到指定路徑

  dd if=/dev/hdb | gzip > /root/image.gz

 

5.將壓縮的備份文件恢復到指定盤

  gzip -dc /root/image.gz | dd of=/dev/hdb

 

6.備份與恢復MBR

a.備份磁盤開始的512個字節大小的MBR信息到指定文件:

 dd if=/dev/hda of=/root/image count=1 bs=512

count=1指僅拷貝一個塊;bs=512指塊大小爲512個字節。

 

b.恢復:

dd if=/root/image of=/dev/had

將備份的MBR信息寫到磁盤開始部分

 

7.拷貝內存內容到硬盤

  dd if=/dev/mem of=/root/mem.bin bs=1024 (指定塊大小爲1k)

 

8.拷貝光盤內容到指定文件夾,並保存爲cd.iso文件

  dd if=/dev/cdrom(sr0) of=/root/cd.iso

 

9.增長swap分區文件大小

第一步:建立一個大小爲256M的文件:

 dd if=/dev/zero of=/swapfile bs=1024 count=262144

第二步:把這個文件變成swap文件:

  mkswap /swapfile

第三步:啓用這個swap文件:

 swapon /swapfile

第四步:編輯/etc/fstab文件,使在每次開機時自動加載swap文件:

/swapfile swap swap default 0 0

 

10.銷燬磁盤數據

  dd if=/dev/urandom of=/dev/hda1

注意:利用隨機的數據填充硬盤,在某些必要的場合能夠用來銷燬數據。

 

11.測試硬盤的讀寫速度

 dd if=/dev/zero bs=1024 count=1000000 of=/root/1Gb.file

 

 dd if=/root/1Gb.file bs=64k | dd of=/dev/null

經過以上兩個命令輸出的命令執行時間,能夠計算出硬盤的讀、寫速度。

 

12.肯定硬盤的最佳塊大小:

  dd if=/dev/zero bs=1024 count=1000000 of=/root/1Gb.file

 

  dd if=/dev/zero bs=2048 count=500000 of=/root/1Gb.file

 

  dd if=/dev/zero bs=4096 count=250000 of=/root/1Gb.file

 

 dd if=/dev/zero bs=8192 count=125000 of=/root/1Gb.file

 

經過比較以上命令輸出中所顯示的命令執行時間,便可肯定系統最佳的塊大小。

 

僞設備文件

/dev/zero,是一個輸入設備,你可你用它來初始化文件。該設備無窮盡地提供0,能夠使用任何你須要的數目——設備提供的要多的多。他能夠用於向設備或文件寫入字符串0

 

/dev/null——它是空設備,也稱爲位桶(bit bucket)。任何寫入它的輸出都會被拋棄。若是不想讓消息以標準輸出顯示或寫入文件,那麼能夠將消息重定向到位桶。外號叫無底洞,你能夠向它輸出任何數據,它通吃,而且不會撐着!

*************************************

Shell腳本

*************************************

shell基礎

Shell 概念

  1. Shell是系統的用戶界面,提供了用戶與內核進行交互操做的一種接口。它接收用戶輸入的命令並把它送入內核去執行。
  2. 實際上Shell是一個命令解釋器,它解釋由用戶輸入的命令而且把它們送到內核。不只如此,Shell有本身的編程語言用於對命令的編輯,它容許用戶編寫由shell命令組成的程序。Shel編程語言具備普通編程語言的不少特色,好比它也有循環結構和分支控制結構等,用這種編程語言編寫的Shell程序與其餘應用程序具備一樣的效果。
  3. Shell 系統跟應用程序的雙向翻譯官,用來雙向解析的

Shell 的分類

  1. Linux中的shell有多種類型,其中最經常使用的幾種是Bourne shellsh)、C shellcsh)和Korn shellksh)。三種shell各有優缺點。
  2. Bourne shellUNⅨ最初使用的shell,而且在每種UNⅨ上均可以使用。Bourne shellshell編程方面至關優秀,但在處理與用戶的交互方面作得不如其餘幾種shell
  3. Linux操做系統缺省的shellBourne Again shell,它是Bourne shell的擴展,簡稱Bash,與Bourne shell徹底向後兼容,而且在Bourne shell的基礎上增長、加強了不少特性。Bash放在/bin/bash中,它有許多特點,能夠提供如命令補全、命令編輯和命令歷史表等功能,它還包含了不少C shellKorn shell中的優勢,有靈活和強大的編程接口,同時又有很友好的用戶界面。
  4. C shell是一種比Bourne shell更適於編程的shell,它的語法與C語言很類似。Linux爲喜歡使用C shell的人提供了TcshTcshC shell的一個擴展版本。Tcsh包括命令行編輯、可編程單詞補全、拼寫校訂、歷史命令替換、做業控制和相似C語言的語法,它不只和Bash shell是提示符兼容,並且還提供比Bash shell更多的提示符參數。
  5. Korn shell集合了C shellBourne shell的優勢而且和Bourne shell徹底兼容。Linux系統提供了pdkshksh的擴展),它支持任務控制,能夠在命令行上掛起、後臺執行、喚醒或終止程序。

查詢Linux支持shell類型

a) cat /etc/shells :查詢Linux中支持的shell類型

 

Shell的執行方式

 

 

解析器解析

  1. 執行權限:chmod  +x  *.sh(*.bash)
  2. 使用解析器解析:bash *.sh(不須要給權限

 

相對路徑和絕對路徑的執行方式

  1. ./文件名:相對路徑查詢,須要進入文件的上級目錄才能執行
  2. /文件 :以絕對路徑查詢,須要輸入絕對路徑才能執行

source

  1. source 文件 加載文件(能夠用於執行shell文件
  2. . 文件名:加載文件 source功能同樣

shell 腳本

  1. 建立shell腳本文件,通常以 .sh 結尾
  2. shell 腳本做爲一種腳本文件,如何運行?

a) 添加x 執行權限(相對或絕對路徑執行)

b) bash命令,調用腳本文件

Bash歷史命令的基本功能

Bash_history:查看歷史命令緩存記錄文件

記錄用戶使用命令的文件,須要用戶正常退出的狀況下才會記錄文件裏面,這文件在家目錄下的bash_history

歷史命令

歷史命令的查看

命令:history  [選項]

-c 清空歷史命令

-w 把緩存中的歷史命令保存到歷史命令配置文件

歷史命令的調用

調用以前使用過的歷史命令有如下幾種辦法:

ü 使用上、下光標鍵調用

ü 使用「!n」,重複執行第n條歷史命令

ü 使用「!!」,重複執行上一條命令

ü 使用「!字符」,重複執行最近一條以此字符開頭的命令

命令與文件名的補全

Bash放在/bin/bash中,它有許多特點,能夠提供如命令補全、命令編輯和命令歷史表等功能

命令別名

命令:alias 別名=’原命令 [選項]

兩個配置文件:

單個用戶:~/.bashrc

全部用戶:/etc/bashrc

注:別名命令的優先級更高

  注意:配置文件修改後須要從新加載,讓新添加內容馬上生效

source /etc/bashrc

source . /etc/bashrc(這個點不是當前路徑的意思)

kernel 2.6.32 前:

alias grep='grep --color=auto'

須要人爲添加到配置文件

kernel 3.10

配置文件中默認包含

快捷方式的幾個方法

  1. 鏈接:ln –s /usr/local/apache2/bin/apachectl  /usr/local/bin/

由於apachectl /usr/local/bin/在環境變量目錄下,因此能夠在執行就能夠了

  1. 別名alias str=’/usr/local/apache2/bin/apachectl  start’

alias sto=’/usr/local/apache2/bin/apachectl  stop’

注意事項:不要使用已經存在的命令,要是別名的做用跟命令的同樣,就能夠用命令做爲別名的名稱,例alias grep='grep --color=auto'

  1. 變量疊加: 將制定目錄加入 PATH 環境變量中

命令執行的順序:

NO.1 用絕對路徑或相對的方式執行命令

NO.2 別名命令

NO.3 bash 內置命令

NO.4 根據環境變量定義的目錄查詢找到的命令

Bash 經常使用快捷鍵

 
   

 

輸入輸出重定向

bash的標準輸入輸出

設備

設備文件名

文件描述符

類型

鍵盤

/dev/stdin

0

標準輸入

顯示器

/dev/stdout

1

標準正確輸出

顯示器

/dev/stderr

2

標準錯誤輸出

 

  1. 輸出:

a) 標準輸出:(/dev/stdout)

  1. 向顯示器打印信息

b) 重定向輸出

  1. 將原來要打印到顯示器上的信息,從新定向,打印到制定設備或文本中
  2. > 覆蓋式
  3. >> 追加式
  4. 重定向輸出默認只接受正確輸出的結果
  5. & >> :不管正確或錯誤輸出,都會執行

c) 輸出類型:

  1. 正確輸出:/dev/stdout 1
  2. 錯誤輸出:/dev/stderr 2

d) 輸入

  1. wc  <
  2. cpio  <
  3. patch  <

 

 

 

 

 

輸出重定向

 

輸入重定向

命令:wc  [選項]  [文件名]

-c 統計字數(字符)

-w 統計單詞數(字符串)

-l 統計行數

多命令順序執行

 

echo命令: 用於字符串的輸出

用於字符串的輸出

1. echo  [選項]  [輸出內容]

        -e 支持反斜線控制的字符轉換

        -n 取消輸出後行尾的換行符號

echo  e  :支持反斜線支持的控制轉換

 

經常使用控制字符

  1. 輸出「\a」自己,併發出警告聲?
  2. 刪除「\b」 前的字符,而後輸出結果?
  3. 使用 \t 製表符 和 \n 換行,實現特殊格式?
  4. 按照八進制和十六進制的ASCII編碼輸出?

 

 

顯示顏色

  1. \e[ ; m …… \e[m

\e[1」表明顏色輸入開始;「\e[0m」 表明顏色輸入結束;固定格式!

  1. 文字顏色:30=黑色,31=紅色,32=綠色,33=黃色,34=藍色,35=洋紅,36=青色,37=白色,39=結束
  2. 底紋顏色:40=黑色,41=紅色,42=綠色,43=黃色,44=藍色,45=洋紅,46=青色,47=白色,49=結束

特殊的控制顯示

  1. \e[ ; m …… \e[m

a) \e[0m 關閉全部屬性

b) \e[1m 設置高亮度

c) \e[4m 下劃線

d) \e[5m 閃爍

e) \e[7m 反顯

f) \e[8m 消隱

 

grep命令

命令:grep  [選項] 「關鍵詞」 文件名 #行提取命令

-A 數字:列出符合條件的行,並將連續列出後續n行

-B 數字:列出符合條件的行,並將連續列出前面n行

-c :統計包含字符串的行一共幾行!

-i :忽略大小寫

-n :輸出行號

-v :反向查找(取反)

--color=auto:搜索出的關鍵詞高亮顯示

 

find 和 grep 的區別

find 是在系統中查找符合條件的文件名,是徹底匹配,若是須要模糊查找使用通配符。

#搜索時,只有徹底匹配的纔會被查找出來。

grep 是在文件中查找符合條件的字符串,是包含匹配,若是須要精確查詢,須要使用正則表達式

 

#查詢關鍵詞時,只要包含關鍵詞的行都被顯示

管道符

格式:命令1 | 命令2

將命令1的標準輸出做爲命令2的標準輸入

 ls  l  /etc  | more

/etc 目錄下內容較多,長格式顯示後一頁顯示不全,用more分頁顯示下

Xargs命令

xargs是實現「將標準輸出做爲命令的參數」

eg

echo "--help" | cat

echo 「--help」 | xargs cat

echo "--help" |xargs cat  --help:當作了命令的選項

若是在特殊狀況下xargs用命令1關鍵字作爲命令2選項

正常狀況,是用於fing命令

fing:這一類輸出結果一條條的命令,不能直接使用「|」管道符進行內容傳遞,須要使用xargs

find ./ -name "*.sh" -exec ls -l {} \;

find ./ -name "*.sh" |xargs ls –l

上二條命令輸出的結果相同

通配符

 

匹配一個任意字符,如a?匹配結果都是以a開頭a後面緊跟個字

* :匹配0或任意多個任意字,也就是說能夠匹配任何內容,

a*匹配的結果,只要開頭是a匹配

[] 匹配括號內的任意一個字符(除了-外,不能使用分割符號)

[0-9] 0-9 任意一個

[a-z] :小寫24字母任意一個

[A-Z] :大24字母任意一個

[a-Z] 和 [a-zA-Z] :結果相同,大小寫24字母任意一個

n[]中n會被做爲匹配對象

 

實驗

 

 

Bash 中其餘特殊符號

 

'':全部在單引號中出現的,都以原格式輸出,特殊符號沒有做用

字符串總體,全部字串都沒有特殊含義,echo ‘$PATH’

"" :幾乎全部的在雙引號中出現的,都以原格式輸出,除了( $ \ ``

字符串總體,大部分在「」中無特殊含義 除了$  \ ``  echo「$PARH」

``:寫入到反引號中的命令,會被反引號調用出命令的結果

  反引號:將命令的結果賦給某變量(a=`date`

  $() a=`date` ==  a=$(date)  :``功能同樣

():在小括號中執行的命令(是在新的子shell中執行的,結果不影響當前shell中的內容)

做用:變量測試+替換

()最後一個命令可不用」;」結尾

{}:在大括號中執行的,和不加大括號結果同樣,沒有區別,只是大括號的使用(特殊)格式:{ name=zs;echo $name;}

~/.bash_profile --> ~/.bashrc --> /etc/bashrc

[ -f /etc/bashrc ] && . /etc/bashrc ]

做用:變量測試+替換

[]:用於變量的測試

[ == ]:判斷符號兩側,括號兩側必須有空格[ "$a" == "$b" ]

[ != ]:注意:> < >= <= 不能直接套用以上格式。

   [ "$a" == "$b" ] && echo "yes" || echo "no"]

 

單引號&雙引號

單引號當中的特殊符號沒有特殊含義,雙引號裏面的特殊符號也沒有特殊含義,可是 $ ` \ 是例外!

 

 

 

 

反引號

小括號、中括號、大括號

bash是能夠手動開啓的,每bash一下就是開啓一個shell ,相應的就會有父shell 和 子 shell

 

bash

 

bash後:

 

 

注:最明顯的感受就是當你新開啓一個shell後,你剛纔執行的歷史命令調用不出來。

大括號{ } 和 小括號( )

區別:

² ()執行一串命令時,須要從新開一個子shell進行執行

² {}執行一串命令時,是在當前shell執行

² ()和{}都是把一串的命令放在括號裏面,而且命令之間用;號隔開

² ()最後一個命令能夠不用分號

² {}最後一個命令要用分號

² {}的第一個命令和左括號之間必需要有一個空格

² ()裏的各命令沒必要和括號有空格

 

實驗:

² () 中執行命令時,新開啓shell 進行

 

² { } 執行命令時,就在本shell中進行

 

 

註釋

腳本註釋: #  //  ;

編程器註釋:/* $$$ */  <!--  $$$  -->

 

Bash的變量和運算符

變量是計算機語言中能儲存計算結果或能表示值抽象概念,變量能夠經過變量名訪問,在指令式語言中,變量一般是可變的.

賦值符號:=

兩側不能有空格

值:

若值當中有空格,則須要將整個值用引號(單、雙、反)做爲一個總體

a='123'

b="echo $x"

c=`date`

查看:

set 全部生效了的變量

定義變量的規範:

² 變量名稱能夠由字母、數字和下劃線組成,可是不能以數字開頭,變量中間不能有空格。若是變量名是「2name」則是錯誤的。

² 若是當中有空格,則須要將整個值用引號做爲一個總體 (單,雙,反)

 

 

² Bash中,變量的默認類型都是字符串型,若是要進行數值運算,則必修指定變量類型爲數值型。

 

 

 

 

 

 

 

² 變量用等號鏈接值,等號左右兩側不能有空格。

 

 

² 變量的值若是有空格,須要使用單引號或雙引號包括。如:「test="hello world!"」。其中雙引號括起來的內容「$」、「\」和反引號都擁有特殊含義,而單引號括起來的內容都是普通字符。

 

 

² 雙引號「 」括起來的 $  \  `` 都有特殊含:

 

 

 

 

 

² 單引號括起來的都是普通字符

 

在變量的值中,能夠使用「\」轉義符。

 

² 若是須要增長變量的值,那麼能夠進行變量值的疊加。不過變量須要用雙引號包含 "$變量名" 或用 ${變量名} 包含變量名。

 

 

² 若是是把命令的結果做爲變量值賦予變量,則須要使用反引號或$()包含命令。

 

 

² 環境變量名建議大寫,易於區分

 

set查看變量 / 自定義變量 / 取消變量

包含env環境變量

遵循設置規範:變量的設置規範(數字、字母、下劃線)

set 變量 查看變量

set :

set -u +u

/etc/bashrc

/etc/profile

set-u :設置後,若是調用沒有聲明的變量或沒有的變量就會報錯,如rm刪除等,臨時設置,要永久須要更改/etc/bashrc,,/ect/prfile,中的文件,二

 

set -x +x

 在輸出命令結果以前,將命令自己輸出一次,輔助功能

 

unset :取消變量,只能取消臨時變量

環境變量

² 環境變量設置

export AGE=18

export 聲明的是環境變量

² 環境變量查詢和刪除

env命令:查看環境變量

env命令和set命令的區別是,set命令能夠查看全部變量,而env命令只能查看環境變量。

 

ü 系統默認的環境變量

 

env 現實全部環境變量

 

 

env命令能夠查詢到全部的環境變量,但是還有一些變量雖然不是環境變量,倒是和Bash操做接口相關的變量,這些變量也對咱們的Bash操做終端起到了重要的做用。這些變量就只能用set命令來查看了。

 

 

PATH變量

 保存全部存放命令路徑的變量,(變量疊加)

ü PATH變量:系統查找命令的路徑

 

 

PATH變量的值是用「:」分割的路徑,這些路徑就是系統查找命令的路徑。也就是說當咱們輸入了一個程序名,若是沒有寫入路徑,系統就會到PATH變量定義的路徑中去尋找,是否有能夠執行的程序。若是找到則執行,不然會報「命令沒有發現」的錯誤。

咱們能夠考慮把本身寫的腳本放入這些目錄,實現直接調用(當命令使用)

 

或者:

咱們修改PATH變量的值,而不是把程序腳本複製到/bin/目錄中,之後全部寫入這個目錄的腳本均可以直接執行。

 

上邊寫的這些變量的定義啊,疊加啊,修改啊,什麼的都是臨時的。

 

PS1變量 (使用單引號)

ü PS1變量:命令提示符設置

PS1是用來定義命令行的提示符的,能夠安裝咱們本身的需求來定義本身 喜歡的提示符。PS1能夠支持如下這些選項:

u \d:顯示日期,格式爲「星期月日」Ø

u \H:顯示完整的主機名。如默認主機名「localhost.localdomain」

u \h:顯示簡寫主機名。如默認主機名「localhost」

u \t:顯示24小時制時間,格式爲「HH:MM:SS」

u \T:顯示12小時制時間,格式爲「HH:MM:SS」

u \A:顯示24小時制時間,格式爲「HH:MM」

u \@:顯示12小時制時間,格式爲「HH:MM am/pm」

u \u:顯示當前用戶名

u \v:顯示Bash的版本信息

u \w:顯示當前所在目錄的完整名稱

u \W:顯示當前所在目錄的最後一個目錄

u \#:執行的第幾個命令

u \$:提示符。若是是root提示符爲「#」,若是是普通用戶提示符爲「$」

 

想要使用這些必須先知道定義的規範,來看下官方的PS1:

 

定義ps1的值時須要注意單引號,不然不生效

 

隨便玩,玩壞了記得改回來!

 

 

LANG語系變量

echo  LANG :查看當前系統語系

LANG定義的是Linux 的主語系環境變量:

 

這是由於咱們Linux安裝時,選擇的是中文安裝,因此默認的主語系變量是「zh_CN.UTF-8」。那麼Linux中到底支持多少語系呢?咱們能夠使用如下命令查詢:

 

或者 wc –l 統計下一共支持多少!

 

咱們當前是什麼語系能夠用locale 直接查詢!

 

 

配置文件也能查詢到咱們的默認語系:

 

 

這又是當前系統語系,又是默認語系,有沒有快暈倒的感受。解釋下吧,咱們能夠這樣理解,默認語系是下次重啓以後系統所使用的語系,而當前系統語系是當前系統使用的語系。若是系統重啓,會從默認語系配置文件/etc/sysconfig/i18n中讀出語系,而後賦予變量LANG讓這個語系生效。也就是說,LANG定義的語系只對當前系統生效,要想永久生效就要修改/etc/sysconfig/i18n文件了。

說到這裏,咱們須要解釋下Linux中文支持的問題。是否是咱們只要定義了語係爲中文語系,如zh_CN.UTF-8就能夠正確顯示中文了呢?這要分狀況,若是咱們是在圖形界面中,或者是使用遠程鏈接工具(如SecureCRT),只要正確設置了語系,那麼是能夠正確顯示中文的。固然遠程鏈接工具也要配置正確的語系環境,具體配置方式能夠參考Linux系統安裝章節。

那麼若是是純字符界面(本地終端tty1  -tty6)是不能顯示中文的,由於Linux的純字符界面時不能顯示中文這麼複雜的編碼的。若是咱們非要在純字符界面顯示中文,那麼只能安裝中文插件,如zhcon等。

 

遠程鏈接的顯示:

 

字符終端的顯示:

安裝有圖形界面的Linux,因此,那些亂碼就是個人中文目錄。

位置參數變量

 

$@ $* 都是接收除了命令自己之外的全部參數,接收方式不一樣:

$*: 將全部參數當成一個總體(一個值)進行接收

$@: 將每個參數分別接收到本身的變量中

 

腳本1:

 

·

腳本2:

 

v $*顯示全部參數(做爲總體接收)

v $@顯示全部參數(分開接收)

v $#顯示參數個數

預約義變量

 

$? 根據返回值判斷上一條命令的執行結果

$$ 獲取當前bash解析器的PID

$! 獲取當前終端最後一條正在後臺執行的進行PID

    

v $? 錯誤數值是非0 的,正確的是0

v $$ 當前進程的PID

 

$! 最後一個後臺執行的命令的進程

read接收鍵盤輸入

read  [選項]   [變量名]

-p 「提示信息」:在read等待時輸入的信息

-t 秒數 read等待的秒數

-n 字符數:read最多能接收的字符數(達標即執行)

-s :隱藏輸入信息

 

 

假如由於特殊選項不換行,用echo 來實現換行。

變量名定義:

ü 變量名能夠自定義,若是不指定變量名,會把輸入保存入默認變量REPLY

ü    若是隻提供了一個變量名,則整個輸入行賦予該變量

ü 若是提供了一個以上的變量名,則輸入行分爲若干字,一個接一  個地賦予各個變量,而命令行上的最後一個變量取得剩餘的全部值

declare聲明變量類型

命令:declare [+/-] [選項]  變量

 -  : 給變量設定類型

 + : 取消變量的類型

-a : 將變量聲明成數組型

-i : 將變量聲明成整數型

-r : 將變量聲明成只讀(變量值不能修改,也不能刪除,更不能取消只讀選項)

-x : 將變量聲明成環境變量

-p : 顯示指定變量的類型及內容

 

數組型

數組,實際上是多個相同類型的元素組成的集合,用於解決複雜的數據統計和計算,咱們在shell中基本不會涉及到太多的算法和計算,因此數組瞭解下就能夠了。數組的名字即變量的名字是同一個變量名,咱們在變量名後面加上編號來區分單個變量,數組變量又稱下標變量。

 

注:數組的下標從0開始,調用數組的元素時要使用${數組[下標]}的格式

 

咱們剛纔貌似沒有使用declare 聲明

當咱們使用「變量名[下標]」 這樣的格式定義變量時,自動識別成數組

 

 

整數型

以前咱們曾經寫過讓兩個數字相加的腳本,可是貌似結果不盡人意,那麼咱們如今將咱們的變量聲明成整數型再來試試。。。

 

shell種若是想進行數值運算,暫時只能先這樣了。

 

環境變量

咱們能夠用declare 將變量聲明成環境變量,和咱們的export是一樣的效果。

declare –x 變量名 (環境變量的名字儘可能大寫)

寫完後能夠使用env命令查看下!

 

只讀變量

只要對變量設置了只讀屬性,這個變量只能進行調用,不能進行修改和刪除,甚至不能進行取消只讀選項。坑爹啊。。。

 

這個流氓,怎麼辦?。。。

 

查詢變量和取消變量屬性

變量屬性查詢能夠使用-p,會列出變量設置時使用的參數;變量屬性的取消使用 + 來實現。

 

 

使用expr let 數值運算個工具

這兩個是直接聲明運算是數值運算,而不是經過聲明變量的方式,因此相對簡單,可是要注意格式:

 

expr 使用時須要注意的是,在運算符兩邊要有空格,不然不會正常運算。,

 

let 則相對簡單易用,原理相同,格式略微變化:

 

let 還能進行自增增減,或者指定增長減小多少 !

自增&自減

 

指定增減量

 

無論是expr 仍是 let 都能實現數值運算,看我的使用習慣。

 

ü 使用「$((運算式))」或「$[運算式]」格式進行運算

一樣兩種格式都能實現數值運算,看我的喜歡,習慣。

 

 

以上三種數值運算方式選擇哪種均可以,在腳本中常見的是$((運算式))。

shell 經常使用運算符

 

運算符的優先級,就是當有多個運算符同時存在時,誰先進行數值計算, 可是有時也是有特殊狀況的好比:

加減乘除

按照表格的優先級是乘除優先於加減,可是因爲加減被()調用,因此,括號的優 先級高於乘除。

 

取模運算

 

取模運算和取餘運算絕大部分是重疊的,可是一個是計算機術語,一個是數學概念, 區別在於取模運算對負數處理不太同樣。

 

邏輯與

 

 

變量的測試與內容置換(做爲了解便可)

 

1x=${y-新值}

 

當沒有:時,y不存在時x=新值,y爲空時x=空,y有值時x=$y

當有:時,y不存在時x=新值,y爲空時x=新值,y有值時x=$y

注:x=${y+新值} x=${y-新值} 相反!

環境變量的配置

source命令

刷新修改過的配置文件使其生效

 

 

環境變量配置文件

登陸系統時生效的環境變量配置文件

² /etc/profile

² /etc/profile.d/*.sh

² ~/.bash_profile

² ~/.bashrc

² /etc/bashrc

文件的調用順序是:

 

 

在用戶登陸過程先調用/etc/profile文件在這個環境變量配置文件中會定義這些默認環境變量:

 

² USER變量:根據登陸的用戶,給這個變量賦值(就是讓USER變量的值是當前用戶)。

 

² LOGNAME變量:根據USER變量的值,給這個變量賦值。

² MAIL變量:根據登陸的用戶,定義用戶的郵箱爲/var/spool/mail/用戶名。

 

² PATH變量:根據登陸用戶的UID是否爲0,判斷PATH變量是否包含/sbin、/usr/sbin和/usr/local/sbin這三個系統命令目錄。

 

² HOSTNAME變量:更改主機名,給這個變量賦值。

 

² HISTSIZE變量:定義歷史命令的保存條數。

 

² umask:定義umask默認權限掩碼。注意/etc/profile文件中的umask權限是在「有用戶登陸過程(也就是輸入了用戶名和密碼)」時纔會生效。

 

² 調用/etc/profile.d/*.sh文件,也就是調用/etc/profile.d/目錄下全部以.sh結尾的文件。

 

/etc/profile文件調用/etc/profile.d/*.sh文件

² 這個目錄中全部以.sh結尾的文件都會被/etc/profile文件調用,這裏最經常使用的就是lang.sh文件,而這個文件又會調用/etc/sysconfig/i18n文件。/etc/sysconfig/i18n這個文件眼熟嗎?就是咱們前面講過的默認語系配置文件。

 

/etc/profile文件調用~/.bash_profile文件。 ~/.bash_profile文件就沒有 那麼複雜了,這個文件主要實現了兩個功能:

² 調用了~/.bashrc文件。

² PATH變量後面加入了「:$HOME/bin」這個目錄。那也就是說,若是咱們在本身的家目錄中創建bin目錄,而後把本身的腳本放入「~/bin」目錄,就能夠直接執行腳本,而不用經過目錄執行了。

 

~/.bash_profile文件調用~/.bashrc文件

~/.bashrc文件中主要實現了:

² 定義默認別名,因此咱們把本身定義的別名也放入了這個文件。

² 調用/etc/bashrc

 

~/.bashrc調用了/etc/bashrc文件在/etc/bashrc文件中主要定 義了這些內容:

² PS1變量:也就是用戶的提示符,若是咱們想要永久修改提示符,就要在這個文件中修改

² umask:定義umask默認權限。這個文件中定義的umask是針對「沒有登陸過程(也就是不須要輸入用戶名和密碼時,好比從一個終端切換到另外一個終端,或進入子Shell)」時生效的。若是是「有用戶登陸過程」,則是/etc/profile文件中的umask生效。

² PATH變量:會給PATH變量追加值,固然也是在「沒有登陸過程」時才生效。

² 調用/etc/profile.d/*.sh文件,這也是在「沒有用戶登陸過程」是才調用。在「有用戶登陸過程」時,/etc/profile.d/*.sh文件已經被/etc/profile文件調用過了。

 

這樣這五個環境變量配置文件會被依次調用,那麼若是是咱們本身定義的環境變量應該放入哪一個文件呢?若是你的修改是打算對全部用戶生效的,那麼能夠放入/etc/profile環境變量配置文件;若是你的修改只是給本身使用的,那麼能夠放入~/.bash_profile或~/.bashrc這兩個配置文件中的任一個。

 

但是若是咱們誤刪除了這些環境變量,好比刪除了/etc/bashrc文件,或刪除了~/.bashrc文件,那麼這些文件中配置就會失效(~/.bashrc文件會調用/etc/bashrc文件)。那麼咱們的提示符就會變成:

 

 

註銷時生效的環境變量配置文件

在用戶退出登陸時,只會調用一個環境變量配置文件,就是~/.bash_logout。這個文件默認沒有寫入任何內容,但是若是咱們但願再退出登陸時執行一些操做,好比清除歷史命令,備份某些數據,就能夠把命令寫入這個文件。

 

其餘配置文件

還有一些環節變量配置文件,最多見的就是~/.bash_history文件,也就是歷史命令保存文件。這個文件已經講過了,這裏咱們只是把它納入環境變量配置文件小節而已。

 

shell登陸信息

/etc/issue

咱們在登陸tty1  -tty6這六個本地終端時,會有幾行的歡迎界面。這些歡迎信息是保存在哪裏的?能夠修改嗎?固然能夠修改,這些歡迎信息是保存在/etc/issue文件中,咱們查看下這個文件:

 

\r  \m  等是支持的轉義符,查詢可用man agetty

\d :顯示當前系統時間

\s :顯示操做系統名稱

\l :顯示登陸的終端號

\m :顯示硬件體系結構,如i38六、i686等

\n :顯示主機名

\o :顯示域名

\r :顯示內核版本

\t :顯示當前系統時間

\u :顯示當前登陸用戶的序列號

 

/etc/issue.net

etc/issue是在本地終端登陸是顯示歡迎信息的,若是是遠程登陸(如ssh 遠程登陸,或telnet遠程登陸)須要顯示歡迎信息,則須要配置 /etc/issue.net這個文件了。使用這個文件時由兩點須要注意:

  • 首先,在/etc/issue文件中支持的轉義符,在/etc/issue.net文件中不能使用。
  • 其次,ssh遠程登陸是否顯示/etc/issue.net文件中的歡迎信息,是由ssh的配置文件決定的。

 

若是咱們須要ssh遠程登陸能夠查看/etc/issue.net的歡迎信息,那麼首先須要修改ssh的配置文件/etc/ssh/sshd_config,加入以下內容:

 

而後定義/etc/issue.net 後就能顯示歡迎信息了。

 

/etc/motd

/etc/motd文件中也是顯示歡迎信息的,這個文件和/etc/issue及 /etc/issue.net文件的區別是:/etc/issue及/etc/issue.net是在用戶登陸以前顯示歡迎信息,而/etc/motd是在用戶輸入用戶名和密碼,正確登陸以後顯示歡迎信息。在/etc/motd文件中的歡迎信息,不管是本地登 錄,仍是遠程登陸均可以顯示。

 

定義bash快捷鍵

查看全部已存在的快捷鍵

 

 

修改快捷鍵

stty 關鍵詞 快捷鍵

 

*************************************

shell高級

正則表達式

概述

在上一章說過正則表達式和通配符的區別(正則表達式用來在文件中匹配符合條件的字符串,通配符用來匹配符合條件的文件名)嗎?其實這種區別只在Shell當中適用,由於用來在文件當中搜索字符串的命令,如grepawksed等命令能夠支持正則表達式,而在系統當中搜索文件的命令,如lsfindcp這些命令不支持正則表達式,因此只能使用shell本身的通配符來進行匹配了。

基礎正則表達式(grep命令)

 

v 匹配練習

* :前一個字符匹配0次或任意屢次(連續

若是正則表達式寫成aa*」 表明匹配至少包含有一個a的行

.  :匹配換行符之外的任意一個字符

正則表達式.」只能匹配一個字符,能夠是任意字符

^ :匹配行首,

$ :匹配行尾

^$」匹配空白行

 

[  ] :會匹配中括號中指定任意一個字符,注意只能匹配一個字符。好比[ao]要不匹配一個a字符,要不匹配一個o字符

[0-9]  [a-z]  [A-Z]   相似這樣的均可以,指定匹配的範圍

[^0-9]匹配除了數字之外的任意一個字符

^[^a-zA-Z]這個表明啥呢??

\ :轉義符

將特殊符號轉義成普通符號,好比咱們的 .

\{n\} 表示前面的字符剛好出現n

\{n,\} 表示其前面的字符出現不小於n

\{n,m\} 匹配其前面的字符出現不小於n次,最多出現m

擴展正則表達式(egrep命令或grep -E)

熟悉正則表達式的童鞋應該很疑惑,在正則表達式中應該還能夠支持一些元字符,好比+」「 ? 」「|」「( )」。 其 實Linux是支持這些元字符的,只是grep命令默認不支持而已。若是要想支持這些元字符,必須使•命令或grep -E選項,因此咱們又把這些元字符稱做擴展元字符。

若是查詢grep的幫助,對egrep的說明就是和grep -E選項同樣的命令,因此咱們能夠把兩個命令當作別名來對待。經過下面表格來看看Shell中支持的擴展元字符:

 

使用egrepgrep –E ,不須要轉義符

cut列提取命令

cut [選項] 文件名

   -f 列號:提取第幾列

-d 分隔符:按照指定的分割符進行分割

-c 字符範圍:不依賴分割符來分割,而是經過字符範圍進行字段提取(「-m」表示從第一個字符提取到第m個,「n-m」表示從第n提取到第m個字符,「n-」表示從第n個字符開始提取到結尾。)

注意:空格被默認爲字符,全部不支持,只能使用(Tab鍵)

手動建立文本,添加內容列之間用製表符分割

 

#假如用空格隔開,那麼可能會別認定爲是同一列。

咱們能夠使用-d 指定分割符號,好比/etc/passwd

 

#經過指定分割符的方式來肯定如何額進行分割,咱們把/etc/passwd按照:分割,截取第一個第七字段,就能統計哪些用戶能登陸系統,哪些不能登陸。

cut 能夠按照字符數進行截取,按照咱們上面的格式寫就OK了

 

now,咱們來截取下df –h 命令的結果!

cut 命令默認的分割符是製表符,即tab鍵,對於空格的支持比較差

printf 格式化輸出

print printf 的主要區別在有 printf 是標準的格式化輸出,必須手動指定換行和tab

輸出格式類型:

 

printf print 的區別

 #查看df 的真實分區的使用狀況,不看光盤和虛擬磁盤

 

使用printf輸出下咱們的表格文件

 

 

printf輸出下

printf  ‘ %s ’ $(cat bg.sh)

printf命令,若是不指定輸出格式,則會把全部輸出內容連在一塊兒輸出。其實文本的輸出自己就是這樣的,cat等文本輸出命令之因此能夠按照格式漂亮的輸出,那是由於cat命令已經設定了輸出格式。那麼爲了用printf輸出合理的格式,應該這樣作:

printf ‘%s\t%s\t%s\t%s\t\n‘  $(cat bg.sh)

 

咱們要按照整數型和浮點型輸出,則須要修改成:

printf ‘%i\t%s\t%8.2f\t%s\t\n‘  $(cat bg.sh | grep –v ID)

 

 

awk命令

awk是一種編程語言,用於在linux/unix下對文本和數據進行處理。數據能夠來自標準輸入(stdin)、一個或多個文件,或其它命令的輸出。

awk基本使用

awk ‘條件1{動做1}  條件2{動做2} ……’ 文件名

條件:通常使用關係表達式做爲條件

x>10 判斷x變量是否大於10

x==y 判斷變量x是否等於變量y

A ~ B 判斷字符串A中是否包含能匹配B表達式的字符串

A!~ B 判斷字符串A中是否不包含能匹配B表達式的字符串

動做:格式化輸出

 

顯示bg.sh 中的第二和第三列信息

還記的cut 來截取df –h 的結果嗎?用咱們的awk試試吧!

 

awk的條件

 

BEGIN處理文件以前執行

BEGINawk的保留字,是一種特殊的條件類型。BEGIN的執行時機是「在awk程序一開始時,還沒有讀取任何數據以前執行」。一旦BEGIN後的動做執行一次,當awk開始從文件中讀入數據,BEGIN的條件就再也不成立,因此BEGIN定義的動做只能被執行一次。例如:

 

整個動做定義了兩個動做,先打印this is a transcript」,而後輸出過濾後的24

END處理文件以後執行

END也是awk保留字,不過恰好和BEGIN相反。END是在awk程序處理完全部數據,即將結束時執行。END後的動做只在程序結束時執行一次。例如

 其實就是和BEGIN正好相反!

關係運算符

設定條件,符合條件的纔會進行相應動做,不知足不運行

 設定條件爲>=30歲的列出。

u awk是列提取命令,第一步的動做倒是先讀入第一行,整個執行步驟:

Ø 若是有BEGIN條件,則先執行BEGIN定義動做

Ø 若是沒有BEGIN條件,則先讀入第一行,把第一行的數據依次賦成$0 $1 $2 $3 …等變量,$0 表明整行數據,$1 則爲第一個字段,依次類推。

Ø 讀入下一行,重複賦值變量

 正則表達式、剛纔看到了,咱們識別字符串用的是// 這是awk 的正則

awk內置變量

 

 

注意:

  1. awk中變量不能用$
  2. 多條件中間用空格。指條件{動做}間
  3. 一個動做內多條命令時用;間隔
  4. == 進行判斷 
  5. = 賦值

 

#BEGIN的做用,不寫的時候直接輸出$0 即第一行。

#將上述命令中的grep /bin/bash」去掉,sshd是僞用戶。

awk流程控制

先準備好操做文檔,以下

 

awk中定義和調用變量

 

 

awk編程中,由於命令語句很是長,輸入格式時須要注意如下內容:

² 多個條件{動做}能夠用空格分割,也能夠用回車分割。

² 在一個動做中,若是須要執行多個命令,須要用「;」分割,或用回車分割。

² awk中,變量的賦值與調用都不須要加入「$」符。

² 條件中判斷兩個值是否相同,請使用==」,以便和變量賦值進行區分。

 

 

假如年齡小於25歲,則輸出 $2 is young man

按照成績來過濾,並顯示相應信息。

awk函數

awk在編程時容許使用函數,函數定義方法:

function 函數名 (參數列表){

函數體

}

 

經過定義的函數格式,去匹配並傳遞參數。

awk中調用腳本

對於小的單行程序來講,將腳本做爲命令行自變量傳遞給awk是很是簡單的,而對於多行程序就比較難處理。當程序是多行的時候,使用外部腳本是很適合的。首先在外部文件中寫好腳本,而後能夠使用awk的-f選項,使其讀入腳本而且執

awk –f pass.awk /etc/passwd

  1. awk 'BEGIN{FS=":"} $3>30{printf $2"\t"$4"\n"}' name.txt

BEGIN,先指定BEGIN對應的動做,再讀取指定文本進行處

  1. awk '$2~/sc/{printf $2"\n"}' name.txt

當讀取要處理的數據時,按照一行一行的方式進行順序讀取,根據默認的或指定的分割符進行 分割賦值

  1. df -h|awk '/\/dev\/sda[0-9]/{printf $0"\n"}'

根據條件進行判斷,將符合條件的對象按照 指定格式輸出 printf

  1. awk'NR==2{a1=$3} NR==3{a2=$3} NR==4{a3=$3;a=a1+a2+a3;printf "zs+sc+lc="a"\n"}' name.txt

全部數據都處理完成後,最終執行END對用的動做,結束

  1. awk -F : '$3<500{printf $1"\t"$7"\n"}' /etc/passwd
  2. awk '{print $1}' logfile | sort| uniq -c |sort -rn

第一個 sort 的目的是從新排序,爲uniq -c 作準備,sort -rn 的目的是按訪問量從大到小進行排序

 

 

sed命令

sed主要是來進行數據選取,替換,刪除,新增的命令

交互式文處理器

Sed會把全部輸出默認定向到屏幕

-i能保存文件

選項

u -n:通常sed命令會把全部數據都輸出到屏幕,若是加入此選擇,則只會把通過sed命令處理的行輸出到屏幕。

u -e:容許對輸入數據應用多條sed命令編輯。

u -f 腳本文件名:從sed腳本中讀入sed操做。和awk命令的-f很是相似。

u -r:在sed中支持擴展正則表達式。

通常使用在進行匹配是 要求使用正則表達式時 加入

基礎正則表達式能夠直接使用,不加 -r

擴展正則表達式,則必須使用 -r 選項聲明才能調用

u -i:用sed的修改結果直接修改讀取數據的文件,而不是由屏幕輸出

動做:

u p:打印,輸出指定的行。

u a \:追加,在當前行後添加一行或多行。添加多行時,除最後一行外,每行末尾須要用「\」表明數據未完結。

u i \:插入,在當期行前插入一行或多行。插入多行時,除最後一行外,每行末尾須要用「\」表明數據未完結。

u c \:整行替換,用c後面的字符串替換原數據行,替換多行時,除最後一行外,每行末尾需用「\」表明數據未完結。

u d:刪除,刪除指定的行。

u s:字串替換,用一個字符串替換另一個字符串。格式爲「行範圍s/ 舊字串/新字串/g」( 和vim中的替換格式相似)

 

sed命令咱們要知道的是,它全部的修改都不會直接修改文件的內容,而是在內存中進行處理而後打印到屏幕上,使用 -i 選項纔會保存到文本中。

實例

行數據操做

顯示某行的信息

sed 2p’文件

 

-n 顯示時只顯示指定的行進行顯示

 

刪除數據

sed 2,4d’文件

 

sed 刪除掉的文件內容並無真的修改文件

 

追加、插入數據

sed 2[ a | i ]’ 文件名

 

a 在指定行後面追加,i 在指定行前面插入

 

假如要追加多行,則須要用 \ 做爲一行的結束,最後一行不須要。

 

-n 的做用是隻顯示追加部分!

整行替換數據

sed 2c No such person

 

 

上面咱們作了不少操做,可是全部的操做都沒有保存到源文件中,假如你肯定你就是要修改此文檔,請在sed 後面跟上-i 選項,但請必定要當心,(最好是先不帶i 預先設置看下結果,而後再加上i選項)

 

字符串替換

c 進行整行替換,假如想進行關鍵詞替換(一行中的一部分),咱們須要用s 來進行替換,格式:

sed ‘ns/old/new/g’ 文件名 #n表明第幾行

 

順便把sc 的成績註銷掉,讓他補考去吧!

 

將指定內容替換成空

 

sed 要進行多行操做時,只能經過-e 寫多條操做語句,用;或回車分隔。

sort字符處理命令

sort 排序命令

sort 選項 文件名

-f 忽略大小寫

-b 忽略每行前的空白部分

-n 以數值型進行排序,默認使用字符串類型排序

-r 反向排序

按照關鍵詞前的統計結果進行排序(-n 用數值型排序)

-u 刪除重複行(=下面的uniq

-t 指定分隔符,默認分割符是製表符

-k n[,m] 按照指定字段範圍排序,從n字段開始到m字段結束。

sort 將每一行當作一個總體,多行之間進行對比,對比方式:逐個字符比較,按照ASCII編碼升序進行 排列

若要按照標準的英語ASCII編碼進行排序,須要取消掉當前的語系類型(unset LANG;sort -f /test/b >> a.txt)

sort b.txt | uniq -c | sort -rn

sort 爲了將重複行排列到一塊兒

uniq -c 統計重複行出現的次數

sort 命令默認使用每行開頭第一個字符進行排序

 

假如 要進行反向排序則須要加-r 選項

 

按照指定的排序字段進行排序,使用-t 指定分割符 , 而且使用-k 指定段號

 

#有問題!排序並非0 1 2 3 。。。

 

oh,好了,看來以前的排序方式是字符排序,而加上-n 以後成爲了數值排序。

指定範圍時咱們能夠寫k 3,5  也能夠寫3,3 ==

uniq取消重複行

必先sortuniq重複行不連續時uniq處理!!!

uniq用來取消重複行,與sort u 是同樣的,格式:

uniq 選項 文件名

- i 忽略大小寫

- c 顯示輸出中,在每行行首加上本行在文件中出現的次數。它可取代- u- d選項。

統計連續的重複行出現次數(將統計結果標記在關鍵詞 前)

- d 只顯示重複行。

- u 只顯示文件中不重複的各行。

- n n個字段與每一個字段前的空白一塊兒被忽略。一個字段是一個非空格、非製表符的字符串,彼此由製表符和空格隔開(字段從0開始編號)

+n n個字符被忽略,以前的字符被跳過(字符從0開始編號)

- f n - n相同,這裏n是字段數。

- s n +n相同,這裏n是字符數。

 

 

須要注意的是,當重複行不連續時,uniq是不生效的,須要先排序,再執行

 

統計命令WC

wc  [選項] 文件

c 統計字節數。

-l 統計行數。

-m 統計字符數。這個標誌不能與 -c 標誌一塊兒使用。

-w 統計字數。一個字被定義爲由空白、跳格或換行字符分隔的字符串。

-L 打印最長行的長度。

-help 顯示幫助信息

--version 顯示版本信息

統計指定文件中的字節數、字數、行數,並將統計結果顯示輸出。該命令統計指定文件中的字節數、字數、行數。若是沒有給出文件名,則從標準輸入讀取。wc同時也給出所指定文件的總統計數

sleep命令 :延時執行

sleep 1  :睡眠1

sleep 1s  :睡眠1

sleep 1m  睡眠1

sleep 1h :睡眠1小時

實例

#!/bin/bash

b=' '

for ((i=0;$i<=100;i++))

do

         printf "Progress:[%-100s]%d%%\r" $b $i

         sleep 0.1s

         b=#$b

done

按照文件類型進行判斷

 

使用 [ ] 括號來進行判斷,利用 $? 來檢測判斷結果

 

#注意 [ ] 中內容和括號之間有空格

 

#咱們能夠結合以前所學的&& || 實現

按照文件權限進行判斷

 

測試:

 

 

兩個文件之間進行比較

 

判斷下咱們的硬連接

 

兩個整數之間進行比較

 

測試

 

 

字符串的判斷

 

上面是判斷字符串,是要判斷變量,就要加雙引號

判斷變量是否爲空要用引號「」,

測試

 

#字符爲空和沒有賦值都爲空

 

 

多重條件判斷

 

測試:邏輯與

 

 

邏輯非

 

-n 變量不爲空,則爲真

加入後,判斷取反,因此變量爲空纔是真

 

if條件判斷

單分支if條件語句

 

單分支條件語句比較簡單,只須要一個判斷條件,符合則執行,不符合則直接退出。

格式:

if [ 條件判斷式 ]then

程序

fi

注意事項:

  1. if 語句使用fi結尾,和通常語言使用大括號結尾不同
  2. [ 條件判斷式 ] 就是使用test 命令進行判斷,因此中括號和條件判斷式之間必須有空格
  3. then 後面跟符合條件後執行的程序,能夠放在 [ ] 以後,加;隔開。也能夠使用換行寫入(用換行就沒必要寫;了)

if [ 條件判斷式 ]

then

程序

fi

 

統計根分區使用率?

雙分支if條件語句

 

 

格式

if [條件判斷式]

then

條件成立,執行的程序

else

條件不成立,執行的程序

fi

 

多分支if分支語句

 

格式

if [條件判斷式1]

then

條件判斷式1成立,執行程序1

elif  [條件判斷式2]

then

條件判斷式2成立,執行程序2

更多………

else

都不成立,則執行此程序

fi

 

練習:判斷文件是什麼類型的文件的腳本!

 

case分支語句

case語句和if...elif...else語句同樣都是多分支條件語句,不過和if多分支條件語句不一樣的是,case語句只能判斷一種條件關係,而if語句能夠判斷多種條件關係。

 

case語句語法以下:

case  $變量名  in

「值1」)

變量的值等於值1,則執行程序1

;;

「值2」)

 變量的值等於2,則執行程序2

;;

 省略多個分支…………

  *

變量的值都不匹配上面的值,則執行此程序

;;

esac

 

注意事項:

  1. case語句,會取出變量中的值,而後與語句體中的值逐一比較。若是數值符合,則執行對應的程序,若是數值不符,則依次比較下一個值。若是全部的值都不符合,則執行「*)」(「*」表明全部其餘值)中的程序。
  2. case 語句以case開頭,以esac結尾(切記……)
  3. 每個分支須要用;; 結束,注意是everyone!!!

 

練習寫一個源碼apache的啓動管理腳本

for循環

for循環是固定循環,循環次數是有限的次數,也叫計數循環。

 

語法一:

for 變量  in  1  2  3 ……

do

程序

done

注:這種語法中for循環的次數,取決於in後面值的個數(空格分隔),有幾個值就循環幾回,而且每次循環都把值賦予變量。也就是說,假設in後面有三個值,for會循環三次,第一次循環會把值1賦予變量,第二次循環會把值2賦予變量,依次類推。

練習:計算1+2+3+..+10的結果?

 

語法二:

for  ((初始值;循環控制條件;變量變化))

do

程序

done

  1. 初始值:在循環開始時,須要給某個變量賦予初始值,如i=1
  2. 循環控制條件:用於指定變量循環的次數,如i<=100,則只要i的值小於等於100,循環就會繼續;
  3. 變量變化:每次循環以後,變量該如何變化,如i=i+1。表明每次循環以後,變量i的值都加1

練習計算1+2+3+..+100的值

 

while循環

只要條件判斷式成立,循環就會一直繼續,直到條件判斷式不成立,循環纔會中止。

 

語法

while  [ 條件判斷式 ]

do

程序

done

練習仍是1+2+3+..+100=

until循環

until循環和while循環相反,只要條件判斷式不成立,則一直循環,何時成立,何時結束循環

 

語法

until [ 條件判斷式 ]

do

程序

done

 

函數

語法:

function 函數名 () {

程序

}

練習1+2+3+..+n寫成函數!

注意functionshell能夠不用輸

特殊流程控制語句

exit退出腳本

系統中的exit是退出當前登陸 , 可是在shell中則只是退出腳本,後續再也不進行執行。

exit [ ]

exit 退出時若是定義好了返回值,那麼咱們能夠經過「$?」來查看

 

break退出循環

當程序執行到break 語句時,會結束當前的循環,直接退出。

 

 

continue跳出循環

continue只會結束當前的單次循環,將本次跳出繼續下次循環。

 

 

truefalse

true:什麼作,只設置退出碼爲0

false什麼都不作,只設置退出碼1

Linux底下,每一個程序執行完畢都會返回一個退出碼給調用者,通常狀況下0表示成功,其餘值代表有問題

引導裝載程序設備

  1. U盤安裝時,默認u/dev/sda硬盤爲/dev/sdb,
  2. 引導文件必定要安裝至/dev/sdb(光盤只讀不存在這種問題)

a) 雖然系統安裝到了硬盤,但引導文件u上,拔走u後開機還會顯示沒法加載,需引導

 

*************************************

shell擴展

1.awk NF 變量的特殊使用方式:

head –3 /etc/passwd|awk -F ":" '{printf $(NF=5)"\n"}'

head –n 3 /etc/passwd|awk -F ":" '{printf $(NF=5)"\n"}'

head –3 /etc/passwd|awk -F ":" '{printf $(NF-2)"\n"}'

head –n 3 /etc/passwd|awk -F ":" '{printf $(NF-2)"\n"}'

awk –F : ‘{printf  $wf-2 「\n」}’ /etc/passwd

2.shell計算:

echo `seq 1 10`

1-10範圍內的整數(可直接應用於for的循環結構中)

echo ‘seq 1 10’

可把1-10至一

seq  10  -0.5  -5

能夠實現

seq  -f  「3g」  1  10

3g:指定數字的位數爲3

seq  -f  「03g」  1  10

03g:指定數字位數爲3不足0

seq  -w  5  10

指定輸出寬度一致,與最大數位數保持一致,不足用0

能與-f同時用

seq  -f  「s*r9003g」  5  10

90前制定字串,輸出

s*005

s*006--- s*010

seq  -s  「 」  5  10

指定分隔符與空格默認爲換行

     echo能夠\n設爲空格,須要外加\t

浮點運算

c=$(echo "5.01-4*2.0"|bc)

echo $c

-2.99

 

c=$(awk 'BEGIN{print 7.01*5-4.01 }')

echo $c

31.04

BEGIN必須要用,否則會等待輸入文件名

 

數組聲明:

declare -a abc :無關緊要

abc[0]=1 , abc[1]=2

unset abc  :刪除整個數組全部信息

unset abc[1]  :只刪除單個數據,其它數據下標不變

數組賦值:

aabc=(1 2 3)47

ba="1 2 3"

abc=($a)

調用數組全部值

echo ${abc[*]}

echo ${abc[@]}

相等

數組長度獲取:(元素數,指的是值的數量個數)

數組長度:

$(#abc{@}) 等同於 ${#abc[*]}

元素長度:

echo ${abc[1]} | wc -L

echo -n ${abc[1]} | wc -L

#去掉換行符再統計

數組遍歷:

abc=(1 2 3)

a=0

for i in ${abc[@]}

do

echo "$a個元素的值爲:$(i)"

let a++

done

數組元素修改:

abc=(1 2 3)

abc[3]=10

 

abc=(1 2 3)

bcd=(${abc}[*] 4)

echo $(bcd[*])

數組切片:

abc=(1 2 3 4 5 6 7)

${abc[@]}  等於  ${abc[*]}

${abc[@]:1}

#從下標爲1的位置開啓取值,直到結

而且哪怕開了「set  -u」,使用下標超界也不會報錯

關鍵沒有任何提示 !!危險

${abc[@]::3}

#從下標爲0的位置連續取3個值

${abc[@]:2:3}

#從下標爲2的位置連續取3個值

${abc[@]:(-2):2}

#從倒數第二個下標位連續取2個值

顯示2值,因第3不存在,但無任何報錯!

bcd=(${abc[@]:(-2):2})

#將以前的處理結果賦值給新的數組變量

切片後賦值新數組

元素切片:

abc=(zhangsan lisi laowang laosong)

${abc[0]}

##取第一個元素的全部字符

${abc[0]:1}

#從第一個元素的下標爲1位置開始,取剩餘全部字符

${abc[0]::3}

#從第一個元素的下標爲0位置開始,連續取三個字符串

${abc[0]:2:3}

#從第一個元素的下標爲2位置開始,連續取三個字符串

 

數組替換:

abc=(one two three four)

${abc[@]/e/E}

#每一個被匹配元素只替換一次

每一個元素中只替換匹配到的第一個字符「e」換「E」

${abc[@]//e/E}

#每一個被匹配元素替換屢次

每一個元素中替換全部匹配到的「e」換「E」

${abc[@]/e/}

#每一個被匹配元素只刪除一個字符

每一個元素中刪除第一個匹配到的字符「e」

${abc[@]/e/}

#每一個被匹配元素刪除多個字符

每一個元素中刪除全部匹配到的字符「e」

 

abc=(zhangsan lisi laowang laosong)

${abc[0]/#z/Z}

#將數組內第一個元素的首字符z替換成Z

${abc[0]/%n/N}

#將數組內第一個元素的尾字符n替換成N

#若想實現每個都智能替換,要使用很複雜的循環,暫不建議如今編寫

 

實例

1個字符串拆分爲多個字符串

a=`echo 2018-04-28_12:15:30_ABC.log |awk -F "." '{printf $1}'| sed -r 's/[-_:]/ /g' | tr -d "[a-zA-Z]"`

abc=(${a})

for i in ${abc[@]}

do

echo $i

done

echo 2018-04-28_12:15:30_ABC.log | sed -r 's/[-_:]/ /g' | grep -v 「[a-Z]」

echo 2018-04-28_12:15:30_ABC.log | sed 「[a-Z]//g」 | sed -r 's/[-_:]/ /g'

利用數組求最大值

a=(34 78 3 95 62 59 100)

max=${a[0]}

len=${#a[@]}

 

for ((i=1;i<$len;i++))

do

if [[ ${a[i]} -gt ${max} ]]

then

max=${a[i]}

fi

done

echo "數組中最大值爲:$max"

注意

括號與雙中括號區別:

1. 中括號的test(?命令纔會對變量進行單詞分離

a=」a b」 [ $a = 「a b」 ] && echo yes   (需用」$a」)

2. 中括號的test(?命令不會對變量進行單詞分離

a=」a b」 [[ $a = 「a b」 ]] && echo yes

 

 

 

 

 

*************************************

shell注意事項

  1. $ 調用變量值
  2. 建議安裝時修改主機名,因裝機時各類文件記錄中會記錄文件名,建修改,主機名會文件中記錄的以前的主機名發生衝突,致使部分功能報
  3. win中:局域網內主機名一致會直接報錯
  4. linux 中多個服務器日誌保存到一個位置,最好經過主機名來區分
  5. 安裝依賴包會用到yum(主要包,仍是要求源碼包安裝)
  6. 當文件設置acl權限後,其所屬組位置再也不顯示所屬組權限,顯示的權限位mask權限。

*************************************

Linux啓動管理

啓動流程

若是電腦不支持虛擬器,重啓本機電腦,打開BIOS把物理CPU否支持虛擬化的開頭(打開

電自檢

  1. 插電後第一通電的是:主板BIOS程序加載(內存中加載)
  2. 檢查全部硬件是否正常工做
  3. 能夠經過BIOS程序調整硬件的工做模式
  4. 是主板上有二個頻率一致的話,默認是按低頻的CPU算的
  5. 引導 BOOT memu全部可加載的存儲設
    1. U盤,光盤,硬盤,軟盤卡等

引導程序加載(boot loader

  1. 加載引導菜單提供選擇操做系統的選項
  2. 選擇進入操做系統時,進入模式的7
  3. 基本上runlevel分爲0-6 7個等級:
    1. 0:關機,shutdown
    2. 1:單用戶模式(sigle user),root用戶,無須認證;維護模式;。
    3. 2:多用戶模式(multi user),會啓動網絡功能,但不會啓動NFS;維護模式;
    4. 3:多用戶模式(multi user),徹底功能模式;文本字符界面;
    5. 4:預留級別:目前無特別使用目的,但習慣同3級別使用;
    6. 5:多用戶模式(multi user),徹底功能模式,圖形界面;
    7. 6:重啓模式,
    8. 如何找打kernel文件所在位置?
      1. root (hd0,0)
      2. 內核如何找到驅動文件&模塊文件,模塊區份內核版本
      3. kernel /vmlinuz-2.6.32-642.el6.x86_64 ro
      4. initrd /initramfs-2.6.32-642.el6.x86_64.img

加載內核(kernel)

全部硬件設備的驅動

系統所需的功能模塊(*.ko)

確認系統啓動的默認級別(/etc/inittab)

 

守護進程(內核啓動只會加載守護進程)

系統的守護進程(init

內核啓動只加載守護進程

內核3.*前:init  

大多自動啓動init管理

內核3.*3.*之後:systemd

幾乎全部的手動或自動啓動都受systemd管理

加載須要開機自啓的服務

依靠系統的守護進程init啓動各種服務進程

根據系統啓動級別確認哪些軟件開機自啓(/etc/rc.d/rcN.d)(k開頭不自啓;s開頭開機自啓)

啓動流程詳細

按下電源鍵

插電後第一個設備通電的就是主板BIOS

BIOS自檢

BIOS程序加載(從內存里加載)

第一階段:POST(Power-on-self test),主要檢測主機硬件設備如:CPU、內存、硬盤、顯卡等是否正常;

在第一階段完成後會按BIOS中設置的系統啓動順序來搜索可啓動的磁盤設備。如:光盤、硬盤、U盤等;搜到第一個可啓動的設備後就讀取該設備的第一個扇區的內容並執行。到此爲止BIOS的任務就完成了。

檢查全部硬件是否正常工做

經過BIOS程序能夠調整硬件的工做模式

若是主板有二個頻率不一致的CPU,默認是按低頻率CPU

系統引導

MBR(Master Boot Record):硬盤的0柱面、0磁頭、1扇區稱爲主引導扇區。它由三個部分組成,主引導程序(Bootloader)、硬盤分區表DPT(Disk Partition table)和硬盤有效標誌(55AA)

加載引導菜單,提供選擇操做的系統的選項

選擇進入操做系統時,進入模式(7種)也是啓動級別

看下面的登陸系統

Linux內核啓動。

Bootloader爲引導加載程序,它的主要功能爲:

一、  提供菜單,容許用戶選擇要啓動的系統或不一樣的內核版本;

二、  加載選定的內核到內存中,解壓、展開,然後把系統的控制權交給內核;目前Linux中最經常使用的Bootloader GRUB;

 

GRUB引導

主要有三個階段:

stage1:做用很簡單就是把第一個扇區讀取到內存中,但注意stage1是沒有識別文件系統的能力的。

stage1.5:做爲stage1和stage2的中間橋樑,stage1.5是有識別文件系統的能力的,此後grub才能去訪問/boot/grub目錄下的stage2文件,並將stage2載入內存中執行。

stage2:被載入內存執行時,它首先會去解析grub的配置文件/boot/grub/grub.conf,而後加載內核鏡像到內存中,並將控制權轉交給內核。而內核會當即初始化系統中各設備並作相關的配置工做,其中包括CPU、I/O、存儲設備等。

 

初始化系統

內核被加載到內存中而且取得了系統的控制權,在取得控制權後內核會當即初始化系統中的設備,包括CPU、I/O、存儲等;

守護進程

關於Linux的設備驅動程序的加載,可能會須要initrd(ramdisk)。由於有一部分驅動程序會被直接編譯進內核文件中,另外一部分會被以模塊的形式放在initrd中;在初始化硬件及加載各硬件驅動程序後,內核會以只讀的方式掛載根文件系統,而且運行第一個程序/sbin/init。此後系統的控制權就交給了/sbin/init進程了。

內核3.*前:init  

大多自動啓動init管理

內核3.*3.*之後:systemd

幾乎全部的手動或自動啓動都受systemd管理

 

登陸系統

/sbin/init進程是系統第一個啓動的程序,它是其餘全部進程的父進程。當它接管了系統的控制權先以後,它首先會去讀取/etc/inittab文件來執行相應的腳本進行系統初始化,如設置鍵盤、字體,裝載模塊,設置網絡等。

 

niittab中有一個很重要的設置選項runlevel。根據runlevel的不一樣啓動不一樣的服務,讓Linux的使用環境不一樣。

 

基本上runlevel分爲0-6 ,7個等級:

0:關機,shutdown

1:單用戶模式(sigle user),root用戶,無須認證;維護模式;。

2:多用戶模式(multi user),會啓動網絡功能,但不會啓動NFS;維護模式;

3:多用戶模式(multi user),徹底功能模式;文本字符界面;

4:預留級別:目前無特別使用目的,但習慣同3級別使用;

5:多用戶模式(multi user),徹底功能模式,圖形界面;

6:重啓模式,

系統啓動腳本配置文件

系統初始化的過程主要是執行一些腳本配置文件來完成的:

一、執行系統初始化腳本(/etc/rc.d/rc.sysinit),對系統進行基本的配置,以讀寫方式 掛載 根文件系統及其它文件系統,到此係統算是基本運行起來了,後面須要進行運行級別的肯定及相應服務的啓動。

 

二、執行/etc/rc.d/rc腳本。該文件定義了服務啓動的順序是先K後S,而具體的每一個運行級別的服務狀態是放在/etc/rc.d/rc*.d(*=0~6)目錄下,全部的文件均是指向/etc/init.d下相應文件的符號連接。rc.sysinit經過分析/etc/inittab文件來肯定系統的啓動級別,而後纔去執行/etc/rc.d/rc*.d下的文件。

 

三、執行用戶自定義引導程序/etc/rc.d/rc.local完成了系統全部的啓動任務後,linux會啓動終端或X-Window來等待用戶登陸。

 

最後一步輸入用戶名及密碼就能夠登入系統了。

 

若是看不清楚 看附件

配置文件

grub.conf

grub.conf是grub的主配置文件,經過這個配置文件,grub才能找到kernel,系統才能正常啓動。

 

default

default:定義默認啓動的操做系統

timeout

timeout:定義選擇操做系統菜單的等待時間

splashimage

splashimage:指定咱們選擇kernel或操做系統菜單後面那張圖片。若是定義,這張圖片須要用linux自帶的軟件xmp製做,在圖形界面能夠打開。圖片的特色爲:

     1,必須是xpm的格式  

     2,必須用gzip壓縮   

     3,最多使用14位的顏色位數  

     4,分辨率640*480

hiddenmenu

hiddenmenu:表示隱藏選擇k操做系統的菜單,只有出現等待界面後按下enter鍵纔會出現。若是沒有這個字段,則每次系統啓動都會出現這個選擇菜單。

title identify:指定一個操做系統,linux中能夠有多個title;identify是這個操做系統的識別符,能夠隨意寫。

      root:用於指定grub所能識別的根,而不是根文件系統。

       kernel:用於指定系統的內核文件的位置

initrd:幫助kernel完成系統的啓動,例如加載根文件系統所在分區的驅動等。若是kernel自己有相應強大的功能,則不須要initrd

password

password:設定密碼。放在title外表示進入操做系統等待菜單的編輯模式須要密碼,而放在title內表示啓動對應的操做系統須要密碼,密碼能夠是明文或是用MD5進行加密過的。能夠防止其餘人進入編輯kernel菜單進入單用戶模式啓動咱們的系統

 

 

實驗:

背景圖片的位置:

splashimage=(hd0,0)/grub/splash.xpm.gz

grub是以hd來識別磁盤的,第一磁盤爲hd0,第二個磁盤爲hd1...,

hd0,0表示第一個磁盤的第一個分區,hd0,1表示第一個磁盤的第二個分區...,而且grub是直接讀分區來找到對應的文件;

而個人系統上只有一塊硬盤,而且/boot是一個單獨的分區,而且爲系統的第一個分區,grub等文件在這個分區上。(若是你的系統上/是一個獨立分區,而且boot,grub和其中的文件都在/這個分區中,則這段應該是: splashimage=(hd0,0)/boot/grub/splash.xpm.gz)因此它的意思是:grub在第一個分區中找到grub這個目錄,再找到這個圖片文件做爲背景.

 

修改背景圖片:

生成所需的xpm格式的圖片文件

使用ImageMagick命令將普通的.jpg.bmp等生成xpm文件

  1. convert –resize 640x480 -colors 14 源文件 生成文件
  2. gzip  文件名
  3. 將生成的文件導入到/boot/grub/下(導入前先將源文件備份)

 

grub 加密:

password --md5 $1$UrprW0$UzN7ozenwICzcPCQgiFts1

表示要想進入kernel的編輯菜單,須要輸入密碼。這個密碼能夠經過命令grub-md5-crypt生成。

密碼添加在title前面

將密碼放在這個位置時,在選擇grub菜單時就須要輸入密碼了。

密碼添加在title後面

密碼在這個位置時,選擇完操做系統後,在進入系統引導時才須要輸入密碼。

 

root密碼找回

  1. 重啓系統後出現GRUB界面在引導裝載程序菜單上,用上下方向鍵選擇你忘記密碼的那個系統鍵入「e」 來進入編輯模式。
  2. 接下來你能夠看到以下圖所示的畫面,而後你再用上下鍵選擇最新的內核(這裏是第二行,kernel..),而後繼續按「e」鍵。
  3. 而後在編輯界面rhgb quiet後面加「空格」,而後鍵入「single」,或者直接輸入數字的「1」並回車肯定。
  4. 回車後,按「b」鍵啓動進入單用戶模式,在這裏修改root的密碼。

 

手動安裝grub

通常在grub被覆蓋的狀況下咱們須要進行手動的安裝grub到咱們的MBR中,那如今的問題是grub已經損壞了,咱們沒有一個能夠交互寫命令的地方了,應該怎麼設置呢?so…咱們要藉助光盤上的拯救模式。

 

根據提示加載光盤上的虛擬系統後,咱們須要手動安裝下grub

a. chroot /mnt/sysimage

因爲是光盤啓動的救援模式,so….它的根目錄是虛擬的,咱們須要用chroot命令將真根目錄掛載回來

b. 執行grub 進入交互界面

root  hd0,0) #設置grub的主目錄

setup (hd0) #直接將grub安裝到MBR中,不須要指定分區(硬盤開頭)

quit

c. 重啓

 

內核模塊

模塊位置:

/lib/modules/2.6******/kernel/

模塊保存文件:

/lib/modules/2.6******/modules.dep

depmod:模塊同步到modules.dep

depmod

-a 掃描全部,並寫入*.dep

-A 掃描新模塊,並寫入*.dep

-n 顯示到屏幕,不寫入*.dep

查看內核模塊

lsmod 查詢全部模塊的信息

modinfo 查詢某模塊的簡單信息

 

添加刪除內核模塊

modprobe [選項] 模塊

a. 下載到相應的模塊

b. 複製到指定位置,通常/ib/modules/2.6******/kernel/

c.  depmod進行掃描,將新模塊寫入modules.dep文件中

d. modprobe進行安裝

 

*************************************

Linux服務管理

服務分類

 

二進制包

1. 快速安裝、卸載、升級和管理軟件

2. 安裝簡潔、速度快

3. 通過封裝,沒法直接獲取源代碼

4. 功能選擇性差,功能定製不靈活

源碼包

1. 得到最新的軟件版本,及時修復bug

2. 根據用戶須要,靈活定製軟件功能

 

RPM包的服務管理

RPM包所安裝的軟件有特定的管理命令,管理方式分爲兩種:

 

獨立服務:

所謂的獨立啓動,就是能夠自行管理啓動,和其餘的軟件的啓動與否沒有關係,不依賴其餘軟件的啓動,此類軟件當被調用時會直接響應,處理請求的速度快。目前Linux中絕大多數服務爲獨立服務。

 

手動啓動:

  1. 啓動腳本啓動,/etc/init.d/某服務腳本文件

/etc/init.d/httpd start

2. service服務管理工具

service httpd start | stop | restart

service 服務名 start|stop|restart|reload|......

/etc/init.d/腳本名 start|stop|restart|reload|......

注:服務名=腳本名

自動啓動:

1. 使用chkconfig服務自啓動工具管理

查看軟件的自啓動:

chkconfig –list | grep 服務名

chkconfig --list 服務名

設置某服務的自啓動:

chkconfig [--level 級別]  [獨立服務名] [on | off]
chkconfig --list | 2345 服務名 on-off

2. 使用ntsysv工具設置自啓動軟件

netsysv --level 級別

設置某級別下軟件是否自啓動

F1 :顯示服務的說明信息

在腳本中添加兩行信息:

chkconfig:2345 45 55

description: httpd server.

注:兩個數字不得大於99

chkconfig --add 腳本名 將腳本添加到自啓動管理序列中

chkconfig --del 腳本名 將腳本刪除到自啓動管理序列中

 

基於xinetd的服務:

此類服務沒法獨立啓動,必須依賴某一管理服務來啓動或者關閉,這個管理服務就是咱們xinetd服務了,此服務是Linux的超級守護進程,專門用來管理那些沒法自行啓動的服務,當客戶端請求服務啓動時,請求會先被xinetd服務接受,而後xinetd去喚醒對應的服務,打到啓動某服務的目的。這類服務不會一直處於開啓狀態,只有在xinetd服務接受到請求的時候纔會喚醒對應服務,處理完後服務關閉,這樣大大節省了服務器的資源,可是對應的軟件的反應速度沒有獨立服務反應快。

 

 

基於xinetd服務的telnet

rpm 中集中管理模式

一個大服務:管理多個小服務

此處咱們用telnet服務來舉栗子!telnet是遠程管理命令,但因爲傳輸過程是明文,so… 咱們不選用他,咱們使用更安全的ssh,telnet的端口是23,咱們藉助xinetd來啓動下咱們的telnet。

 

手動啓動xinetd中的某服務

vim /etc/xinetd.d/telnet

 

此處咱們只須要將disable = yes   修改爲 no 便可!

而後從新啓動xinetd服務(注意咱們如今是藉助xinetd來管理的telnet)

 

設置xinetd內的服務自啓動

一樣藉助chkconfig 和 ntsysv 來實現自啓動,可是這個地方咱們須要注意的是,咱們不是設置某個具體服務的自啓動,而是設置的xinetd的自啓動。

telnet

服務端包裝包名telnet-server

客戶端包裝包名telnet

 

源碼包的服務管理

手動啓動源碼包服務指定路徑啓動

eg. /usr/local/apache2/bin/apachectl start | stop | restart …………

絕對路徑:

/usr/local/apache2/bin/apachectl start | stop .......

自動啓動源碼包服務

藉助/etc/rc.d/rc.local 或者 /etc/rc.local 實現開機自啓

寫入手動啓動命令便可

藉助/etc/rc.local,實現開機自啓

vim /etc/rc.local

/usr/local/apache2/bin/apachectl start &

本身編寫管理腳本

/etc/init.d/

service + chkconfig

讓系統識別源碼包

對照剛纔看的RPM包安裝的httpd的啓動腳本文件咱們本身寫一個讓系統識別咱們的源碼軟件。

 

 

注意:腳本中有兩句話必須存在!做用讓chkconfig識別此腳本,並能執行。

 

tcpdump命令

tcpdump命令是一款sniffer工具,它能夠打印全部通過網絡接口的數據包的頭信息,也能夠使用-w選項將數據包保存到文件中,方便之後分析

tcpdump(選項)

-a:嘗試將網絡和廣播地址轉換成名稱;

-c<數據包數目>:收到指定的數據包數目後,就中止進行傾倒操做;

-d:把編譯過的數據包編碼轉換成可閱讀的格式,並傾倒到標準輸出;

-dd:把編譯過的數據包編碼轉換成C語言的格式,並傾倒到標準輸出;

-ddd:把編譯過的數據包編碼轉換成十進制數字的格式,並傾倒到標準輸出;

-e:在每列傾倒資料上顯示鏈接層級的文件頭;

-f:用數字顯示網際網絡地址;

-F<表達文件>:指定內含表達方式的文件;

-i<網絡界面>:使用指定的網絡截面送出數據包;

-l:使用標準輸出列的緩衝區;

-n:不把主機的網絡地址轉換成名字;

-N:不列出域名;

-O:不將數據包編碼最佳化;

-p:不讓網絡界面進入混雜模式;

-q :快速輸出,僅列出少數的傳輸協議信息;

-r<數據包文件>:從指定的文件讀取數據包數據;

-s<數據包大小>:設置每一個數據包的大小;

-S:用絕對而非相對數值列出TCP關聯數;

-t:在每列傾倒資料上不顯示時間戳記;

-tt: 在每列傾倒資料上顯示未經格式化的時間戳記;

-T<數據包類型>:強制將表達方式所指定的數據包轉譯成設置的數據包類型;

-v:詳細顯示指令執行過程;

-vv:更詳細顯示指令執行過程;

-x:用十六進制字碼列出數據包資料;

-w<數據包文件>:把數據包數據寫入指定的文件。

實例

直接啓動tcpdump將監視第一個網絡接口上全部流過的數據包

tcpdump

 

監視指定網絡接口的數據包

tcpdump -i eth1

若是不指定網卡,默認tcpdump只會監視第一個網絡接口,通常是eth0,下面的例子都沒有指定網絡接口。

監視指定主機的數據包

打印全部進入或離開sundown的數據包。

tcpdump host sundown

也能夠指定ip,例如截獲全部210.27.48.1 的主機收到的和發出的全部的數據包

tcpdump host 210.27.48.1

打印helios hot 或者與 ace 之間通訊的數據包

tcpdump host helios and \( hot or ace \)

截獲主機210.27.48.1 和主機210.27.48.2 210.27.48.3的通訊

tcpdump host 210.27.48.1 and \ (210.27.48.2 or 210.27.48.3 \)

打印ace與任何其餘主機之間通訊的IP 數據包, 但不包括與helios之間的數據包.

tcpdump ip host ace and not helios

若是想要獲取主機210.27.48.1除了和主機210.27.48.2以外全部主機通訊的ip包,使用命令:

tcpdump ip host 210.27.48.1 and ! 210.27.48.2

截獲主機hostname發送的全部數據

tcpdump -i eth0 src host hostname

監視全部送到主機hostname的數據包

tcpdump -i eth0 dst host hostname

監視指定主機和端口的數據包

若是想要獲取主機210.27.48.1接收或發出的telnet包,使用以下命令

tcpdump tcp port 23 host 210.27.48.1

對本機的udp 123 端口進行監視 123 ntp的服務端口

tcpdump udp port 123

監視指定網絡的數據包

打印本地主機與Berkeley網絡上的主機之間的全部通訊數據包

tcpdump net ucb-ether

ucb-ether此處可理解爲「Berkeley網絡的網絡地址,此表達式最原始的含義可表達爲:打印網絡地址爲ucb-ether的全部數據包

打印全部經過網關snupftp數據包

tcpdump 'gateway snup and (port ftp or ftp-data)'

注意:表達式被單引號括起來了,這能夠防止shell對其中的括號進行錯誤解析

打印全部源地址或目標地址是本地主機的IP數據包

tcpdump ip and not net localne

tcpdump –i eth0 –nn –X –vv tcp port 21 and ip host 來源ip

 

 

 

 

*************************************

Linux系統管理

進程管理

什麼是程序?

代替人管理操做系統,完成特定任務,解決特定問題的一段代碼集合。

一個看獲得,摸得着的代碼集合體

什麼是進程?

進程(Process)是計算機中的程序關於某數據集合上的一次運行活動。

進程由程序打開後產生的載體

什麼是線程?

線程是進程中的一個實體,被稱爲輕量級進程,是程序執行流的最小單元。

一個線程只能處理一個請求,多個線程能夠同時處理多個請求

進程是載體,線程纔是負責幹活的

 

進程的做用

  1. 判斷服務器的健康狀態:咱們能夠經過觀察服務器的CPU 內存等佔用率來提早發現問題,及時解決,避免發生宕機或者服務卡死!
  2. 查看系統內的進程是否合法:咱們要常常過濾進程中查看是否有非法進程在運行,避免信息的泄露或損壞

 

進程的查看

ps命令(aux-le查看當前一瞬間的進程的狀態信息

ps 命令aux,-le)

靜態查看系統中的進程,查詢的是命令執行一瞬間的進程的狀態。

aux 以BSD操做系統的格式輸出

-le 以Linux標準格式輸出

選項詳解

a 顯示一個終端的全部進程

u 顯示進程的歸屬用戶及內存的使用狀況

x 顯示沒有控制終端的進程

l 長格式顯示,更加詳細的信息

e 顯示全部進程 a的做用一致

 

 

 

 

ps aux結果分析

 

USER:該進程的運行用戶,或者理解爲產生進程的用戶

PID: 進程的PID號

%CPU:進程佔用的cpu的百分比

%MEM:進程佔用物理內存的百分比

VSZ: 佔用的虛擬內存的大小(KB)

RSS: 佔用物理內存的大小(KB)

tty:登陸終端(Alt+F1-F6)

STAT:

D 沒法中斷的休眠狀態(一般 IO 的進程)

R 正在運行的進程

S 處於休眠狀態

T 中止或被追蹤

W 進入內存交換(從內核2.6開始無效)

X 死掉的進程(基本不多見

Z 殭屍進程

< 優先級高的進程

N 優先級較低的進程

L 被鎖進內存的進程

s 進程的領導者(在它之下有子進程)

l 多進程的

+ 位於後臺的進程組

START:進程啓動時間

TIME:進程運行的時間(總時間),非系統時間

COMMAND:產生此進程的命令

 

ps-le結果分析

 

F:進程標誌,說明進程有那些權限

1:進程能夠複製

4:進程使用超級用戶權限

S:進程狀態

PPID:進程的父進程ID號

C:cpu佔比 % 

PRI:進程優先級,數字越小優先級越高,越快被調用執行

NI:進程優先級,數字越小越先被調用

ADDR:進程存在內存的位置

SZ: 進程佔用的內存大小

WCHAN:進程是否運行-表明正在運行)

top 命令 默認每隔二秒刷新一次

top 命令

選項:

-d 秒數:指定刷新頻率

-b :使用批處理模式,和-n結合將top的結果重定

向到文本

-n 次數:指定top 次數,和-b結合

-p :指定查看某的PID的進程

-s :使top在安全模式下運行,避免在交互模式下

出現錯誤

-u 用戶名:只查看(監聽)某一個用戶的進程

 

在交互模式下使用的命令

h:幫助信息

P:按照CPU使用率排序

M:按照內存使用率排序

N:按照PID號排序

T:按照cpu運算時間排序

k:按照PID號給予某一個進程信發送指令,可用於殺

死進程

r:按照PID給某個進程重設優先級(Nice)值

q:退出交互模式

 

top 結果分析

第一行信息

 

第二行信息

 

第三行信息

 

第四行信息:

 

第五行信息

 

 

剩下的選項基本和咱們的PS是相同的。

htop

須要安裝命令,命令總體跟top很少,比top智能

拓展pstree進程樹

-p 顯示PID

-u 顯示運行用戶

 

進程處理命令

Kill

1. kill 進程號

kill -l #查看kill 所支持的信號

經常使用的信號:

HUP(1): 復位,從新加載配置

INT (2): 中斷(同 Ctrl + C)

TERM(15): 終止(正常退出)

KILL(9): 強制終止

CONT(18):繼續(與STOP相反)

STOP(19): 暫停(同 Ctrl + Z)

ps aux | grep 「vi」 | grep -v「grep」

 

service httpd reload

kill -1 25606

從新加載配置文件,但不重啓進程(保證進程號不改變,保證進程持續工做)軟重啓 平滑重啓

 

killall

2. killall 進程名

killall -i #交互式,詢問是否殺死

killall -I(大) #忽略大小寫

 

經常使用的信號:

HUP(1): 復位,從新加載配置

INT (2): 中斷(同 Ctrl + C)

TERM(15): 終止(正常退出)

KILL(9): 強制終止

CONT(18):繼續(與STOP相反)

STOP(19): 暫停(同 Ctrl + Z)

 

pkill

3. pkill 終端號

pkill -9 -t  終端號 #強制殺死某登陸終端

 

經常使用的信號:

HUP(1): 復位,從新加載配置

INT (2): 中斷(同 Ctrl + C)

TERM(15): 終止(正常退出)

KILL(9): 強制終止

CONT(18):繼續(與STOP相反)

STOP(19): 暫停(同 Ctrl + Z)

 

 

 

 

進程優先級(ps–le)

ps –le 能夠查看到進程的優先級

 

PRI表明的是PriorityNI表明nice 兩個都是優先級,可是PRI不能修改,由於這是內核內定義的,沒法人爲修改,可是咱們能修改NI 。

PRI(最終值)=PRI(初始值)+NI值

76=80+(-4)

咱們能夠經過這樣的方式改變優先級,可是NI也有限制。

 

NI值總範圍

NI值總範圍-20 到 19

普通用戶的NI值 : 0 到 19,普通用戶只能調高NI值,不能下降;root能夠隨意調整,包含其餘用戶的進程

nicerenice用於修改NI值的命令

nice 命令

nice 命令(只能在啓動或重啓時)

nice –n -5  service httpd start

ps –le | grep 「httpd」 | grep –v 「grep」

renice

renice 命令(修改啓動狀態進程的NI值)

renice -10 PID

 

工做管理

工做類型:

前臺:當前終端正在進行標準輸出到顯示器上的工做

當前終端的工做只能當前終端管理,其它終端不能管理

 

後臺:不用將命令執行過程標準輸出到顯示器的工做

放入後臺的工做必須是能持續運行的,不然程序會被暫停。

 

bg 恢復到後臺運行

fg 恢復到前臺運行

詳細請看下面的:後臺工做的管理

 

如何將工做放到後臺

1. 命令 & :將工做到到後臺,並持續執行

2. ctrl + z :將工做放到後臺,並暫停執行

 

後臺工做的管理

查看jobs

-l :顯示工做進程PID

將後臺暫停的工做恢復到前臺繼續執行

fg %工做號%可省略,主要是卻別PID的

將後臺暫停的工做恢復到後臺繼續執行

bg %工做號

讓後臺的工做脫離終端進行運行

a. /etc/rc.local 文件

b. 定時計劃任務(下邊)

 

 

系統資源查看

vmstat監控系統資源

vmstat:監控系統資源

結果分析:

Procs(進程):

r:運行隊列中進程數量

b: 阻塞的進程

 

Memory(內存):

swpd: 虛擬內存已使用的大小

free: 空閒的物理內存的大小

buff: 用做緩衝的內存大小(系統)

cache: 用做緩存的內存大小(被調用資源)

 

Swap:

si:   每秒從磁盤讀入虛擬 內存的大小

so: 每秒虛擬內存寫入磁盤的大小

注:若是這個值大於0,表示物理內存不夠用

 

IO:(如今的Linux版本塊的大小爲1024bytes)

bi: 每秒讀取的塊數

bo: 每秒寫入的塊數

 

系統:

in: 每秒CPU中斷數,包括時鐘中斷。

cs: 每秒上下文切換數(資源調用的次數,如:函

 數)。

 

 

CPU(以百分比表示):

us: 用戶進程執行消耗cpu時間(user time)

sy: 系統進程消耗cpu時間(system time)

id: 空閒時間(包括IO等待時間)

wa: 等待IO時間

st: 虛擬機偷取時間(不爲0則表明cpu被其餘虛擬

機所調用)

 

dmesg內核的檢測信息

dmesg:內核的檢測信息

查看開始是內核的檢測信息/var/log/dmesg)

 

free查看內存使用狀況

free 查看內存使用狀況

-b 以字節爲單位顯示

-k 以KB爲單位(默認)

-m 以MB爲單位

-g 以GB爲單位

顯示信息解釋:

第一行:

total: 總計物理內存的大小

used: 已使用內存大小

free: 空閒內存大小

shared: 共享內存,通常系統不會用到

Buffers/cached:未使用的緩存大小

 

 

第二行:(-/+ buffers/cached)

(-buffers/cache)used內存數:

第一部分Mem行中的 used – buffers – cached

(+buffers/cache)free內存數:

第一部分Mem行中的 free + buffers + cached

注:可見-buffers/cache反映的是被程序實實在在吃掉的內存,而+buffers/cache反映的是空閒的內存總數。

第三行:swap的前面有!

虛擬內存:就是把一些硬盤空間轉化爲虛擬內存空間

 

 

 

查看cpu信息

查看cpu信息

邏輯CPU個數

cat /proc/cpuinfo | grep "processor" | wc –l

 

物理CPU個數:

cat /proc/cpuinfo | grep "physical id" | sort -u | wc –l

 

每一個物理CPU中Core的個數:

cat /proc/cpuinfo | grep "cpu cores" | uniq | awk -F: '{print $2}'

 

查看core id的數量,即爲全部物理CPU上的core的個數

cat /proc/cpuinfo | grep "core id" | uniq |  wc –l

 

uptime系統啓動時間和平均負載

uptime:系統啓動時間和平均負載

系統啓動時間和平均負載(通常用top)

 

uname查看系統與內核相關信息

uname : 查看系統與內核相關信息

-a 查看全部相關信息

-r 查看內核版本

-s 查看內核名稱

lsb_release-a查看當前發行版

lsb_release -a 查看當前發行版

lsof列出進程打開或正在使用的文件信息

lsof:列出進程打開或正在使用的文件信息

lsof -p  進程號 :查看某進程運行所調用的資源

lsof -u :查看用戶運行的進程調用了哪些文件

 

系統定時任務

at單次計劃任務命令

at:單次計劃任務命令

at命令的執行須要依託atd服務

service atd start

chkconfig atd on

 

限制用戶使用at命令

/etc/at.allow #白名單

/etc/at.deny #黑名單

白名單的優先級大於黑名單

假如黑白名單都不存在,只有root能使用at命令

 

at命令

at [選項] 時間

-m :執行結束髮送通知郵件(執行此命令的用戶)

atq :查看計劃任務

atrm :刪除計劃任務

-c 工做號 :查看對應工做號的詳細信息

 

at時間格式

[HH:MM] [yyyy-mm-dd] (now + 2minutes)

寫完後用ctrl + d 結束並保存任務

 

crontab 循環計劃任務命令

crontab 循環計劃任務命令

按照預先設置好的時間週期,按期執行特殊動做(命令、腳本)

格式:

編輯:crontab -e :添加循環計劃任務

查看:crontab -l :查看已存在的計劃任務

刪除:crontab -r :刪除已存在的計劃任務

 

crontab時間格式

 

* :表示該範圍內的任意時間

,  :表示間隔的多個不連續時間點

- :表示一個連續的時間範圍

/ 指定間隔的時間頻率

 

例子

0  17  *  *  1-5 :週一到週五天天17:00

30  8  *  *  1,3,5 :每週1、3、五的8點30分

0  8-18/2  *  *  * 8點到18點之間每隔2小時

0  *  */3  *  * :每隔3天

Kdump:內核崩潰轉儲機制

kdump 是 Linux Kernel 崩潰時的轉儲機制,簡單理解就是在系統啓動過程當中若是 Kernel 由於某些緣由崩潰了,kdump 就會負責記錄日誌以便排查緣由。在 CentOS 6 等 Linux 發行版中,即使採用最小化安裝, kdump 也會做爲服務安裝到系統中

 

詳細請看:

https://www.ibm.com/developerworks/cn/linux/l-cn-kdump1/

 

*************************************

Linux日誌管理

 

Linux系統內核和許多程序會產生各類錯誤信息、警告信息和其餘的提示信息,這些信息對管理員瞭解系統的運行狀態是很是有用的,因此應該把它們寫到日誌文件中去。完成這個過程的程序就是syslog。syslog能夠根據日誌的類別和優先級將日誌保存到不一樣的文件中。例如,爲了方便查閱,能夠把內核信息與其餘信息分開,單獨保存到一個獨立的日誌文件中。默認配置下,日誌文件一般都保存在「/var/log」目錄下。

日誌管理

管理哪些日誌:

目的:根據產生的日誌類型,進行分析,日誌類型,日誌等級

將指定的日誌類型和日誌等級根據rsyslog.conf配置文件記錄的方式位置保存

系統:

系統類型:登陸,安全,郵件(系統用戶訪問),開機過程內核檢查

/var/log/:被rsyslog所管理

 

rpm和源安裝的第三方服務

記錄用戶訪問:/var/log/httpd/access_log

記錄服務器運行錯誤:/var/log/httpd/error_log

根據服務的配置文件

/etc/httpd/conf/httpd.conf(本身管理本身的日誌)

apache作好比

 

rpm:

/var/log/服務名/

源碼:

/PREFIX/logs/

 

如何收集到的日誌信息:

rsyslog的日誌管理服務(日子分析,分類存放)

/etc/rsyslog.conf(根據此配置文件的規則進行分類存放)

 

規則:

日誌的類型.等級 存放位置

日誌的類型.等級 存放位置

 

如何管理日誌

rsyslog

rsyslog.conf

 

客戶端:修改配置文件,修改日誌存放位置爲:@@192.168.88.20:514

服務端:修改配置文件,開啓TCP協議514端口,用於接收來自於客戶端的日誌

 

防止日誌文件過大

  1. 設置輪替規則:時間,大小,時間或大小

a) logro tate

b) logro tate.conf(規則配置文件)

  1. 全局規則

a) 週期,保留的備份數量,建立新的日誌文件

b) 是否要壓縮,修改文件的後綴

  1. 局部規則

a) 針對某些特定的日誌(wtm/btmp)

避免日誌文件過大:

輪替:

提早防止避免日誌文件過大

logrotate

/etc/logrotate.conf

weekly 每週對日誌進行依次輪替

rotate 保存日誌的數量

create 在輪替過程當中,自動建立新的文件

dateext 使用日期做爲日誌文件的後綴

compress 是否壓縮進行輪替的日誌

 

非系統服務:rpm | 源碼安裝的httpd

rotatelogs 的命令進行輪替

 

切割:

用於日誌文件過大時的解決方案

split

-b 按照指定大小切割

-l 按照指定行數切割

 

主機名修改

主機名修改:內核2.6.32前

臨時:hostname bj-xdl-y26(www.linuxlc.com)

永久:/etc/sysconfig/network

HOSTNAME=www.linuxlc.com

 

日誌相關服務

CentOS 6.X 之後日誌的管理服務從syslog 升級成爲了 rsyslog ,加強了部分功能。

基於TCP網絡協議傳輸日誌信息

更安全的網絡傳輸方式

有日誌消息的及時分析框架

後臺數據庫

配置文件能夠寫一些簡單的邏輯判斷

兼容syslog配置文件

 

 

 

 

 

 

 

 

 

 

 

 

 

 

常見的日誌文件

 

這些都是系統默認的日誌,以及存放位置,那麼除此以外咱們還有一些RPM或者源碼的軟件安裝產生的日誌。

 

那麼源碼的日誌則存放在了指定安裝的位置下。

 

rsyslog 服務

rsyslog 服務

日誌的格式:

只要是經過rsyslog記錄的日誌,格式是相同的,包含如下內容:

發生時間

服務器的主機名

服務名或者程序名

事件具體信息

rsyslog 配置文件:

/etc/rsyslog.conf

 

第一列爲日誌類型和日誌優先級的組合,每一個類型和優先級的組合稱爲一個選擇器;

後面一列爲保存日誌的文件、服務器,或輸出日誌的終端。syslog 進程根據選擇器決定如何操做日誌。

 

對配置文件的幾點說明:

日誌類型和優先級由點號(.)分開,例如 kern.debug 表示由內核產生的調試信息。

 

u kern.debug 的優先級大於 debug。

 

星號(*)表示全部,例如 *.debug 表示全部類型的調試信息, kern.*表示由內核產生的全部消息。

 

能夠使用逗號(,)分隔多個日誌類型,使用分號(;)分隔多個選擇器。

 

對日誌的操做包括:

將日誌輸出到文件,例如 /var/log/maillog 或 /dev/console。

將消息發送給用戶,多個用戶用逗號(,)分隔,例如 root, amrood。

經過管道將消息發送給用戶程序,注意程序要放在管道符(|)後面。

將消息發送給其餘主機上的 syslog 進程,這時 /etc/syslog.conf文件後面一列爲以@開頭的主機名(IP) 例:@192.168.88.30

 

rsyslog 識別的服務才能寫到配置文件中

 

 

鏈接符號:

日誌服務  [鏈接符號]  日誌等級 日誌記錄位置

 

「.」 :表明只要比後面的等級高的(包含該等級)日誌都記錄下來。好比:「cron.info」代 表cron服務產生的日誌,只要日誌等級大於等於info級別,就記錄

「.=」表明只記錄所需等級的日誌,其餘等級的都不記錄。好比:「*.=emerg」表明人和日誌服務產生的日誌,只要等級是emerg等級就記錄。這種用法及少見,瞭解就好

 

「.!」表明不等於,也就是除了該等級的日誌外,其餘等級的日誌都記錄。

 

日誌等級:

 

特殊等級:none 不記錄任何等級,至關於忽略該服務

 

日誌記錄位置:

日誌文件的絕對路徑。這是最多見的日誌保存方法,如「/var/log/secure」就是保存系統驗證和受權信息日誌的。

系統設備文件。如「/dev/lp0」表明第一臺打印機,若是日誌保存位置是打印機設備的話,當有日誌時就會在打印機打印(不太符合可持續發展戰略哦-_-!)。

轉發給遠程主機。由於能夠選擇使用TCP協議和UDP協議傳輸日誌信息,因此有兩種發送格式。如使用

 

「@192.168.0.210:514」,就會把日誌內容使用UDP協議發送到192.168.0.210的UDP 514端口上;若是使用

 

「@@192.168.0.210:514」就會把日誌內容使用TCP協議發送192.168.0.210的TCP 514端口上,其中514是日誌服務默認端口。固然只要192.168.0.210贊成接收此日誌,就能夠把日誌內容保存在日誌服務器上。

用戶名。如「root」,就會把日誌發送給root用戶,固然root要在在線,不然就收不到日誌信息了。發送日誌給用戶時,能夠使用「*」表明發送給全部在線用戶,如「mail.* *」就會把mail服務產生的全部級別的日誌發送給所

有在線用戶。若是須要把日誌發送給多個在線用戶,用戶名之間用「,」分隔。忽略或丟棄日誌。若是接受日誌的對象是「」,表明這個日誌不會記錄,而被直接丟棄。如「local3.* ~」表明忽略local3服務類型全部的日誌都不記錄。

 

自定義日誌記錄:

vi /etc/rsyslog.conf

*.crit /var/log/alert.log

將全部臨界點以上的錯誤都記錄到alert日誌中

修改完成,重啓rsyslog服務,檢查下有沒有生成文件。

 

 

日誌服務器搭建:

接收端:

配置文件:(有UDP和TCP)

 

取消後二行註釋,讓接受端口生效。

重啓服務,而後查看端口是否生成

發送端:

修改配置文件:

添加:

*.* @192.168.110.111:514

注意:能夠使用UDP 用一個@ ; 也能夠使用TCP 要用兩個@@

重啓服務,OK

測試:

在發送端,建立用戶,而後檢查接收端,查看日誌/var/log/secure

 

注意事項:都知道Linux不依靠主機名識別,可是日誌服務器須要根據主機 來識別,so。。。咱們若是一臺記錄多臺的日誌信息,須要修改主機名。

日誌輪替

主要目的防止單個日誌文件過大,按照咱們的規則對日誌進行相應處理

主要依賴/etc/logrotate.conf配置文件中的dateext參數實現日誌的處理。

主要參數解釋:

weekly 每週對日誌進行依次輪替

rotate 保存日誌的數量

create 在輪替過程當中,自動建立新的文件

dateext 使用日期做爲日誌文件的後綴

compress 是否壓縮進行輪替的日誌

 

 

 

系統自動按期進行日誌輪替的緣由:

/etc/cron.daily/ 有一個腳本,天天都會運行,查看是否有符合輪替的日誌,而後進行相應處理

 

咱們嘗試在rsyslog配置文件中添加本身的日誌記錄,而後而且強制執行輪替,看會不會產生輪替文件

1. 先在配置文件中寫入本身的日誌輪替規則(參照原文中的)

2. 強制執行日誌輪替(無論符不符合規定時間)

logrotate  –vf  /etc/logrotate.conf

 

 

 

 

 

 

 

 

 

 

 

 

*************************************

Linux備份管理

Linux中哪些數據須要備份?

1.Linux系統重要數據

v /root/目錄:/root目錄是管理員的家目錄,不少管理員會習慣於在這個目錄中保存一些相關數據,那麼當進行數據備份時,須要備份此目錄。

v /home/目錄:/home/目錄是普通用戶的家目錄,若是是生產服務器,這個目錄中也會保存大量的重要數據,應該備份。

v /var/spool/mail/目錄: 默認狀況下,全部的用戶未讀的郵件會保存在/var/spool/mail/目錄中和用戶名相同的郵箱文件中,已讀的郵件會保存在用戶家目錄中mbox文件中(mail命令默認是如此保存,不過若是使用了hold命令,那麼無論郵件是否已讀,都保存在/var/spool/mail/目錄中,能夠使用mbox命令恢復已讀郵件保存在「~/mbox」文件中)。通常狀況下,用戶的郵件也是須要備份的重要數據。

v /etc/目錄:系統重要的配置文件保存目錄,固然須要備份。

其餘目錄:更具你的系統的具體狀況,備份本身認爲的重要目錄。好比咱們的系統中有重要的日誌,或者安裝了RPM包的mysql服務器(RPM包安裝的mysql,數據庫保存在/var/lib/mysql/目錄中),那麼/var/目錄就須要備份。若是咱們服務器中安裝了多個操做系統,或編譯過新的內核,那麼/boot/目錄就須要備份。

 

2.安裝服務和軟件的數據

 

apache須要備份以下內容:

網頁存放路徑

配置文件。RPM包安裝的apache,須要備份/etc/httpd/conf/httpd.conf;源碼包安裝的apache則備份/usr/local/apache2/conf/httpd.conf。

網頁主目錄。RPM包安裝的apache,須要備份/var/www/html/目錄中全部數據;源碼包安裝的apache須要備份/usr/local/apache2/htdocs/目錄中全部數據。

日誌文件。RPM包安裝的apache,須要備份/var/log/httpd/目錄中全部日誌;源碼包安裝的apache須要備份/usr/local/apache2/logs/目錄中全部日誌。

 

mysql服務須要備份以下內容:

數據庫文件的保存位置

v mysql須要備份的內容就沒有apache多了,主要須要備份的就是數據庫內容。

源碼包安裝的mysql,數據庫安裝/usr/local/mysql/data/目錄中,只要備份此目錄便可

v RPM包安裝的mysql,數據庫默認安裝到了/var/lib/mysql/目錄中,若是須要備份則須要備份這個目錄。

ftp:服務

ftp: 用戶上傳文件的目錄

 

常見備份策略

完整備份

徹底備份就是指把全部須要備份的數據所有備份,固然徹底備份能夠備份整塊硬盤,整個分區或某個具體的目錄。徹底備份的好處是數據恢復方便,由於全部的數據都在同一個備份中,因此只要恢復徹底備份,全部的數據都會被恢復。若是徹底備份備份的是整塊硬盤,那麼甚至都不須要數據恢復,只要把備份硬盤安裝上,服務器就會恢復正常。但是徹底備份的缺點也很明顯,那就是須要備份的數據量較大,備份時間較長,佔用的空間較多,因此徹底備份不可能天天執行。

咱們通常會對關鍵服務器進行整盤徹底備份,若是出現問題,能夠很快的使用備份硬盤進行替換,從而減小損失。甚至會對關鍵服務器搭設一臺如出一轍的服務器,這樣只要遠程幾個命令(或使用shell腳本自動檢測,自動進行服務器替換),備份服務器就會接替本來的服務器,使咱們的故障響應時間縮短爲最短。

 

增量備份

徹底備份隨着數據量的加大,備份耗費的時間和佔用的空間會愈來愈多,因此徹底備份不會也不能天天進行。這時增量備份的做用就體現了出來。增量備份是指先進行一次徹底備份,服務器運行一段時間以後,比較當前系統和徹底備份的備份數據之間的差別,只備份有差別的數據而已。服務器繼續運行,再通過一段運行時間以後,進行第二次增量備份,第二次增量備份時,當前系統是和第一次增量備份的數據進行比較,也是隻備份有差別的數據。第三次增量備份是和第二次增量備份的數據

 

假設咱們第一天時,進行一次徹底備份。次日增量備份時,只會備份次日和第一天之間的差別數據,可是次日的總備份數據是徹底備份加第第一次增量備份的數據。第三天增量備份,只會備份第三天和次日之間的差別數據,第三天的總備份數據是徹底備份,加第一次增量備份的數據,再加第二次增量備份的數據。固然第四天增量備份時,只會備份第四天和第三天的差別數據,數據時徹底備份加第一次增量備份加第二次增量備份加第三次增量備份的數據。這種備份的好處是每次備份須要備份的數據較少,耗時較少,佔用的空間較少。壞處是數據恢復比較麻煩,若是是上圖的例子,那麼當數據恢復時,就要先恢復徹底備份的數據,再依次恢復第一次增量備份的數據,第二次增量備份的數據和第三次增量備份的數據,最終才能恢復全部的數據。

差別備份

差別備份相比較而言,既不要像徹底備份同樣把全部數據都進行備份,也不像增量備份數據恢復時那麼麻煩。只要先恢復徹底備份的數據,再恢復差別備份的數據便可。不過隨着時間的增長,和徹底備份相比,變更的數據愈來愈多,那麼差別備份也可能會變得數據龐大,備份緩慢,佔用空間較大。

備份策略:

地點:

同端備份:複製 恢復快、不安全

多端備份:移動硬盤、光盤、其餘機器 安全性較高

異地備份:不一樣地點(容災) 安全性很高

雲端備份:對象存儲空間 安全有隱患

時間:

時間交叉備份==高頻率備份

 

完整備份:服務器壓力較小的時間

備份類型

冷備份:徹底中止數據的更新,進行備份

溫備份:保證數據的正常讀取,但沒法寫入,進行備份

熱備份:保證數據正常讀取的同時,進行數據備份

 

壓縮:

1.空間小

   2.傳輸快

 

策略監控執行:

檢查備份策略是否執行

 

檢查備份的文件是否可用:

嘗試恢復備份

 

 

備份與恢復工具:dump restore

dump(備份)

dump 支持0-9十個備份級別,0指完整備份,1-9指增量備份

咱們備份一個數據時,第一次備份應該使用0級別,會把全部數據徹底備份一次。第二次備份時就能夠使用1級別了,它會和0級別比較,把0級別備份以後變化的數據進行備份。第三次備份時,使用2級別,2級別是和1級別比較,把1級別備份以後變化的數據進行備份,以此類推。須要注意的是,只有備份整個分區或整塊硬盤時,才能支持1-9的增量備份級別。而若是隻是備份某個文件或不是分區的目錄,則只能使用0級別進行徹底備份。

dump [選項] 備份以後的文件名 源文件名

例:dump -0uj -f /root/boot.bak.bz2 /boot

級別:

0-9十個備份級別

0 完整備份

1-9 增量1到增量9

-f 文件名 :指定備份後的文件名(.dump)

-u :備份文件系統時(分區),把備份時間記錄在

/etc/dumpdates中

備份時,記錄備份時間

-v :顯示詳細信息

-j :調用bzlib庫壓縮備份文件,(.bz2)壓縮等級2

備份時,進行壓縮(bz2)

-W :查看備份的最近時間

注:備份目錄時,則不能寫-u選項,不然沒法正常備份

備份分區:

df –h  查詢當前能進行備份的分區信息

 

dump -0uj -f /root/boot.bak.bz2 /boot

#第一次先進行完整備份,而且壓縮寫入備份時間

 

cat /etc/dumpdates

#查看備份時間

修改/boot/分區內的信息,進行第二次備份

dump -1uj -f /root/boot.bak1.bz2 /boot/

#進行第二次備份,使用1級別,即增量備份

 

dump -W

查詢系統內進行過dump備份的分區,以及級別和時間。

注意:目錄的備份只能使用完整備份,沒法使用增量備份。

 

restore(恢復)

restore [模式選擇] [選項]

例: restore -r -f *.dump.bz2 #徹底恢復

restore -i -f *.dump.bz2 #交互式部分恢復

模式:

-C :比較備份數據和實際數據的變化。若是實際數據中的現有數據發生了變化,這個選項可以檢測這個變化。可是若是實際數據新增了數據,這個選項是不能檢測到變化的。

對比現實中的目錄是否比備份時的數據減小了,若減小,則提示哪一個文件丟失了,但現實中增長的數據不會被檢查到

-r :還原模式,還原數據

-i :交互模式,通常進行恢復時文件選擇

add 文件名 :標記

delete 文件名 :取消標記

extract 僅恢復標記的文件

1 確認恢復

n 不重設恢復文件的  所屬和權限

quit 退出

-t :查看模式,查看備份文檔中的內容

-f :指定備份文件的名稱

 

比較備份數據和實際數據的區別,根據剛纔咱們的備份,進行對比

首先建立新的文件

touch /boot/a.txt

進行數據的比對

restore -C  -f /root/boot.bak.bz2

 

注意:這樣的比較沒法比較出新增的信息,只能比對出減小的和修改的。

 

查看模式:

restore –t –f /root/boot.bak.bz2

 

還原模式

首先建立恢復目錄,而後進行恢復

restore -r –f /root/boot.bak.bz2

第一次是恢復原始數據

restore -r –f /root/boot.bak1.bz2

第二次進行增量備份的恢復

 

命令

eject :彈出光驅

相關文章
相關標籤/搜索