1 Linux操做系統簡介
Linux是一套無償使用和自由傳播的類Unix操做系統,是一個基於POSIX和UNIX的多用戶、多任務、支持多線程和多CPU的操做系統。它能運行主要的UNIX工具軟件、應用程序和網絡協議。它支持32位和64位硬件。Linux繼承了Unix以網絡爲核心的設計思想,是一個性能穩定的
多用戶網絡操做系統。
Linux具備以下優勢:
Ø 穩定、免費或者花費少
Ø 安全性高
Ø 多任務,多用戶
Ø 耗資源少
Ø 因爲內核小,因此它能夠支持多種電子產品,如:Android手機、PDA等。
隨着IT產業的不斷髮展,用戶對網站體驗要求也愈來愈高,而目
前主流網站後端承載系統都是Linux系統,目前Android手機所有基於Linux內核研發。企業大數據、雲存儲、虛擬化等先進技術都是基於Linux系統。
1.1 linux內核理解
咱們常常所使用的linux系統都是linux發行版,如CentOS、RedHat、Debian、Ubuntu等
linux內核與linux發行版的區別?
linux內核是linux操做系統的核心功能,是linux系統的整個基礎,是開源軟件。
linux發行版是指將linux內核和外圍應用程序和文檔打包,並提供系統安裝界面和系統配置、管理工具。
1. 什麼是操做系統?
操做系統是負責整個系統最基本功能和系統管理,包括內核、設備驅動程序、啓動引導程序、命令行shell或其它種類的用戶界面、基本的文件管理工具和系統工具。
用戶界面是操做系統的外在表象,內核是操做系統的內在覈心。
2. 什麼是內核?
內核由一系列程序組成,包括負責響應中斷的中斷服務程序、負責管理多個進程從而分享處理器時間的調度程序、負責管理地址空間的內存管理程序、網絡、進程間通訊的系統服務程序等。
內核負責管理系統的硬件設備。
3. 內核空間 VS 用戶空間
內核空間表示內核擁有的內存空間,用戶空間表示用戶程序執行時的內存空間。
內核擁有直接訪問硬件設備的全部權限,用戶程序不能直接訪問硬件設備,所以用戶程序經過系統調用和內核通訊來運行。
(Linux)內核是(Linux)操做系統的核心,通常包含五大部分:
進程管理、存儲管理、
文件管理、設備管理和網絡管理,是一組程序模塊,具備訪問硬件設備和全部主存空間的權限,是僅有的可以執行
特權指令的程序。主要功能是:資源抽象、資源分配、資源共享。(資源是指CPU、內存等。)在內核基礎上掛載第三方軟件便構成操做系統,Ubuntu、RedHat、Fedora、Debian等都是基於
Linux內核(版本號可能不一樣)的不一樣操做系統。
內核函數對用戶是徹底透明的,用戶想要調用內核函數只有兩種途徑:一是 應用程序→系統調用(程序接口)→操做系統;二是 操做命令→系統程序(做業接口)→操做系統。
內核是否是指的就是用shell控制的東西?
shell命令多是普通的應用程序,也多是庫函數或系統調用(你能夠理解爲內核函數)。
若是你想查看某命令是普通shell命令,仍是庫函數或系統調用,能夠在終端輸入「man 命令」查看。如man open,左上角應該是OPEN(2)。1 表示普通shell命令,2 表示系統調用,3 表示庫函數。
注:
庫函數事實上是內核函數的封裝,介於應用程序與內核函數之間。應用程序是不能直接訪問內核函數的,必須經過庫函數。這是一種保護內核函數的一種機制。
事實上不少時候咱們都要用到內核函數,只是咱們並不知道而已,如打開文件要調用open()、關閉文件要調用close()等等
1.2 shell理解
什麼是Shell?
shell是用戶和Linux(或者更準確的說,是用戶和Linux內核)之間的
接口程序。你在提示符下輸入的每一個命令都由shell先解釋而後傳給Linux內核。
shell 是一個命令語言解釋器(command-language interpreter),擁有本身內建的 shell 命令集。此外,shell也能被系統中其餘有效的Linux 實用程序和應用程序(utilities and application programs)所調用。
不論什麼時候你鍵入一個命令,它都被Linux shell所解釋。一些命令,好比打印當前工做目錄命令(pwd),是包含在Linux bash內部的(就象DOS的內部命令)。其餘命令,好比拷貝命令(cp)和移動命令(rm),是存在於文件系統中某個目錄下的單獨的程序。而對用戶來講,你不知道(或者可能不關心)一個命令是創建在shell內部仍是一個單獨的程序。
實際上Shell是一個命令解釋器,它解釋由用戶輸入的命令而且把它們送到內核。不只如此,Shell有本身的編程語言用於對命令的編輯,它容許用戶編寫由shell命令組成的程序。Shell編程語言具備普通編程語言的不少特色,好比它也有
循環結構和分支控制結構等,用這種編程語言編寫的
Shell程序與其餘應用程序具備一樣的效果。
同Linux自己同樣,Shell也有多種不一樣的版本。目前主要有下列版本的Shell:
BASH:是GNU的Bourne Again Shell,是GNU操做系統上默認的shell。
Korn Shell:是對Bourne SHell的發展,在大部份內容上與Bourne Shell兼容。
C Shell:是
SUN公司Shell的BSD版本。
2 Linux系統分區
在瞭解Linux系統以前,先來了解windows系統結構,windows系統通常是安裝在C盤系統盤,一樣Linux也有相似的系統盤(/根分區),
Linux一般分區爲(根分區/、swap分區),Linux系統以文件的存儲方式,
全部的文件都是存儲在某個目錄下的,相似於windows的文件夾。
對於文件系統的屬性來講,windows文件系統類型通常是ntfs、fat32等,而Linux文件系統類型則爲ext二、ext三、ext4等(文件系統:是操做系統用於明確磁盤或分區上的文件的方法和數據結構,文件系統由三部分組成:與文件管理有關軟件、被管理文件以及實施文件管理所需數據結構。)
安裝 Linux系統是每個初學者的第一個門檻。在這個過程當中間,最大的困惑莫過於給硬盤進行分區。雖然如今各類發行版本的 Linux 已經提供了友好的圖形交互界面,可是不少人仍是感受無從下手。這其中的緣由主要是不清楚 Linux 的分區規定。就比如若是咱們瞭解了windows分區的規則,系統盤C、數據盤D等,就很好分區了。
2.1 Linux磁盤分區詳解
首先咱們要對硬盤分區的基本概念進行一些初步的瞭解,
硬盤的分區主要分爲基本分區(primary partion)和擴充分區(extension partion)兩種,
基本分區和擴充分區的數目之和不能大於四個。且基本分區能夠立刻被使用但不能再分區。擴充分區必須再進行分區後才能使用,也就是說它必須還要進行二次分區。那麼由擴充分區再分下去的是什麼呢?它就是
邏輯分區(logical partion),何況邏輯分區沒有數量上限制。
對習慣於使用dos或windows的用戶來講,有幾個分區就有幾個驅動器,而且每一個分區都會得到一個字母標識符,而後就能夠選用這個字母來指定在這個分區上的文件和目錄,它們的文件結構都是獨立的,很是好理解。但對這些初上手 red hat linux的用戶,可就有點惱人了。由於對red hat linux用戶來講不管有幾個分區,分給哪一目錄使用,它歸根結底就只有一個根目錄,一個獨立且惟一的文件結構。red hat linux中每一個分區都是用來組成整個文件系統的一部分,由於它採用了一種叫「載入」的處理方法,它的整個文件系統中包含了一整套的文件和目錄,且將一個分區和一個目錄聯繫起來。這時要載入的一個分區將使它的存儲空間在一個目錄下得到。
對windows用戶來講,操做系統必須裝在同一分區裏,它是商業軟件! 因此你沒有選擇的餘地!對red hat linux來講,你有了較大的選擇餘地,你能夠把系統文件分幾個區來裝(必需要說明載入點),也能夠就裝在同一個分區中(載入點是「/」)。
1. 設備管理
在 Linux 中,每個硬件設備都映射到一個系統的文件,對於硬盤、光驅等 IDE 或 SCSI 設備也不例外。Linux 把各類
IDE 設備分配了一個由 hd 前綴組成的文件;而對於各類 SCSI 設備,則分配了一個由 sd 前綴組成的文件。( IDE的英文全稱爲「Integrated Drive Electronics」,即「電子集成驅動器」,是曾經主流的
硬盤接口, 也是光儲類設備的主要接口。小型計算機系統接口(英語:Small Computer System Interface; 簡寫:SCSI),一種用於計算機和智能設備之間(硬盤、軟驅、光驅、打印機、掃描儀等)系統級接口的獨立處理器標準。 SCSI是一種智能的通用接口標準。
IDE和SCSI其實就是硬盤的兩種接口。其中,IDE類型的硬盤主要用於我的PC電腦,而SCSI類型的硬盤主要用於服務器。)
對於IDE硬盤,驅動器標識符爲「
hdx~」,其中「hd」代表分區所在設備的類型,這裏是指IDE硬盤了。「x」爲盤號(a爲基本盤,b爲基本從屬盤,c爲輔助主盤,d爲輔助從屬盤),「~」表明分區,前四個分區用數字1到4表示,它們是主分區或擴展分區,從5開始就是邏輯分區。例,hda3表示爲第一個IDE硬盤上的第三個主分區或擴展分區,hdb2表示爲第二個IDE硬盤上的第二個主分區或擴展分區。對於SCSI硬盤則標識爲「
sdx~」,SCSI硬盤是用「sd」來表示分區所在設備的類型的,其他則和IDE硬盤的表示方法同樣,不在多說。
舉例,第一個 IDE 設備,Linux 就定義爲 hda;第二個 IDE 設備就定義爲 hdb;下面以此類推。而 SCSI 設備就應該是sda、sdb、sdc 等。例如,第一個 IDE 硬盤的第一個分區,在 Linux 下面映射的就是 hda1,第二個分區就稱做是 hda2。對於 SCSI 硬盤則是 sda一、sdb1 等。
2. 分區數量
Linux 下面每個硬盤總共最多有
16 個分區。要進行分區就必須針對每個硬件設備進行操做,這就有多是一塊IDE硬盤或是一塊SCSI硬盤。對於每個硬盤(IDE 或 SCSI)設備,Linux 分配了一個 1 到 16 的序列號碼,這就表明了這塊硬盤上面的分區號碼。Linux 規定了主分區(或者擴展分區)佔用 1 至 16 號碼中的前 4 個號碼。以第一個 IDE 硬盤爲例說明,主分區(或者擴展分區)佔用了 hda一、hda二、hda三、hda4,而邏輯分區佔用了 hda5 到 hda16 等 12 個號碼。
3. 各分區的做用
在 Linux 中規定,每個硬盤設備最多能有 4個主分區(其中包含擴展分區)構成,任何一個擴展分區都要佔用一個主分區號碼,也就是在一個硬盤中,主分區和擴展分區一共最可能是 4 個。
對於早期的 DOS 和 Windows(Windows 2000 之前的版本),系統只認可一個主分區,能夠經過在擴展分區上增長邏輯盤符(邏輯分區)的方法,進一步地細化分區。
主分區的做用就是計算機用來進行啓動操做系統的,所以每個操做系統的啓動,或者稱做是引導程序,都應該存放在主分區上。這就是主分區和擴展分區及邏輯分區的最大區別。
咱們在指定安裝引導 Linux 的 bootloader 的時候,都要指定在主分區上,就是最好的例證。
對於邏輯分區,Linux 規定它們必須創建在擴展分區上(在 DOS 和 Windows 系統上也是如此規定),而不是主分區上。
所以,咱們能夠看到擴展分區可以提供更加靈活的分區模式,但不能用來做爲 操做系統 的引導。 除去上面這些各類分區的差異,咱們就能夠簡單地把它們一視同仁了。
4. 經常使用分區
/boot分區,它包含了操做系統的內核和在啓動系統過程當中所要用到的文件,建這個 分區是有必要的,由於目前大多數的pc機要受到bios的限制,何況若是有了一個單獨的/boot啓動分區,即便主要的根分區出現了問題,計算機依然可以 啓動。這個分區的大小約在50mb—100mb之間。
/usr分區,是red hat linux系統存放軟件的地方,若有可能應將最大空間分給它。
/home分區,是用戶的home目錄所在地,這個分區的大小取決於有多少用戶。如 果是多用戶共同使用一臺電腦的話,這個分區是徹底有必要的,何況根用戶也能夠很好地控制普通用戶使用計算機,如對用戶或者用戶組實行硬盤限量使用,限制普通用戶訪問哪些文件等。其實單用戶也有創建這個分區的必要,由於沒這個分區的話,那麼你只能以根用戶的身份登錄系統,這樣作是危險的,由於根用戶對系統有絕對的使用權,可一旦你對系統進行了誤操做,麻煩也就來了。
/var/log分區,是系統日誌記錄分區,若是設立了這一單獨的分區,這樣即便系統的日誌文件出現了問題,它們也不會影響到操做系統的主分區。
/tmp分區,用來存放臨時文件。這對於多用戶系統或者網絡服務器來講是有必要的。 這樣即便程序運行時生成大量的臨時文件,或者用戶對系統進行了錯誤的操做,文件系統的其它部分仍然是安全的。由於文件系統的這一部分仍然還承受着讀寫操 做,因此它一般會比其它的部分更快地發生問題。
/bin分區,存放標準系統實用程序。
/dev分區,存放設備文件。
/opt分區,存放可選的安裝的軟件。
/sbin分區,存放標準系統管理文件。
/mnt目錄的做用:掛接光驅、USB設備的目錄,加載後,會在mnt裏多出相應設備的目錄。mount是將存儲設備變成文件來訪問的,linux全部的存儲設備都是映射成「文件」來訪問的,包括U盤,光驅,硬盤,磁帶。
/dev 和 /mnt的區別:
mount了才能讀取內容,而直接訪問/dev只能讀設備信息.比如看碟,你訪問dev至關於直接拿碟片用眼看最多你能看出來是個CD或DVD;但插到光驅裏讀就能看到電影了.
爲何一個設備已經被os識別在/dev下,爲啥不能之間訪問,而須要mount?要回答這個,首先咱們要知道,linux下有哪些文件類型。普通文件,目錄以外,還有什麼?首先就是以l開始的符號連接文件。還有用ll命令時,輸出的以c開始的和以b開始的文件,分別是字符設備文件和塊設備文件。還有比較少見的以s開始的套接字文件。既然linux都能識別這些文件,那還mount個毛線,直接訪問不就好了,可是事實就是須要mount,那mount到底幹了什麼?緣由在於,不少設備的數據組織和linux的文件系統並不同。無法直接讀取,你要看到文件目錄,你必須得按照必定的格式去解析設備裏的文件。這就是mount幹得事,它按照你指定的格式去讀取設備裏的數據。就是轉化爲linux本身的文件系統,這樣才能解析並讀取數據。
2.2 Linux目錄結構
經過前面的學習,咱們已經瞭解linux系統的磁盤分區,那接下來咱們熟悉一下Linux系統裏面的各個目錄文件夾的大體功能:
主要的目錄樹的有/、/root、/home、/usr、/bin等目錄。下面是一個典型的linux目錄結構以下:
/ 根目錄
/bin 存放必要的命令
/boot 存放內核以及啓動所需的文件
/dev 存放設備文件
/etc 存放系統配置文件
/home 普通用戶的宿主目錄,用戶數據存放在其主目錄中
/lib 存放必要的運行庫
/mnt 存放臨時的映射文件系統,一般用來掛載使用。
/proc 存放存儲進程和系統信息
/root 超級用戶的主目錄
/sbin 存放系統管理程序
/tmp 存放臨時文件
/usr 存放應用程序,命令程序文件、程序庫、手冊和其它文檔。
/var 系統默認日誌存放目錄
2.3 Linux用戶權限管理
在Linux操做系統中,root的權限是最高的,至關於windows的administrator,擁有最高權限,能執行任何命令和操做。在系統中,經過UID來區分用戶的權限級別,UID等於0,表示此用戶具備最高權限,也就是管理員。其餘的用戶UID依次增長,經過/etc/passwd用戶密碼文件能夠查看到每一個用戶的獨立的UID。
每個文件或者目錄的權限,都包含
一個用戶權限、一個組的權限、其餘人權限,例以下:
標紅第一個root表示該文件全部者是root用戶,第二個root表明該文件的所屬的組爲root組,其餘用戶這裏默認不標出。
[root@node1 ~]# ls -l monitor_log.sh
-rw-r--r-- 1 root root 91 May 7 20:21 monitor_log.sh
[root@node1 ~]#
若是咱們想改變某個文件的全部者或者所屬的組,可使用命令chown
chown –R test:test monitor_log.sh便可。
每一個Linux文件具備四種訪問權限:可讀(r)、可寫(w)、可執行(x)和無權限(-)。
利用ls -l命令能夠看到某個文件或目錄的權限,它以顯示數據的第一個字段爲
準。第一個字段由10個字符組成,以下:
[root@node1 ~]# ls -l monitor_log.sh
-rw-r--r-- 1 root root 91 May 7 20:21 monitor_log.sh
[root@node1 ~]#
第一位表示文件類型,-表示文件,d表示目錄;後面每三位爲一組。
第一組:2-4位表示文件全部者的權限,即用戶user權限,簡稱u
第二組:5-7位表示文件全部者所屬組成員的權限,group權限,簡稱g
第三組:8-10位表示全部者所屬組以外的用戶的權限,other權限,簡稱o
從上面這個文件,咱們能夠看出,monito_log.sh文件對應的權限爲:
root用戶具備讀和寫的權限,root組具備讀的權限,其餘人具備讀的權限。
爲了能更簡單快捷的使用和熟悉權限,rwx權限能夠用數字來表示,分別表示爲
r(4)、w(2)、x(1)。Monitor_log.sh權限能夠表示爲:644
改變權限的命令,chmod 改變文件或目錄的權限
chmod 755 abc:賦予abc權限rwxr-xr-x
chmod u=rwx,g=rx,o=rx abc:同上u=用戶權限,g=組權限,o=不一樣組其餘用戶權限
chmod u-x,g+w abc:給abc去除用戶執行的權限,增長組寫的權限
chmod a+r abc:給全部用戶添加讀的權限
chmod +x a.txt