Linux管理員手冊(1)--系統(tǒng)概述
本章概述Linux系統(tǒng)。首先描述操作系統(tǒng)提供的主要服務(wù)。然后說明實(shí)現(xiàn)這些服務(wù)的程序 with a considerable lack of detail。本章的目的是理解系統(tǒng)整體,以后再詳細(xì)說明每個(gè)部分。
一個(gè)操作系統(tǒng)的不同部分
一個(gè)UNIX操作系統(tǒng)包括一個(gè)核心程序kernel和一些系統(tǒng)程序system programs。還有一些做某件事情的應(yīng)用程序application programs。核心是操作系統(tǒng)的心臟 。它跟蹤磁盤上的文件,啟動程序并運(yùn)行它們,給不同的進(jìn)程分配內(nèi)存和其他資源,從網(wǎng)絡(luò)接收和向網(wǎng)絡(luò)發(fā)送包,等等。核心很少自己干活,但它提供工具,用這些工具可以建立所有服務(wù)。它還阻止任何人直接存取硬件,強(qiáng)制每個(gè)人使用它提供的工具。這樣,核心給每個(gè)用戶與其他用戶之間提供保護(hù)。核心提供的工具通過系統(tǒng)調(diào)用system calls使用;要了解關(guān)于這的更多的信息,看手冊頁第二節(jié)。
系統(tǒng)程序使用核心提供的工具實(shí)現(xiàn)操作系統(tǒng)要求的不同的服務(wù)。系統(tǒng)程序和所有其他程序運(yùn)行在核心之上,叫做用戶模式user mode。系統(tǒng)程序和應(yīng)用程序的區(qū)別是目的:應(yīng)用程序意圖完成一些有用的工作(或游戲),而系統(tǒng)程序則為系統(tǒng)工作而需要。字處理器是應(yīng)用;telnet 是系統(tǒng)程序。區(qū)別經(jīng)常有些模糊,也許,只是為了強(qiáng)制分類。
雖然編程語言不必是操作系統(tǒng)的一部分,操作系統(tǒng)也可以包括編譯器及其相關(guān)的庫(Linux下是gcc和C庫)。文檔、有時(shí)甚至游戲,可以是操作系統(tǒng)的一部分。傳統(tǒng)上,操作系統(tǒng)被定義為安裝磁帶或磁盤上的內(nèi)容;對于Linux就更不清楚,因?yàn)樗植荚谌澜绲腇TP站點(diǎn)上。
核心的重要部件
Linux核心包括幾個(gè)重要部分:進(jìn)程管理、存儲器管理、硬件設(shè)備驅(qū)動、文件系統(tǒng)驅(qū)動、網(wǎng)絡(luò)管理和其他不同的部分。圖2.1顯示了它們的一些。
可能核心最重要的部分(沒有它們什么也不能工作)是存儲器管理和進(jìn)程管理。存儲器管理負(fù)責(zé)分配進(jìn)程的存儲器區(qū)域和對換空間區(qū)域、核心的部件及buffer cache。進(jìn)程管理產(chǎn)生進(jìn)程,用切換處理器上的活動進(jìn)程來實(shí)現(xiàn)多任務(wù)。
在最低級,核心對它支持的每種硬件包含一個(gè)硬件設(shè)備驅(qū)動。因?yàn)槭澜缟洗嬖诖罅坎煌挠布?,硬件設(shè)備驅(qū)動的數(shù)量極大。有許多不同的硬件,因此軟件控制方法不同。但其相似性可能分類驅(qū)動,支持相似的操作;每類的每個(gè)成員有相同的與核心其他部分接口,但具體實(shí)現(xiàn)是不同的。例如,所有的硬盤驅(qū)動與核心其他部分接口相同,即他們都有初始化驅(qū)動器、讀N扇區(qū)、寫N扇區(qū)。
核心自己提供的有些軟件服務(wù)有類似的抽象屬性,因此可以抽象分類。例如,不同的網(wǎng)絡(luò)協(xié)議已經(jīng)被抽象為一個(gè)編程接口:BSD socket庫。另一個(gè)例子是虛擬文件系統(tǒng)virtual filesystem(VFS)層,它從文件系統(tǒng)操作實(shí)現(xiàn)中抽象出文件系統(tǒng)操作。每個(gè)文件系統(tǒng)類型提供了每個(gè)文件系統(tǒng)操作的實(shí)現(xiàn)。當(dāng)一些實(shí)體企圖使用一個(gè)文件系統(tǒng)時(shí),請求通過VFS送出,它將請求發(fā)送到適當(dāng)?shù)奈募到y(tǒng)驅(qū)動。
UNIX系統(tǒng)的主要服務(wù)
本節(jié)說明一些最重要的UNIX服務(wù),但不太詳細(xì)。以后的章節(jié)中將更詳細(xì)地說明。
init
UNIX系統(tǒng)里最重要的服務(wù)是由init 提供的。 init 是每個(gè)UNIX系統(tǒng)在核心引導(dǎo)最后啟動的第一個(gè)進(jìn)程。 init 啟動后,它做不同的啟動工作繼續(xù)引導(dǎo)過程(檢查和mount文件系統(tǒng)、啟動守侯程序等)
init 做的具體事情的列表依賴于用戶意愿; init 有多個(gè)啟動選擇。通常提供單用戶模式single user mode的概念,此時(shí)沒有用戶能登錄,root 在控制臺使用一個(gè)shell;通常的模式叫多用戶模式multiuser mode。一般說來這稱為運(yùn)行級run levels;單用戶和多用戶模式可以理解為2個(gè)運(yùn)行級,還可以有其他運(yùn)行級,例如,在控制臺上運(yùn)行X。
在普通操作中,init 確認(rèn)getty 正常運(yùn)行(允許用戶登錄),并收養(yǎng)孤兒進(jìn)程(父進(jìn)程已死的進(jìn)程;UNIX中,所有進(jìn)程 必須在一棵樹中,因此孤兒進(jìn)程必須收養(yǎng))。
當(dāng)系統(tǒng)關(guān)閉時(shí),init 負(fù)責(zé)殺死所有其他進(jìn)程,unmount所有文件系統(tǒng)并停止處理器,根據(jù)設(shè)置。
從終端登錄
從終端登錄(通過串行線)和控制臺(當(dāng)不運(yùn)行X時(shí))是由getty 程序提供的。 init 為每個(gè)允許登錄的終端啟動一個(gè)單獨(dú)的getty 實(shí)例 getty 讀用戶名并運(yùn)行l(wèi)ogin 程序,由它讀口令。如果用戶名和口令正確,login 就運(yùn)行shell。當(dāng)shell終止時(shí),即用戶注銷,或login 因用戶名和口令不對而終止時(shí), init 知道并啟動一個(gè)新的getty 實(shí)例。核心沒有登錄的概念,這都由系統(tǒng)程序處理。
Syslog
核心和許多系統(tǒng)程序會產(chǎn)生錯(cuò)誤、警告和其他信息。這些信息在以后能看經(jīng)常是很重要的,甚至很久以后,所以它們應(yīng)該被寫到一個(gè)文件。這個(gè)程序是syslog 。它能設(shè)置成根據(jù)輸出信息的程序或重要程度將信息排序到不同的文件。例如,核心信息經(jīng)常與其他信息分開,單獨(dú)定向到一個(gè)分離的文件,因?yàn)楹诵男畔⒔?jīng)常更重要且需要有規(guī)律地閱讀以確定問題。
定時(shí)執(zhí)行命令: cron 和at
用戶和系統(tǒng)管理員經(jīng)常需要定時(shí)運(yùn)行命令。例如,系統(tǒng)管理員可能想運(yùn)行一個(gè)程序從老文件中清除暫存文件的目錄 (/tmp 和/var/tmp ),以免磁盤滿,因?yàn)椴⒎撬谐绦蚨颊_地清除自己的暫存文件。
cron 服務(wù)是做這個(gè)的。每個(gè)用戶有個(gè)crontab ,在這里列出他要執(zhí)行的命令和想執(zhí)行的時(shí)間。 cron 守侯進(jìn)程負(fù)責(zé)在特定的時(shí)間啟動命令。
at 服務(wù)與cron 類似,但它只執(zhí)行一次:命令在給定的時(shí)間執(zhí)行,但不可自動重復(fù)。
圖形用戶接口GUI
UNIX和Linux不將用戶接口合在核心中,而是用用戶級程序?qū)崿F(xiàn)。用戶接口同時(shí)提供文本和圖形環(huán)境。
這樣的安排使系統(tǒng)更靈活,但有容易對每個(gè)程序?qū)崿F(xiàn)不同的用戶接口的缺點(diǎn),使系統(tǒng)較難學(xué)。
Linux使用的主要的圖形環(huán)境叫X Window系統(tǒng)(簡稱X)。 X也不實(shí)現(xiàn)用戶接口;它只實(shí)現(xiàn)一個(gè)窗口系統(tǒng),即可以實(shí)現(xiàn)圖形用戶接口的工具。 3種最流行的基于X實(shí)現(xiàn)的用戶接口風(fēng)格是Athena、Motif和Open Look。
網(wǎng)絡(luò)
網(wǎng)絡(luò)連接2臺或更多的計(jì)算機(jī)使之能互相通信。連接和通信的實(shí)際方法有些復(fù)雜,但結(jié)果非常有用。
UNIX操作系統(tǒng)具有許多網(wǎng)絡(luò)特征。最基本的服務(wù):文件系統(tǒng)、打印、備份等都可以通過網(wǎng)絡(luò)完成。這可使系統(tǒng)管理更簡單,因?yàn)樗试S集中管理,同時(shí)獲得小型機(jī)和分布計(jì)算的優(yōu)點(diǎn),例如降低成本和更好的容錯(cuò)能力。
然而,本書只概述網(wǎng)絡(luò);更多的信息請見《Linux網(wǎng)絡(luò)管理員指南》,包括一個(gè)網(wǎng)絡(luò)如何操作的基本說明。
網(wǎng)絡(luò)登錄
網(wǎng)絡(luò)登錄與普通登錄有一點(diǎn)不同。可以登錄的每個(gè)終端各有一條單獨(dú)的物理串行線。從網(wǎng)絡(luò)登錄的每個(gè)人,有一條單獨(dú)的虛擬網(wǎng)絡(luò)連接,并且可以有任意數(shù)量 。因此不可能為每個(gè)可能的虛擬連接運(yùn)行單獨(dú)的getty 。通過網(wǎng)絡(luò)登錄有若干不同的方法, telnet 和rlogin 是TCP/IP網(wǎng)絡(luò)中的主要方法。
網(wǎng)絡(luò)登錄為每種登錄方法提供一個(gè)單獨(dú)的守侯程序(telnet 和rlogin 使用不同的守侯程序),而不是使用一群getty ,來偵聽所有的輸入的登錄企圖。當(dāng)發(fā)現(xiàn)一個(gè)登錄企圖,就啟動一個(gè)自己的新實(shí)例來處理這個(gè)企圖;原來的實(shí)例繼續(xù)偵聽其他企圖。新實(shí)例的工作和getty 類似。
網(wǎng)絡(luò)文件系統(tǒng)
網(wǎng)絡(luò)服務(wù)的一個(gè)最有用的東西是通過網(wǎng)絡(luò)文件系統(tǒng)network file system共享文件。這個(gè)服務(wù)一般用Sun公司開發(fā)的網(wǎng)絡(luò)文件系統(tǒng)Network File System,或NFS。
通過網(wǎng)絡(luò)文件系統(tǒng),任何文件操作可以由一臺機(jī)器的一個(gè)程序通過網(wǎng)絡(luò)發(fā)送到其他任何機(jī)器。這愚弄了程序,使它以為其他機(jī)器上的所有文件是在程序運(yùn)行的機(jī)器上。這極大地簡化了信息共享,因?yàn)樗鼘Τ绦驘o須任何修改。
郵件
電子郵件通常是通過計(jì)算機(jī)通信的最重要的方法。一封電子信件用特定的格式存儲在一個(gè)文件中,使用特定的郵件程序來收發(fā)郵件。
每個(gè)用戶有一個(gè)收件箱incoming mailbox(一個(gè)特定格式的文件),所有新郵件存在這里。當(dāng)什么人發(fā)送郵件時(shí),郵件程序定位收件人的郵箱,并在郵箱文件中添加信件。如果收件人的郵箱在另一臺機(jī)器上,信件就被發(fā)送到那臺機(jī)器,由它用它覺得最合適的方法來投遞郵箱。
郵件系統(tǒng)包括很多程序。投遞郵件到本地或遠(yuǎn)程郵箱使用一個(gè)程序(mail transfer agent或MTA,例如,sendmail 或smail ),而用戶使用的則有很多不同的程序(mail user agent或MUA,例如pine 或elm )。郵箱一般存在/var/spool/mail 中。
打印
同時(shí)只能有一個(gè)人使用某一臺打印機(jī),但各用戶不共享打印機(jī)是不經(jīng)濟(jì)的。因此打印機(jī)由軟件來管理,實(shí)現(xiàn)一個(gè)打印隊(duì)列print queue:所有的打印任務(wù)放進(jìn)一個(gè)隊(duì)列,打印機(jī)完成一個(gè)任務(wù)后,自動再打印下一個(gè)。這無須用戶來組織打印隊(duì)列,回避了直接控制打印機(jī)。
打印隊(duì)列軟件也把打印輸出spools到磁盤,即,當(dāng)任務(wù)在隊(duì)列中時(shí),打印輸出存在一個(gè)文件中。這允許應(yīng)用程序快速地完成一個(gè)打印任務(wù)到打印隊(duì)列程序,應(yīng)用程序無須等到打印任務(wù)真正完成就可以繼續(xù)下去。這真的很方便,因?yàn)樗试S打印出一個(gè)版本,無須打印完成,就繼續(xù)修改一個(gè)新版本。
文件系統(tǒng)布局
文件系統(tǒng)分為許多部分,通常從根文件系統(tǒng)有: /bin , /lib , /etc , /dev , 及一些其他; /usr 文件系統(tǒng)包含程序和不改變的數(shù)據(jù); /var 文件系統(tǒng)包含改變的數(shù)據(jù)(例如log文件); /home 文件系統(tǒng)包含每個(gè)用戶的個(gè)人文件。依賴于硬件配置和系統(tǒng)管理員的決定,方法不同,甚至所有東西可能在一個(gè)文件系統(tǒng)中。
3章將更詳細(xì)地說明文件系統(tǒng)布局,Linux文件系統(tǒng)標(biāo)準(zhǔn)(Linux Filesystem Standard)中有更詳細(xì)的說明。
相關(guān)文章
ubuntu16.04登錄后無dash,無啟動欄launch,無menu bar只有桌面背景的快速解決辦法
今天打開電腦,與往常一樣輸入用戶名密碼登錄后,發(fā)現(xiàn)桌面上空空如也,啟動欄launch,menu bar什么的都消失了,桌面上文件可以打開,但是無法拖動位置,無法關(guān)閉,下面給大家分享ubuntu16.04登錄后無dash,無啟動欄launch,無menu bar只有桌面背景解決辦法2017-04-04如何在linux系統(tǒng)的host上安裝windows系統(tǒng)的guest
本文將介紹如何在Linux系統(tǒng)的host上安裝windows系統(tǒng)的guest,這里以win7-32系統(tǒng)為例進(jìn)行介紹,然后在文章底部給大家補(bǔ)充講解如何在Linux系統(tǒng)虛擬機(jī)中安裝Windows系統(tǒng),具體內(nèi)容詳情通過本文一起學(xué)習(xí)吧2017-03-03ubuntu 安裝linux 下vmVMware tools 步驟及問題解決方法
這篇文章主要介紹了ubuntu 安裝linux 下vmVMware tools 步驟及問題解決方法,本文圖文并茂給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-04-04linux學(xué)習(xí)筆記 linux目錄架構(gòu)
linux學(xué)習(xí)筆記 linux目錄架構(gòu)...2007-11-11Linux下搭建Spark 的 Python 編程環(huán)境的方法
這篇文章主要介紹了Linux下搭建Spark 的 Python 編程環(huán)境的方法,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-06-06