天天看點

Linux詳細教程

    前言

    linux是在1991年發展起來的與unix相容的作業系統,可以免費使用,它的源代碼可以自由傳播且可任人修改、充實、發展,開發者的初衷是要共同創造一個完美、理想并可以免費使用的作業系統。

    我們并不能使同學們通過這次系列講座成為一個unix類作業系統的高手,這次系列講座的目的就是在同學們中間普及linux基礎知識,為今後我們更加接近的了解linux做一個好的開端。

    第一講 linux基礎

    在這一講中,我們主要是了解一下linux的概況,以及對linux有一個初步的感性認識。

    一.什麼是linux?

    linux是一個以intel系列cpu(cyrix,amd的cpu也可以)為硬體平台,完全免費的unix相容系統,完全适用于個人的pc。它本身就是一個完整的32位的多使用者多任務作業系統,是以不需要先安裝dos或其他的作業系統(ms windows, os2, minix..)就可以進行直接的安裝。linux的最早起源是在1991年10月5日由一位芬蘭的大學生linux torvalds ([email][email protected][/email])寫了linux核心程式的0.02版開始的,但其後的發展卻幾乎都是由網際網路上的linux社團(linux community)互通交流而完成的。linux不屬于任何一家公司或個人,任何人都可以免費取得甚至修改它的源代碼(source code)。linux上的大部分軟體都是由gnu倡導發展起來的,是以軟體通常都會在附着gnu public license(gpl)的情況下被自由傳播。gpl是一種可以使你免費獲得自由軟體的許可證,是以linux使用者的使用活動基本不受限制(隻要你不将它用于商業目的),而不必像使用微軟産品是那樣,需要為購滿許可證付出高價還要受到系統安裝數量的限制。我在講義的最後面附有gpl的非官方中文譯稿。目前linux中國的發行版本(linux distribution)主要有red hat(紅帽子), slackware, caldera, debian, red flag(紅旗), blue point(藍點), xteam linux(沖浪), happy linux(幸福linux), xlinux等若幹種,我推薦同學們使用的發行版本是red hat(事實标準)和xlinux(安裝最容易)。

    二.安裝linux的好處?

    linux的核心具有windows無法比拟的穩定性和高效率,在不使用x windows的情況下,它占用系統資源較少,可以使一台intel486搖身一變成為高效工作站。對于想要學習unix的使用者來說,使他們熟悉unix操作環境,通往"骨灰級"高手境界的一大捷徑。最重要的是,linux上有公認的c語言世界最好的編譯器gcc,如果你想得到一個效率更高的開發環境(并不一定是最友好的,但一定是最強大的),我建議你一定要好好的熟悉一下linux。

    三.如何得到linux?

    據我所知,大多數的linux發行版本(linux distribution)和核心(kernel)都是可以從網上下載下傳的,但是我不推薦易用這種方法得到linux,因為僅僅核心就有幾十個mbit的資料量,而一個完整的發行版本大概都是1gbit左右的資料量,你自己可以估計一下得用多少時間來下載下傳它們?我建議你最好去軟體商店買CD光牒來,因為linux的産品CD光牒是非常便宜的,連帶許可證gpl在内你大概支付50元人民币就可以,而具有同樣功能的windows nt 4.0你至少得付出17000元人民币(有一點需要聲明:在你購買CD光牒時gpl許可證你是不會肉眼看到的)。直接到商店去買,可以省去你很多麻煩,因為從網上下載下傳的linux有很多它還是要求你有CD光牒刻錄工具将安裝檔案刻到CD光牒上。

    四.如何得到linux的最新消息?

    關于linux的站點現在到處都是,我這裡向大家推薦的是一個關于linux核心最新消息的一個網站,你可以得到核心(kernel)發展情況的最新資訊。網址如下:[url]http://www.kernel.org[/url]另外還有一個非常著名的讨論組,你也可以去看看:[url]http://www.linuxforum.net[/url]另外還有一個我常去的讨論組,這個讨論組是有高手專門維護的,而且回應貼子的速度很快:[url]http://www.coventive.com.cn/club/default.htm[/url]在我這份講義快寫完的時候,又有一個非常好的自由軟體團體出現了,那就是aka,大家可以到他們的網頁上去看看,裡面有許多很實用的資訊:[url]http://www.aka.org.cn[/url]

    五.linux作業系統上有什麼應用?

    linux上有豐富的的應用軟體,在這裡我給大家做一個簡單的介紹,具體它們是什麼樣子我會在講座上為大家一一示範。

    文本處理方面(控制台界面,x window界面在後面介紹)

    l vi 最令unix類作業系統初學者裹足不前的editor,然而隻要你習慣于操作,你會覺得它比任何的editor都好用,且功能強大。

    l pico 一種風格很像microsoft dos的edit的一種文本編輯器。

    中文化方面

    xcin+crxvt 預設的linux系統是不支援顯示中文的,雖然現在國内湧現出許多著名的linux漢化廠商,但是一些著名的linux distribution如red hat、debian、caldera仍然不支援中文的輸入和輸出。這套漢化工具組合在控制台(console)方式和x window方式下都可以顯示和輸入漢字資訊。

    l cxterm 可以很容易的自行設定輸入法,或者修改現有的輸入法表格。

    視窗界面(window manager)方面

    l kde 這是x window system使用率最高的window manager。

    l fvwm 公認的最為好用的window manager之一。

    l fvwm95 擁有和microsoft win95 同樣界面的window manager。

    l afterstep 公認的最好看的window manager,但号記憶體也很大。

    l enlightenment 界面最華麗的window manager, win95和它相比簡直就是nothing,但是号記憶體太大,有點華而不實。

    l icewin 又一個極富個性的window manager。

    視窗應用軟體方面

    l www browser netscape公司的navigator3.x和communicator4.x版可用,使用方法和ms windows上一樣。

    l 圖像處理 gimp是類似于photoshop的繪圖軟體,号稱是linux上最強的繪圖軟體。

    l 看圖工具

    l mtv 這是一個可以播放vcd的軟體,但是它是共享軟體(shareware),不是免費軟體,我們也得不到它的源代碼。

    l star office 這是一套著名的辦公軟體,我個人認為它無論在界面上還是在功能上都強于microsoft office産品。唯一的缺憾是他不支援漢字,無論gb還是big5。

    l word perfect 這是一個非常精彩的字處理軟體,功能類似于microsoft word。

    l 文傑字處理系統 這是一套由南韓人開發的字處理系統,功能強大,有專門的中文版推出,類似于microsoft word。

    編譯環境

    l gcc 公認的c語言世界中功能最為強大的編譯器,但是界面不是很友好。

    l 除此之外還有fortran、pascal、gnu make、gnu debugger、gnu lisp、gnu perl、tcl。

    這裡因為本人對這些編譯工具都不熟悉,是以不多介紹。

    ms windows的模拟環境

    l wine 可以使絕大多數的16位ms window程式運作在這個模拟環境中。但是不支援32位的程式。

    六.在那裡可以找到讨論區?

    大家最熟悉的是北郵的bbs: 202.204.7.235 port:23

    七.安裝過程

    這是非常重要的一部分,希望大家仔細了解本部分内容。

    就我個人認為,對于初學者來說,linux的安裝過程是相當難的,新手往往會遇到系統屢裝不成的情況。遇到這種事情,是非常痛苦的,但是幾乎每個新手又都會遇到,是以我覺得安裝過程應當仔細的說明一下。但是由于篇幅有限,我不見這個這個問題在講義的正文中陳述,而是把它放在附文2中仔細說明。希望沒有安裝過linux的同學們将這篇文章看一看。我想在上課的時候我會給大家示範一遍安裝的過程。

    第二講 linux基礎進階

    經過上一節課的探讨,我想同學們應該對linux有了一個初步的感性認識,但我們的認識還隻是處在一個尚需進步的表層上。通過這一節的學習,同學們會對linux的體系結構,它的基本操作,基本功能有一個更進一步的認識。

    一.linux的檔案系統結構

     linux的檔案系統和ms-windows的檔案系統有很大的不同,對于微軟視窗系統的檔案結構我在這裡不再多說,我們主要了結一下linux的檔案系統結構. linux隻有一個檔案樹,整個檔案系統是以一個樹根"/"為起點的,所有的檔案和外部裝置都以檔案的形式挂結在這個檔案樹上,包括硬碟,軟碟,光驅,數據機等,這和以"驅動器盤符為基礎的ms-windows系統是大不相同的.linux的檔案結構展現了這個作業系統簡潔清析的設,常我們能夠接觸到的linux發行版本的根目錄大都是以下結構:

     /bin /etc /lost+found /sbin /var /boot /root

     /home /mnt /tmp /dev /lib /proc /usr

     現在我将這些目錄給大家做一個簡要的介紹:

    l /bin和/sbin

     使用和維護unix和linux系統的大部分基本程式都包含在/bin和/sbin裡,這兩個目錄的名氣之是以包含bin,是因為可執行的程式都是二進制檔案(binary files).

     /bin目錄通常用來存放使用者最常用的基本程式,如:

     login

     shells

     檔案操作實用程式

     系統實用程式

     壓縮工具

     /sbin目錄通常存放基本的系統和系統維護程式,如:

     fsck fdisk mkfs shutdown lilo init

     存放在這兩個目錄中的程式的主要差別是:/sbin中的程式隻能由root(管理者)來執行.

    l /etc

     這個目錄一般用來存放程式所需的整個檔案系統的配置檔案,其中的一些重要檔案如下:

     passwd shadow fstab hosts motd profile shells services

    lilo.conf

    l /lost+found

    這個目錄專門是用來放那些在系統非正常菪機後重新啟動系統時,不知道改網哪裡恢複的"流浪"檔案的。

    l /boot

    這個目錄下面存放着和系統啟動有關系的各種檔案,包括系統的引導程式和系統核心部分。

    l /root

    這是系統管理者(root)的主目錄。

    l /home

     系統中所有使用者的主目錄都存放在/home中,它包含實際使用者(人)的主目錄和其他使用者的主目錄.linux同unix的不同之處是,linux的root使用者的主目錄通常是在/root或/home/root,而unix通常是在/。

    l /mnt

     按照約定,像cd-rom,軟碟,zip盤,或者jaz這樣的可以動媒體都應該安裝在/mnt目錄下,/mnt目錄通常包含一些子目錄,每個子目錄是某種特定裝置類型的一個安裝點。例如:

     /cdrom /floppy /zip /win ....

     如果我們要使用這些特定裝置,我們需要用mount指令從/dev目錄中将外部裝置挂接過來。在這裡大家可能看到了有一個win的目錄,這是我的機子上面做的一個通向windows檔案系統的挂接點,這樣我通過通路這個目錄就可以通路到我在windows下面的檔案了。但如果你的windows檔案系統是ntfs格式,那麼這個辦法就不行了。

    l /tmp和/var

     這兩個目錄用來存放臨時檔案和經常變動的檔案。

    l /dev

     這是一個非常重要的目錄,它存放着各種外部裝置的鏡像檔案,其中有一些内容我們是要牢牢記住的。例如第一個軟碟驅動器的名字是fd0;第一個硬碟的名字是hda,硬碟中的第一個分區是hda1,第二個分區是hda2;第一個CD光牒驅動器的名字是hdc;此外,還用modem和其他外設的名字,在這麼多的名字中,我們隻需要記住最最常用的那幾個外設就可以了。

    l /usr

    按照約定,這個目錄用來存放與系統的使用者直接相關的程式或檔案,這裡面有每一個系統使用者的主目錄,就是相對于他們的小型"/"。

    l /proc

    這個目錄下面的内容是目前在系統中運作的程序的虛拟鏡像,我們在這裡可以看到由目前運作的程序号組成的一些目錄,還有一個記錄目前記憶體内容的kernel檔案。

     就個人經驗,我認為這些目錄以及在它們下面應該存儲什麼内容,我們都應當很熟練的記下來,這對于我們進一步的使用系統是很有幫助的。

    二.linux的檔案類型

     本來我是想把基本操作指令放在這裡介紹一下,但是這些指令中又不少是涉及到檔案類型的,是以我就隻好先介紹一下檔案類型了。

     linux的檔案類型大緻可分為五類,而且它支援長檔案名,不論是檔案還是目錄名,最長可以達到256個位元組。如果你能夠用128個漢字寫一片小作文,那你也可以用它來做某個檔案的檔案名(當然這裡面不能有不合規定的命名字元存在)。

    1. 一般性檔案

     一般性檔案,例如純文字檔案mtv-0.0b4.readme,設定檔案lilo.conf,記錄檔案ftp.log等等都是。一般類型的檔案在控制台的顯示下都沒有顔色,系統預設的是白色。

    2. 目錄

     至于目錄是什麼意思我就不解釋了,我的任務是要告訴大家,你可以用cd+目錄名進入到這個目錄中去,而這個目錄在控制台下顯示的顔色是藍色的,非常容易辨認。如果你用ls -l來觀看它們,會發現它們的檔案屬性(共10個字元)的一個字元是d,這表明它是一個目錄,而不是其它的東西。

    三.linux基本操作指令

     首先介紹一個名詞"控制台(console)",它就是我們通常見到的使用字元操作界面的人機接口,例如dos。我們說控制台指令,就是指通過字元界面輸入的可以作業系統的指令,例如dos指令就是控制台指令。我們現在要了解的是基于linux作業系統的基本控制台指令。

    有一點一定要注意,和dos指令不同的是,linux的指令(也包括檔案名等等)對大小寫是敏感的,也就是說,如果你輸入的指令大小寫不對的話,系統是不會做出你期望的響應的。

    l ls

     這個指令就相當于dos下的dir指令一樣,肯定是我第一個就要介紹的,這也是linux控制台指令中最為重要幾個指令之一。ls最常用的參數有三個: -a -l -f。

     ls -a

     linux上的檔案以.開頭的檔案被系統視為隐藏檔案,僅用ls指令是看不到他們的,而用ls -a除了顯示 一般檔案名外,連隐藏檔案也會顯示出來。

     ls -l(這個參數是字母l的小寫,不是數字1)

     這個指令可以使用長格式顯示檔案内容,如果需要察看更詳細的檔案資料,就要用到ls -l這個指令。例如我在某個目錄下鍵入ls -l可能會顯示如下資訊(最上面兩行是我自己加的):

     位置1 2 3 4 5 6 7

     檔案屬性 檔案數 擁有者 所屬的group 檔案大小 建檔日期 檔案名

     drwx------ 2 guest users 1024 nov 21 21:05 mail

     -rwx--x--x 1 root root 89080 nov 7 22:41 tar*

     -rwxr-xr-x 1 root bin 5013 aug 15 9:32 uname*

     lrwxrwxrwx 1 root root 4 nov 24 19:30 zcat->gzip

     -rwxr-xr-x 1 root bin 308364 nov 29 7:43 zsh*

    -rwsr-x--- 1 root bin 9853 aug 15 5:46 su*

     下面,我為大家解釋一下這些顯示内容的意義。

     第一個欄位,表示檔案的屬性。

     linux的檔案基本上分為三個屬性:可讀(r),可寫(w),可執行(x)。但是這裡有十個格子可以添(具體程式實作時,實際上是十個bit位)。第一個小格是特殊表示格,表示目錄或連結檔案等等,d表示目錄,例如drwx------;l表示連結檔案,如lrwxrwxrwx;如果是以一橫"-"表示,則表示這是檔案。其餘剩下的格子就以每3格為一個機關。因為linux是多使用者多任務系統,是以一個檔案可能同時被許多人使用,是以我們一定要設好每個檔案的權限,其檔案的權限位置排列順序是(以-rwxr-xr-x為例):

     rwx(owner)r-x(group)r-x(other)

    這個例子表示的權限是:使用者自己可讀,可寫,可執行;同一組的使用者可讀,不可寫,可執行;其它使用者可讀,不可寫,可執行。另外,有一些程式屬性的執行部分不是x,而是s,這表示執行這個程式的使用者,臨時可以有和擁有者一樣權力的身份來執行該程式。一般出現在系統管理之類的指令或程式,讓使用者執行時,擁有root身份。

    第二個欄位,表示檔案個數。

    如果是檔案的話,那這個數目自然是1了,如果是目錄的話,那它的數目就是該目錄中的檔案個數了。

    第三個欄位,表示該檔案或目錄的擁有者。

    若使用者目前處于自己的home,那這一欄大概都是它的賬号名稱。

    第四個欄位,表示所屬的組(group)。

    每一個使用者都可以擁有一個以上的組,不過大部分的使用者應該都隻屬于一個組,隻有當系統管理者希望給予某使用者特殊權限時,才可能會給他另一個組。

    第五欄位,表示檔案大小。

    檔案大小用byte來表示,而空目錄一般都是1024byte,你當然可以用其它參數使檔案顯示的機關不同,如使用ls -k就是用kb萊顯示一個檔案的大小機關,不過一般我們還是以byte為主。

    第六個欄位,表示建立日期。

    以"月,日,時間"的格式表示,如aug 15 5:46表示8月15日早上5:46分。

    第七個欄位,表示檔案名。

    我們可以用ls -a顯示隐藏的檔案名。

    ls -f(注意,是大寫的f)

    使用這個參數表示在檔案的後面多添加表示檔案類型的符号,例如*表示可執行,/表示目錄,@表示連結檔案,這都是因為使用了-f這個參數。但是現在基本上所有的linux發行版本的ls都已經内建了-f參數,也就是說,不用輸入這個參數,我們也能看到各種分辨符号。

    l cd指令

    這個指令是用來進出目錄的,它的使用方法和在dos下沒什麼兩樣,是以我覺得沒什麼可說的,但有兩點我補充一下。

    首先,和dos不同的是linux的目錄對大小寫是敏感的,如果大小寫沒拼對,你的cd操作是成功不了的。

    其次,cd如果直接輸入,cd後面不加任何東西,會回到使用者自己的home directory。假設如果是root,那就是回到/root.這個功能同cd ~是一樣的。

    l mkdir,rmdir指令

    mkdir指令用來建立新的目錄,rmdir用來删除以建立的目錄,這兩個指令的功能不再多加介紹,他們同dos下的md,rd功能和用法都是基本一樣的。

    l cp指令

    這個指令相當于dos下面的copy指令,具體用法是:

    cp -r 源檔案(source) 目的檔案(target)

    參數r是指連同元檔案中的子目錄一同拷貝。熟悉dos的讀者用起這個指令來會覺得更友善,畢竟比在dos下面要少敲兩下鍵盤。

    l rm指令

    這個指令是用來删除檔案的,和dos下面的rm(删除一個空目錄)是有差別的,大家千萬要注意。rm指令常用的參數有三個: -i,-r,-f。

    比如我現在要删除一個名字為text的一個檔案:

    rm -i test

    系統會詢問我們:"rm:remove 'test'?y",敲了回車以後,這個檔案才會真的被删除。之是以要這樣做,是因為linux不象dos那樣有undelete的指令,或者是可以用pctool等工具将删除過的檔案救回來,linux中删除過的檔案是救不回來的,是以使用這個參數在删除前讓你再确定一遍,是很有必要的。

    rm -r 目錄名

    這個操作可以連同這個目錄下面的子目錄都删除,功能上和rmdir相似。

    rm -f 檔案名(目錄名)

    這個操作可以進行強制删除。

    l mv指令

    這個指令的功能是移動目錄或檔案,引申的功能是給目錄或檔案重命名。它的用法同dos下面的move基本相同,這裡不再多講。當使用該指令來移動目錄時,他會連同該目錄下面的子目錄也一同移走。另外因為linux下面沒有rename的指令,是以如果你想給一個檔案或目錄重命名時可以用以下方法:

    mv 原檔案(目錄)名 新的檔案(目錄)名

    l du,df指令

    du指令可以顯示目前的目錄所占的磁盤空間,df指令可以顯示目前磁盤剩餘的磁盤空間。

    如果du指令不加任何參數,那麼傳回的是整個磁盤的使用情況,如果後面加了目錄的話,就是這個目錄在磁盤上的使用情況(這個功能可是dos沒有的呦)。不過我一般不喜歡用du,因為它給出的資訊是在是太多了,我看不過來,而df這個指令我是最常用的,因為磁盤上還剩多少空間對我來說是很重要的。

    l cat指令

    這個指令是linux中非常重要的一個指令,它的功能是顯示或連結一般的ascii文本檔案。cat是concatenate的簡寫,類似于dos下面的type指令。它的用法如下:

    cat text 顯示text這個檔案

    cat file1 file2 依順序顯示file1,file2的内容

    cat file1 file2>file3 把file1,file2的内容結合起來,再"重定向(>)"到file3檔案中。

    "〉"是一個非常有趣的符号,是往右重定向的意思,就是把左邊的結果當成是輸入,然後輸入到file3這個檔案中。這裡要注意一點是file3是在重定向以前還未存在的檔案,如果file3是已經存在的檔案,那麼它本身的内容被覆寫,而變成file1+file2的内容。

    如果〉左邊沒有檔案的名稱,而右邊有檔案名,例如:

     cat >file1

    結果是會"空出一行空白行",等待你輸入文字,輸入完畢後再按[ctrl]+[c]或[ctrl]+[d],就會結束編輯,并産生file1這個檔案,而file1的内容就是你剛剛輸入的内容。這個過程和dos裡面的copy con file1的結果是一樣的。

    另外,如果你使用如下的指令:

     cat file1>>file2

    這将變成将file1的檔案内容"附加"到file2的檔案後面,而file2的内容依然存在,這種重定向符〉〉比〉常用,可以多多利用。

    l more,less指令

    這是兩個顯示一般文本檔案的指令。

    如果一個文本檔案太長了超過一個螢幕的畫面,用cat來看實在是不理想,就可以試試more和less兩個指令。more指令可以使超過一頁的檔案臨時停留在螢幕,等你按任何的一個鍵以後,才繼續顯示。而less除了有more的功能以外,還可以用方向鍵往上或網下的滾動檔案,是以你随意浏覽,閱讀文章時,less是個非常好的選擇。

    l clear指令

    這個指令是用來清除螢幕的,它不需要任何參數,和dos下面的clr具有相同的功能,如果你覺得螢幕太紊亂,就可以使用它清除螢幕上的資訊。

    l pwd指令

    這個指令的作用是顯示使用者目前的工作路徑,這個指令不用多說,大家一試即知。

    l ln指令

    這是linux中又一個非常重要指令,請大家一定要熟悉。它的功能是為某一個檔案在另外一個位置建立一個同不的連結,這個指令最常用的參數是-s,具體用法是:

     ln -s 源檔案 目标檔案

    當我們需要在不同的目錄,用到相同的檔案時,我們不需要在每一個需要的目錄下都放一個必須相同的檔案,我們隻要在某個固定的目錄,放上該檔案,然後在其它的目錄下用ln指令連結(link)它就可以,不必重複的占用磁盤空間。例如:

     ln -s /bin/less /usr/local/bin/less

     -s 是代号(symbolic)的意思。

    這裡有兩點要注意:第一,ln指令會保持每一處連結檔案的同步性,也就是說,不論你改動了哪一處,其它的檔案都會發生相同的變化;第二,ln的連結又軟連結和硬連結兩種,軟連結就是ln -s ** **,它隻會在你標明的位置上生成一個檔案的鏡像,不會占用磁盤空間,硬連結ln ** **,沒有參數-s, 它會在你標明的位置上生成一個和源檔案大小相同的檔案,無論是軟連結還是硬連結,檔案都保持同步變化。

    如果你用ls察看一個目錄時,發現有的檔案後面有一個@的符号,那就是一個用ln指令生成的檔案,用ls -l指令去察看,就可以看到顯示的link的路徑了。

    l man指令

    如果你的英文足夠好,那完全可以不靠任何人就精通linux,隻要你會用man。man實際上就是察看指令用法的help,學習任何一種unix類的作業系統最重要的就是學會使用man這個輔助指令。man是manual(手冊)的縮寫字,它的說明非常的詳細,但是因為它都是英文,看起來非常的頭痛。建議大家需要的時候再去看man,平常嗎,記得一些基本用法就可以了。

    l logout指令

    一看就知道了,這是退出系統的指令,我就不多說了。要強調的一點是,linux是多使用者多程序的作業系統,是以如果你不用了,退出系統就可以了,關閉系統你就不用操心了,那是系統管理者的事情。但有一點切記,即便你是單機使用linux,logout以後也不能直接關機,因為這不是關機的指令。

    四.基本的系統管理指令

    系統管理基本上可以分為兩種,一種是root(系統管理者)對linux的系統管理部分,root本身的職責就是負責整個linux系統的運作穩定,增加系統安全性,校驗使用者的身份,新增使用者或删除惡意的使用者,并明确每一個在機器上的使用者權限等等。另一種就是每一個使用者(包括root)對自己檔案的權限管理。因為linux是多使用者多任務系統,每一個使用者都有可能将其工作的内容或是一些機密性的檔案放在linux工作站上,是以對每個檔案或是目錄的歸屬和使用權,都要有非常明确的規定。下面我就按管理者和一般使用者分類來介紹基本的系統管理指令。

    1. 管理者使用的系統管理指令

    l adduser指令

    新增使用者賬号的指令,如果你想新增一個叫做jack的使用者,那麼需在控制台下輸入:

    adduser jack

    這樣就增加了一個名字為jazk的使用者,要注意這裡對大小寫是敏感的。另外,新增的使用者是沒有密碼的,你還應當為使用者設定密碼或者是吩咐使用者在第一次登入系統的時候為自己設定密碼。

    l passwd指令

    這個指令可以修改特定使用者的密碼,使用格式是:

    passwd 使用者名

    這是,系統會提示你輸入新密碼,你輸入第一遍後,還要輸入第二遍進行确認。輸入兩遍相同的密碼之後,系統就接受了新的密碼。如果這個指令是一般使用者來使用的話,那就隻能改變它自己的密碼。

    l find,whereis,locate指令

    這三個指令都是用來查找檔案的,使用格式是:

    find 路徑名稱 -name 檔案名 參數(我們這裡就不讨論參數了)

    whereis 檔案名

    locate 檔案名

    一般來說,find指令功能最為強大,但是對硬體的損耗也是最大的,當你使用find去查找你個檔案時,你會發現硬碟等在不停的閃動,這就意味着你的硬碟可能會比别人的少用個三四年。當你使用whereis或locate去查找檔案時,你會發現硬碟卻是安安靜靜的,這是因為這兩個指令是從系統的資料庫中查找檔案,而不是去拼命的讀硬碟。是以,如果平常你隻是想找一些笑檔案的話,使用whereis或locate就可以了,如果你是要進行系統管理的工作,那麼使用find再加上一些參數就可以滿足你的要求了。

    l su指令

    這個指令可以讓普通使用者變成具有管理者權限的超級使用者(superuser),隻要它知道知道管理者的密碼就可以。多使用者多任務系統的強調的重點之一就是系統的安全性,是以應避免直接使用root身份登入系統去做一些日常性的操作,因為時間一久root密碼就有可能被知道而危害到系統安全。是以平常應避免用root身份登入,即使要管理系統,也請盡量使用su指令來臨時管理系統,然後記住定期的更換root密碼。

    加入你現在是以一個普通使用者的身份登入系統,現在你輸入:

    su

    系統會要求你輸入管理者的密碼,當你輸入正确的密碼後,就可以獲得全部的管理者權限,這是你就是超級使用者(superuser)。但你執行完各種管理操作以後,隻要輸入logout就可以退回到原先的那個普通使用者的狀态。

    l shutdown,halt指令

    這兩個指令是用來關閉linux作業系統的。

    在前面我說過,作為一個普通使用者是不能夠随便關閉系統的,因為雖然你用完了機器,可是這時候可能還有其它的使用者正在使用系統。是以,關閉系統或者是重新啟動系統的操作隻有管理者才有權執行。另外linux系統在執行的時候會用部分的記憶體作緩存區,如果記憶體上的資料還沒有寫入硬碟,就把電源拔掉,記憶體就會丢失資料,如果這些資料是和系統本身有關的,那麼會對系統造成極大的傷害。一般,我們建議在關機之前執行三次同步指令sync,可以用分号";"來把指令合并在一起執行,如:

    # sync;sync;sync

    使用shutdown關閉系統的時候有以下幾種格式:

    shutdown (系統内置2分鐘關機,并傳送一些消息給正在使用的user)

    shutdown -h now (下完這個指令,系統立刻關機)

    shutdown -r now (下完這個指令,系統立刻重新啟動,相當于reboot)

    shutdown -h 20:25 (系統會在今天的20:25關機)

    shutdown -h +10 (系統會在十分鐘後關機)

    如果在關機之前,要傳送資訊給正在機器上的使用者,可以加"-q"的參數,則會輸出系統内置的shutdown資訊給使用者,通知他們離線。

    halt指令就不用多說了,隻要你輸入halt,系統就會開始進入關閉過程,其效果和shutdown -h now是完全一樣的,我每次關機的時候都是用halt。

    l reboot指令

    一看這個詞,就知道這個指令是用來重新啟動系統的。

    當你輸入reboot後,你就會看到系統正在将一個一個的服務都關閉掉,然後再關閉檔案系統和硬體,接着機器開始重新自檢,重新開機,再次進入linux系統。

    2.普通使用者使用的系統管理指令

    l chown指令

    這個指令的作用是改變檔案的所有者。

    如果你有一個檔案名為classment.list的檔案,所有權要給于另一個賬号為golden的同學,則可用chown來實作這個操作,但是當你改變了檔案的所有者以後,該檔案雖然在你的home目錄下,可是你已經無任何修改或删除該檔案的權限了,這一點同學們千萬要注意。通常會用到這個指令的時機,應該是你想讓linux機器上的某位使用者到你的home下去用謀個檔案是會用到。不過,潑出去的水就收不回來了,你用這個指令的時候可一定要想清楚呦。

    l chmod指令

    這個指令用來改變目錄或檔案的屬性,是linux中一個應當熟悉的指令。

    對這個指令,使用的方法很多,鑒于篇幅的原因,我隻例出其中我最常用的一種。前面講過,一個檔案用10個小格來記錄檔案的權限。前三個小格是擁有者(user)本身的權限,中間三個小格是和使用者同一組的成員(group)的權限,最後三個小格是表示其它使用者(other)的權限。現在我們用三位的2進制數來表示相應的三小格的權限,例如:

    111 rwx 101 r-x 011 -wx 001 -x 100 r-

    這樣一來,我們就可以用三個十進制的數來表示一個檔案屬性位上的十個格,其中每一個十進制數大小等于代表每三格的那個三位的二進制數。例如,如果一個檔案的屬性是: rwxr-r--,那麼我們就可以用744來代表它的權限屬性;如果一個檔案的屬性是:rwxrwxr--,那它對應的三個十進制數就是774。這樣一來我們就可以用這種簡便的方法指定檔案的屬性了。例如,我想把一個檔案test.list的屬性設定為rwxr-x---,那麼我隻要執行:

    chmod 750 test.list

    就可以了,對于改變後的權限,你用ls -l就可以看到。

    到這裡,我們第二講的内容就基本結束了,可以說,這一講是比較無聊的,但它又是必不可少的。這裡列出的僅僅是最最常用的控制台指令,要進一步的熟悉linux作業系統,了解類unix作業系統的管理思想,我們還有很多要學習,有興趣的同學可以參看其它的相關參考書籍。

    第三講 linux下的網絡服務,配置問題和常用工具

    這一講我們會接觸到linux下能夠提供的一些典型的網絡服務,大家會對這些服務有一個感性的認識,除此之外我們還會看到linux下面一些非常重要的配置檔案以及他們的用法。最後我們會看到linux下面最常用的幾個工具軟體。

    一.linux下的網絡服務

    一般來說,各種作業系統在網絡方面的性能比較是這樣的順序bsd>linux>win nt>win 9x, 由此說來,linux的網絡功能僅次于unix,而強于win nt和其它的視窗系列産品,對于win2000我還不能評價太多,因為不是很熟。

    linux的網絡功能除了基本的連線功能如telnet, ftp, rsh, login, finger等等以外,架設各種伺服器的功能更把linux網絡功能發揮的淋漓盡緻,下面我大概的為大家介紹一下linux下的各種網絡服務。

    l mail server

    email現在是網絡上最重要的服務了,你可能沒有用過ftp, bbs, inn,但是如果你連電子郵件都沒有用過,那作為bupt的一員,你得自己好好檢討一下了。

    現在又很多功能強大的mailserver供你選擇,例如freemail.263.net, hotmail.com, freemail.sohu.com,等等,這些都是免費的。但這是從使用者角度來看,如果你是想為一個區域網路内部提供一個交換電子郵件的服務,那它們對你來說可就是一筆巨款了,再說人家賣不賣給你還不好說呢。linux下面最著名的mail server是sendmail,它是一個負責監控和傳送電子郵件的郵件代理程式,你使用它就可以在在一個小的區域網路(例如宿舍網)裡提供一個電子郵件服務,這是多麼神奇的事情啊!使用linux下面的mailserver最大的好處是成本效益高,這些軟體的功能強大,卻又是完全免費的,我們完全不用去花幾萬元買一個功能有限還要按照人頭收費的exchange server,或者是使用d版軟體被别人紮脊梁骨。

    l router和gateway

    如果你的計算機可以連接配接到外面的internet上去,然而一些可以連接配接到你這台機器上的計算機卻隻能通路裡面的區域網路,那麼你可以安裝router或gateway的服務,這樣别人就可以通過你的機器和外面的世界聯系了。當然了,這麼做的前提是你有一顆大公無私的信,要我就不行,我可舍不得把我的piii的機器貢獻給宿舍的網蟲們。

    l samba

    在windows橫行的今天,samba的出現對于linux的茁壯成長是非常重要的,它大大拓寬了linux的應用領域。samba可以提供一種轉換smb(windows使用的一種資訊格式)和nfs(linux使用的一種資訊格式)的服務,通過samba, 運作windows的工作站就可以同運作linux的伺服器之間進行通信,還可以 讓網絡上的使用者(包括windows使用者)共享一台列印機,這樣linux的伺服器就可以運作在windows的環境中了。

    l nfs server

    linux還可以作為檔案伺服器,為網絡上具有存取權限的windows/linux機器分享相同的檔案系統,這樣一來,不論是在windows還是在linux的網絡中,linux的檔案伺服器都能夠發揮作用了。

    l terminal server

    這種服務能夠提供ppp/slip dialup(包括multi-port,就是一台計算機連多個數據機上網),讓一般的民用網絡moden使用者可通過terminal server與internet連接配接起來。

    l bbs

    在北郵如果你沒有上過bbs(bulletin board system電子布告版)我會很吃驚的,202.112.101.44或者是202.204.7.235你至少應該去過一個吧?如果沒有去過,那麼趕快把這一課補上。關于bbs到底能做什麼我就不多說了,我假定你已經知道了,現在網絡上流行的免費bbs版本很多,著名的有phoenix,maple,firebird,pivot等等,這些都可以在linux上使用。另外還有許多基于www的bbs,例如著名的跨平台的motiff community,可以非常穩定的在linux下運作,這是"瘟都死"所不能比拟的。

    l www

    在linux下面也有功能強大的www伺服器,你完全可以不必去使用又貴又不穩定的iis。但是不可否認iis的操作非常的簡單,如果你覺得自己有錢,可以買得起win2000 advanced server,又出得起"人頭稅",那你就用"瘟都死"吧。在linux上的www服務程式很多,現在最著名最流行的是apache,在北郵,有許多的伺服器就是跑apache的。現在在linux上使用apache+php+mysql是實作動态頁面的最佳搭配,立志于搞網站建設的朋友可一定要留心這一塊,因為它可以為你的網站建設節省大筆的成本(現在可是作業系統比機器貴)。我知道一個讨論組:[url]www.coventive.com.cn/club/default.htm[/url],它就是用apache+php+mysql這種組合建立起來的,有興趣的朋友可以去看看。

    二.幾種重要的配置檔案

    linux下面的配置檔案非常的多,對于初學者來說,我們隻需要知道最最常用的幾個配置檔案就可以了。由于片符合時間的原因,在這裡我隻介紹四個非常經典的配置檔案(lilo.conf, passwd,inittab,fasttab),這四個檔案中我重點介紹lilo.conf,其餘三個檔案會簡單的在課堂上示範。至于linux其它衆多的配置檔案必須各位同學自己下去查找相關資料自己學習了。

    l lilo.conf

    這是linuxloader(lilo)的配置檔案。對于初學者來說,這個配置檔案是非常重要的,因為它直接關系到你的系統是否能夠正确的引導到linux上來。我在這裡主要将一下如何使用lilo實作多個在一台機器上安裝多個作業系統。

    一般來說,第一次安裝linux後,預設引導的系統是linux,但是對大多數linux使用者來說,他們使用windows的時間會多于linux,是以我們最好能夠将預設引導的系統改為windows,這樣的話,就省去了每次啟動時敲一串字元的麻煩。要修改引導順序,就要修改linux系統中的一個配置檔案,這個檔案就是/etc/lilo.conf。我使用的是xlinux os 1.5,用vi打開這個檔案後,會出現下面的文字:

    boot=/dev/hda

    map=/boot/map

    install=/boot/boot.b

    prompt

    timeout=100

    linear

    default=xlinux

    p_w_picpath=/boot/vmlinuz-2.2.14-5.0

     label=xlinux

     read-only

     root=/dev/hda4

    other=/dev/hda1

     label=win

    這就是剛剛安裝完畢後的lilo配制檔案.這個檔案是按照由前到後順序引用的,通過修改這個檔案就可以改變lilo執行時的一些特性.首先我将這個檔案中比較重要的幾個地方給大家介紹一下:

    首先請看第5行:timeout=100,這是一個設定在lilo引導預設的系統之前等候使用者輸入系統别名的等候時間長度.它的時長好象不是按秒一級的數量級進行計算的,總之使用者可以按照自己的實際需要設定相應的時長.我一般是設定成timeout=500.

    然後我們看第7行:default=xlinux,這裡是關鍵之一!這一行指明預設引導的系統的别名是xlinux,要想改變系統的預設引導順序,這裡是需要修改的,稍後就會說到是怎麼修改的.

    再看第8行到第11行,這四行指明了引導linux系統的一些細節. p_w_picpath=/boot/vmlinuz-2.2.14-5.0指明了作業系統核心是放在哪裡的,以便于引導程式裝載作業系統核心;label=xlinux指明了引導這個作業系統時用的别名,這裡是xlinux; root=/dev/hda4指明了引導程式需要到哪一個硬碟的第幾個分區去尋找init過程,在這裡是要到第一個硬碟的第四個分區中去将引導系統的控制權交給這個分區裡的init過程.

    最後我們看看檔案中的最後兩行.other=/dev/hda1說明除了linux作業系統以外,機器中還安裝了别的作業系統(當然我知道這個另外的作業系統是我的win2000了),它位于第一塊硬碟中的第一個分區,一般來說,這個路徑是在安裝的時候就設定好的,不需要我們手工修改,但是我認為知道這些資訊還是很有必要的;label=win指明了這個系統引導時使用的别名為win.因為lilo是順序引用的,是以如果我們想要讓預設引導的系統變成windows,就需要将這兩行移動到p_w_picpath=.....那一行之前的位置,我建議的位置是放在p_w_picpath=...之前和default=.....之後.這是關鍵之二!

    當你将前面的兩個關鍵步驟完成之後,還需要将default=....那一行改成default=win,這是比較重要的一步,雖然即使你不改動這裡,系統也可以按照你的想法去引導,但是我可不敢保證你這樣做不會出一點問題.再說,如果你不改動這裡那多别扭啊!

    做到這裡,我們對lilo.conf這個檔案的改動就結束了,然後隻要退出vi,然後鍵入 lilo -v -v -v這個指令來更新一下lilo,我們就大功告成了.當你reboot以後,就會發現在"lilo:"那裡敲入Enter鍵後,系統就會預設的引導到windows系統去了.

    l passwd

    這個配置檔案是關于使用者密碼的。如果你是一名系統管理者,有可能會一次新增很多的使用者,這時用adduser就相當麻煩了。一般有功力的管理者會直接去修改/etc/passwd檔案。利用passwd檔案,可以控制使用者的密碼狀态及一些個人配置。

    對于這個檔案,普通單機使用者使用的并不是很多,主要是多使用者的管理者使用,對于它的一些基本配置方法,我會在課堂上為同學們示範,這裡不再贅述。

    l inittab和fasttab

    這兩個檔案都是存放在/etc這個目錄下面的,inittab檔案用來配置linux初始化的一些動作,我們最常用的是設定linux的啟動方式。fasttab檔案用來設定一些在linux啟動時的動作,主要是檔案系統或者是外設的挂接動作,如果你想讓你的linux一開始就能夠使用CD光牒驅動器,就可以把mount指令加到這個檔案中去。

    因為這兩個檔案對我們初學者來說,可以利用的地方不是很多,是以我不用過多的文字來描述它們的功能,具體的操作我會在課堂上為同學們示範,這裡不再贅述。

    三.linux下常用的工具軟體

    這裡我會為大家介紹linux世界裡最常用的幾種工具軟體,包括:vi, tar, gzip, rpm。

    l 文字編輯

    vi是linux(unix)世界最強大的文本編輯工具,我在第一講中提到過它,現在我把它的一些基本使用方法介紹給大家。

    vi的三種狀态

    1.command mode : 控制螢幕遊标之移動,字元或遊标之删除,搬移複制某區段及進入 insert mode 下,或者到 last line mode 。

    2.insert mode : 唯有在 insert mode 下, 才可做文字資料輸入,按esc鍵可到 command mode 。

    3.last line mode : 将檔案寫入或離開編輯器,亦可設定編輯環境, 如尋找字串、列出行号..等。

    vi 的基本操作

    1. 進入 vi

    在系統提示符号下輸入 vi 及檔案名稱後即進入 vi 全螢幕編輯畫面,且在 command mode 下。

    2. 切換至 insert mode 編輯檔案:

    在 command mode 下可按 'i' 或 'a' 或 'o' 三鍵進入 insert mode。

    3. 離開 vi 及存檔:

    在 command mode 下可按 ':' 鍵進入 last line mode,

    :w filename (存入指定檔案)

    :wq (寫入并離開 vi)

    :q! (離開并放棄編輯的檔案)

    command mode 下功能鍵簡介

    1. 進入 insert mode

    i : 插入, 從目前遊标所在之處插入所輸入之文字。

    a : 增加, 目前遊标所在之下一個字開始輸入文字。

    o : 從新的一行行首開始輸入文字。

    2. 移動遊标

    h、j、k、l : 分别控制遊标左、下、上、右移一格。

    ^b : 往後一頁。

    ^f : 往前一頁。

    g : 移到檔案最後。

    0 : 移到檔案開頭。

    3. 删除

    x : 删除一個字元。

    #x : 例, 3x 表删除 3 個字元。

    dd : 删除遊标所在之行。

    #dd : 例, 3dd 表删除自遊标算起之 3 行。

    4. 更改

    cw : 更改遊标處之字到字尾 $ 處。

    c#w : 例, c3w 表更改 3 個字。

    5. 取代

    r : 取代遊标處之字元。

    r : 取代字元直到按 為止。

    6. 複制

    yw : 拷貝遊标處之字到字尾。

    p : 複制(put)到所要之處。(指令 'yw' 與 'p' 必須搭配使用。)

    7. 跳至指定之行

    ^g : 列出行号

    #g : 例, 44g 表移動遊标至第 44 行行首。

    last line mode 下指令簡介

    注意: 使用前請先按 鍵确定在 command mode 下。按 ':' 或 '/' 或 '?' 三鍵即可進入 last line mode。

    1.列出行号 :set nu (可用 :set all 列出所有的選擇項。)

    2.尋找字串 /word (由首至尾尋找) ?word (由尾至首尋找)

    l 壓縮工具

    tar,gzip的使用方法

    1.壓縮一組檔案為tar.gz字尾。

    # tar cvf backup.tar /etc

    #gzip -q backup.tar

    或

    # tar cvfz backup.tar.gz /etc/

    2.釋放一個字尾為tar.gz的檔案。

    #gunzip backup.tar.gz

    #tar xvf backup.tar

    # tar xvfz backup.tar.gz

    3.用一個指令完成壓縮

    #tar cvf - /etc/ | gzip -qc > backup.tar.gz

    4.用一個指令完成釋放

    # gunzip -c backup.tar.gz | tar xvf -

    5.如何解開tar.z的檔案?

    # tar xvfz backup.tar.z

    # uncompress backup.tar.z

    6.如何解開.tgz檔案?

    #gunzip backup.tgz

    7.如何壓縮和解壓縮.bz2的包?

    #bzip2 /etc/smb.conf

    這将壓縮檔案smb.conf成smb.conf.bz2

    #bunzip2 /etc/smb.conf.bz2

    這将在目前目錄下還原smb.conf.bz2為smb.conf

    注: .bz2壓縮格式不是很常用,你可以man bzip2

    l 安裝工具

    rpm是世界著名的red hat公司推出的一種軟體包安裝工具,全稱為redhat package manager。rpm的出現提供了一種全新的軟體包安裝方法,在友善性上甚至超過了微軟的windows。下面我就介紹一下rpm的基本使用方法。

    1.安裝一個包

    # rpm -ivh < rpm package name>

    2.更新一個包

    # rpm -uvh < rpm package name>

    3.移走一個包

    # rpm -e < rpm package name>

    4.安裝參數

    --force 即使覆寫屬于其它包的檔案也強迫安裝

    --nodeps 如果該rpm包的安裝依賴其它包,即使其它包沒裝,也強迫安裝。

    5.查詢一個包是否被安裝

    # rpm -q < rpm package name>

    6.得到被安裝的包的資訊

    # rpm -qi < rpm package name>

    7.列出該包中有哪些檔案

    # rpm -ql < rpm package name>

    8.列出伺服器上的一個檔案屬于哪一個rpm包

    #rpm -qf 檔案名稱

    9.可綜合好幾個參數一起用

    # rpm -qil < rpm package name>

    10.列出所有被安裝的rpm package

    # rpm -qa < rpm package name>

    11.列出一個未被安裝進系統的rpm封包件中包含有哪些檔案?

    # rpm -qilp < rpm package name>

    尾語

    到這裡,我們這次linux基礎講座的授課部分就基本結束了,祝願大家能夠開始對這個新興的作業系統賦予足夠的關注,并能夠在linux的世界裡得到豐厚的收獲。我們這個系列講座也隻能起到一個抛磚引玉的作用,希望大家能夠在今後的學習中不斷的充實自己的實力,早日成為"骨灰級"的linux高手。

繼續閱讀