一、什麼是 Linux 呢?! · 試說明 Unix 與 Linux 的歷史? o Multics 系統:由Bell(貝爾實驗室)、MIT(麻省理工學院)與GE(美國通用電器)合作開發的一個系統; o 1969:K. Thompson 替 DEC 公司寫了一個簡單的 file system 系統,此為 Unix 的前身,但是 Unix 一詞尚未出現 o 1973:由 Bell 的 D. Richie 以 C 語言改寫了 Thompson 的小系統,全部以 ASCII 檔案進行改寫,方便於應用!此時為第一次出現 Unix 這個作業系統的名詞,不過,由於 Unix 乃針對不同的硬體而設定,因此僅出現在大型的 Server 上面看到!經過數年後,有底下幾種版本: 1. System V 來自於 ATT 公司; 2. BSD 來自於加州理工學院; 3. AIX 來自於 IBM 公司 o 1979:Richard Stallman 倡導 Open source 精神; o 1984:GNU 與 Free Software Foundation (FSF)由 R. Stallman 倡導; o 1986:Xfree86 出現在 Unix 上面,且在 1994 年整合於 Linux 中! o 1991:芬蘭大學生 Linus Torvalds在網路上首次公告 0.02 版的 Linux Kernel ,稱為 hobby。 · 簡單說明 GNU General Public License (GPL)的精神: o GPL 的授權之軟體,乃為自由軟體(Freeware),任何人皆可擁有他; o 開發 GPL 的團體(或商業企業)可以經由該軟體的服務來取得服務的費用; o 經過 GPL 授權的軟體,其屬於 Open source 的情況,所以應該公布其原始碼; o 任何人皆可修改經由 GPL 授權過的軟體,使符合自己的需求; o 經過修改過後 Open source 應該回饋給 Linux 社群。 (PS. Open source 最大的優點為多人維護, debugs 的速度較快,程式亦較為安全,但是缺點則是缺乏『專人』維護!) · 什麼是 Linux Distribution? 基本上 Linux 是在 1991 年由芬蘭大學生 Linus Torvalds 寫的一個核心作業系統,最早僅只是核心而已,後來由於此一核心不但可以適合於主流 PC 的 x86 架構,並且穩定,因此有相當多的團隊加入研究開發,後來某些公司將一些套件加入此一核心中,變成為完整的『安裝光碟』,亦即是 Linux Distribution 了!所以才會有這麼多的 Linux 版本,各版本之間沒有所謂的誰優誰劣,而是個有其優缺點!看你適合哪一款,就用那一款吧! 開發商針對 Linux Kernel 進行開發,並加入適合該 Kernel 的套件(如 ftp, apache, mail 等等),及配合開發商本身的支援軟體,而製作出來的可安裝光碟即可稱為 distribution。 · 市面上眾多的 Linux 版本當中,有何異同? 唯一相同的地方在於 Linux 的『Kernel』,目前 ( 2002/06/29 ) Kernel 發展至 2.4.xx 版本,至於不同點則是 Linux 開發商自行加入或者是研發的軟體。 · Linu Kernel 的功能: o System call interface o Process control o Memory management o File System management o Device drivers 簡單的說,任何跟系統硬體資源有關的都是 Linux Kernel 管轄的範圍,所以編輯核心的時候,將核心編的越小越好! · 試說明 Linux Kernel 與使用者之間的相關性? 硬體<=>Kernel (Modules Loader)<=>Shell ( Terminal or GUI )<=>Users · 試說明什麼是 GUI GUI 為 Graphical User Interface 的簡寫,即為使用者圖形界面,目前我們在 Linux 上面的 GUI 一般稱為 X-Window ,而其核心為 Xfree86 這個 X-Server !請注意,這個 Xfree86 最大的功能即是在控制『顯示卡、硬體周邊』等跟 Window 有關的界面,所以 X-Window 無法啟動時,通常是 Xfree86 這個 X-Window 的核心驅動程式設定不完全有關! · Linux 的優點: 最大的優點來自於其良好的資源分配!所以具有: o 良好的多人多工環境,資源分配平均; o 除了免費之外,線上更新速度快,除錯與安全性均較佳; o 為 Open source 的授權,故而具有 open source 的所有優缺點; o 網路功能強大。 · Linux 是多人多工的環境,請問何謂多工(Multitask)與多人(Multiuser): o Multitask 指的是多工環境,在 Linux 系統下, CPU 與其他例如網路資源可以同時進行多項工作, Linux 最大的特色之一即在於其多工時,資源分配較為平均! o Multiuser 指的是 Linux 允許多人同時連上主機之外,每個使用者皆有其各人的使用環境,並且可以同時使用系統的資源!
二、Linux 的安裝與認識 Linux 支援的硬體 · 一般而言, Linux 需要的配備並不需要太高檔,但 Open Linux Server 3.1.1 需要? o CPU 需要在 PII, PIII, P4 或 K7, K8 以上等級; o RAM 至少需要 64 MB, o 硬碟至少 550 MB,全部安裝則需要 1.7GB · 什麼是 IDE 界面,一般而言,普通 PC 允許幾個 IDE 界面與裝置? o IDE 為用來傳輸硬碟資料的一個匯流界面; o 共有 IDE1, IDE2 ,分別有 master 與 slave 所以共四個 IDE 裝置支援! · IDE2 的 master 之第一個 logical 磁碟中,其裝置代號(檔案名稱)為何? /dev/hdc5 · 在硬碟分割 (Partition)時,最多有幾個 primary + extended ? Primary + Extended 共四個,其中 Extended 通常只有一個! ( 更詳細的硬碟與 MBR 可以參考 ?? 這篇討論 ) · 若在分割的時候,在 IDE1 的 slave 硬碟中,分割『六個有用』的磁區(具有 filesystem 的),此外,有兩個 primary 的磁區!請問六個磁區的代號? o /dev/hdb1(primary) o /dev/hdb2(primary) o /dev/hdb3(extended) o /dev/hda5(logical 底下皆為 logical) o /dev/hda6 o /dev/hda7 o /dev/hda8 請注意,5-8 這四個 logical 相加的總和為 3! · 一般而言安裝 Linux 至少要有哪兩個 partition 呢? o 根目錄 / (root) o 虛擬記憶體 Swap · 一般而言,在 RAM 為 64MB 或 128 MB 的系統中, swap 要開多大? 約兩倍的 RAM ,亦即為 128 MB 或 256 MB ,可獲得較佳效能! · 光碟機與軟碟機的代號(裝置檔案名稱)? o /dev/cdrom o /dev/fd0 · 網路卡(Network Interface Card, NIC)的代號? o /dev/eth0 · 預設的 Linux 檔案格式為何?又,目前常用的 Journalling 檔案格式為何? o Ext2 o Ext3, Reseifs · 安裝 Linux 的主要流程? o BIOS(決定由 cdrom 或 floppy 開機,並載入PC硬體資訊) o 載入 install kernel loader : o 收集硬體資訊 o Hard Disk 之 Partition o Formation o Softpackage 的選擇 o 開始安裝! · 什麼是 GMT 時間?台北時間差幾個鐘頭? GMT 時間指的是格林威治時間,為標準的時間,而台北時間較 GMT 快了 8 小時! · Tap, SCSI 硬碟, RAID, printer 的裝置代號? o Tap : /dev/ht0 (IDE), /dev/st0 (SCSI); o SCSI H.D.: /dev/sd[a-p], o RAID : /dev/md[0-15]; o printer : /dev/lp[0-2]
四、線上求助 ( Help ) · 在 Linux 系統中,安裝的套件 (RPM安裝) 預設的文件資料放在那個目錄底下? /usr/share/doc · 查看 Linux 系統的線上求助可以使用什麼指令? man command info command · 使用 man 來查詢線上求助的時候,若要查詢類似參數檔(如/etc/passwd)需如何? man 5 passwd 或是例如 syslog.conf 則: man 5 syslog.conf 那個 5 即是大部分的 config 檔案的查詢。 · 使用 man 查詢 command 的所有相關指令時,需要下什麼參數? man ?k command 例如 man ?k passwd · man page 的 man path 變數,記錄在那個檔案中呢?! /etc/man.conf
五、vi 的使用 · 在 linux 底下最常使用的文書編輯器為 vi ,請問如何進入編輯模式? o 在一般模式底下輸入: i, I, a, A 為在本行當中輸入新字元;(出現 ?Insert- ) o 在一般模式當中輸入: o, O 為在一個新的一行輸入新字元; o 在一般模式當中輸入: r, R 為取代字元!(左下角出現 ?Replace-) · 如何由編輯模式跳回一般模式? [Esc] · 若上下左右鍵無法使用時,請問如何在一般模式移動游標? h, j, k, l · 若 [pagedown] [ pageup] 在一般模式無法使用時,如何往前或往後翻一頁? [Ctrl] + [f] [Ctrl] + · 如何到本檔案的最後一行、第一行;本行的第一個字元、最後一個字元? G, 1G, 0, $ · 如何刪除一行、n行;如何刪除一個字元? dd, ndd, x 或 X (dG 及 d1G 分別表示刪除到頁首及頁尾) · 如何複製一行、n行並加以貼上? yy, nyy, p 或 P · 如何搜尋 string 這個字串? o ?string (往前搜尋) o /string (往後搜尋) · 如何取代 word1 成為 word2,而若需要使用者確認機制,又該如何? o :1,$s/word1/word2/g 或 o :1,$s/word1/word2/gc (需要使用者確認) · 如何讀取一個檔案 filename 進來目前這個檔案? :r filename · 如何另存新檔成為 newfilename? :w newfilename · 如何存檔、離開、存檔后離開、強制存檔后離開? :w; :q: :wq; :wq! · 如何設定與取消行號? :set nu :set nonu
六、檔案與目錄管理 · 請問底下的目錄與主要放置什麼資料? o /etc/:幾乎系統的所有設定檔案均在此,尤其 passwd, shadow o /etc/rc.d/init.d:系統開機的時候載入服務的 scripts 的擺放地點 o /boot:開機設定檔,也是預設擺放核心 vmlinuz 的地方 o /usr/bin, /bin:一般執行檔擺放的地方 o /usr/sbin, /sbin:系統管理員常用指令集 o /dev:擺放所有系統裝置檔案的目錄 o /var/log:擺放系統登錄檔案的地方 · 『舊的』 Unix 系統與 Linux 系統的『檔名』最多可以容許幾個字元? 14, 255 · 什麼是絕對路徑與相對路徑,要由 /usr/share/doc 進入到 /usr/share/man 由相對路徑與絕對路徑的寫法各為何? o 絕對路徑絕對由 / 開始寫起,相對路徑則非由 / 寫起; o cd /usr/share/man ; cd ../man · 在非為根目錄的任何一個目錄中,下達 ls ?al 時,均會有『.』及『..』這兩個目錄,請問分別代表什麼? o . :代表本目錄 o .. :代表上層目錄 · 顯示、變換目錄的時候,使用什麼指令? ls, pwd 為顯示; 變換目錄用 cd · 新增目錄、移除目錄移動目錄與拷貝目錄有什麼指令可用? o 新增: mkdir 目錄, o 移除: rmdir 目錄(但是該目錄內必須要已經清空了), rm ?rf 目錄, o 移動: mv directory1 directory2 o 拷貝: cp ?r directory1 directory2 · 如何查看一個檔案的『內容』(不要使用 vi 的情況下) cat, tac, more, less, head, tail, nl, od(查看二進位制) · 什麼是 hard link 與 soft link 的檔案?有何不同? o Hard Links:在做成 hard link 檔案時,系統會佔用掉一個 inode ,由連結檔案可發現其 link 欄位多使用了一個 inode ,當原始檔案被刪除的時候,該原始檔案的內容將繼續保留在其他的 Hard Links 檔案中;但所有 Link 佔用的硬碟總量僅佔一個檔案的容量大小!(但 Hard link 不能連結不同 filesystem 的檔案) o Soft Links:類似捷徑,當原始檔被刪除,soft link 檔案將找不到原始檔了! · 如何在 root 的家目錄下建立一個 /bin 的連結捷徑 ln ?s /bin /root/bin · 若有一個連結檔為 testing 連結到 test1.sh ,請問 copy testing 到 /tmp 底下,『cp testing /tmp』則 /tmp/testing 這個檔案會是:(1) 連結檔,連結到 test1.sh ;(2) 一般檔案,為內容與 test1.sh 相同? 答案為 (2) · 當一個檔案屬性為 ?rwxrwxrwt 則表示這個檔案的意義為? 任何人皆可讀取、可寫入,但是不可刪除該檔案(或目錄),除了 root 與檔案或目錄擁有者有權可以刪除。 · 我需要將一個檔案的屬性改為 ?rwxr-xr-- 請問該如何下達指令? chmod 754 filename, chmod u=rwx,g=rx,o=r filename · 在 /usr/bin/passwd 這個檔案的屬性為 ?r-s--x--x 請問代表什麼意思(s) 那個 s 代表為 SUID ,當使用者使用這個檔案進行工作的時候,將會具有該檔案擁有者的許可權! · 如何改出 ?rwxr-sr-x 與 ?rwxr-xr-t這個屬性? chmod 2755 filename, chmod 1755 filename · 如何查看一個檔案的類型 (type) 例如純文字檔、執行檔與 setuid 檔案等? file filename · 若一個使用者的 umask 為 033 ,請問他建立一個新的目錄與檔案時的預設屬性為? o 目錄:744 ? -rwx-r--r-- o 檔案:633 ? -rw--wx-wx · 若我需要更改一個檔案的擁有者與群組,該用什麼指令? chown, chgrp · 如何將一個檔案的修改日期改成目前的時間? touch filename · 如何搜尋一個檔案? which (僅用於指令搜尋), whereis, locate, fine · Linux 預設的檔案系統為何?此外,常用的 Journalling 檔案格式有哪些? Ext2, Journalling 有 ext3 及 Reiserfs 等 · less 跟 more 有什麼不同? less 可以翻頁,但是 more 不行! · 在比較兩個檔案的異同時,常使用的是 diff 與 cmp ,請教兩者有何不同? diff 為一行一行比較, cmp 為一個字元(character)一個字元比較
六.1、磁碟掛載與虛擬記憶體問題 · 我要如何查看 Linux 系統當中所有已經掛載的硬碟容量與 inodes ? df ?k, df ?i, · 我要如何查看目前所在目錄的所有檔案佔用的硬碟空間,此外,如何僅輸出結果? du -k, du ?i, du -s · 如果磁區 /dev/hda3 有問題,偏偏他是被掛載上的,請問我要如何修理此一磁區? umount /dev/hda3 fsck /dev/hda3 · 承上題,那麼有問題的檔案將被移動到那個目錄下? lost+found · 試說明新增一個 partition 在 /dev/hdb 當中,且為 hdb5時,並掛載上 /disk2 ,需要哪些步驟? o fdisk /dev/hdb 按 n 新增,按 e 新增 extended ,再按 n 新增 logical o mke2fs ?b 2048 /dev/hdb5 o mkdir /disk2 o mount ?t ext2 /dev/hdb5 /disk2 · 如何新增加 64MB 的虛擬記憶體 swap ? o dd if=/dev/zero of=/tmp/swap bs=4k count=16384 o mkswap /tmp/swap o swapon /tmp/swap · 如果要設定一個新掛載上的磁區,令他可以在開機的時候被掛載上,應該編輯哪一個檔案? o 先 /etc/fstab o 再 mount ?a · 簡易說明 quota 的設置流程? o 編輯 /etc/fstab, 加入 usrquota and/or grpquota o reboot o quotacheck ?avug (會產生 aquota.user(group)) o quotaon ?aug o edquota ?u username o edquota ?g groupname o repquota ?vu /dev/hd[a-d][1-16]
七、BASH SHELL · 簡單說明 bash shell 的功能特徵: o 命令記憶功能 ~/.bash_history o 命令別名功能 alias o shell scripts 功能 o 命令與檔案名稱補全功能 o 工作控制功能 jobs · 在設定變數中,主要的規則為何? 1. 變數與變數內容以等號來連結; 2. 等號兩邊不能直接接空白字元; 3. 變數名稱只能是英文字母與數字,但是數字不能是開頭字元; 4. 若有空白字元可以使用雙引號『 " 』或單引號『 ' 』來將變數內容結合起來,但須要特別留意,雙引號內可以保有變數,但是單引號則僅為一般字元; 5. 必要時需要以跳脫字元『 \ 』來將特殊符號(如 Enter, $, \, 空白字元, ' 等)變成一般符號; 6. 若該變數為擴增變數內容時,則需以雙引號及 $變數名稱如:『 "$PATH":/home』繼續累加內容; 7. 若該變數需要在其他子程序執行,則需要以 export 來使變數可以動作,如『export PATH』; 8. 通常大寫字元為系統預設變數,自行設定變數可以使用小寫字元,方便判斷(純粹依照使用者興趣與嗜好); 9. 取消變數的方法為:『unset 變數名稱』 · 顯示環境變數與所有變數的指令為何? env, set, · 在環境變數當中,『使用者家目錄、主機名稱』的變數名稱為: HOME, HOSTNAME · 如何讓一個變數可以持續到下一個程序 (PID) 去? export variable · 在變數的設定當中,雙引號與單引號有何不同? 雙引號裡面可以包含變數,單引號謹代表一般字元! · Command1 `command2` 這個指令代表什麼意思? 在這一行當中, command2 會先執行,而輸出的結果會給 command1 當作參數。 cd /lib/modules/`uname -r`/kernel 是最常使用的一例 · 在命令重導向當中, > 與 >> 有什麼不同? > 會將導向的 file 覆蓋, >> 則是增加! · 若要將錯誤的輸出導向『不見了』的裝置,該如何是好? command 2> /dev/null · 在管線指令中,我要將 last 輸出的結果顯示 root 的『登入次數』, 如何做? last | grep root | cut ?d 「 「 ?f 1 | wc -l · 如何設定一個變數名稱為 name ,使其顯示為『 VBird』s testing variable. 』? o name=VBird\』s\ testing\ variable. o name=」VBird』s testing variables.」 o echo $name · 請問 bash shell 的環境變數與自己的個人變數可以登入便設定的檔案? o Open Linux: /etc/profile, /etc/config.d/shells/bashrc, ~/.profile, ~/.bashrc, o Red Hat : /etc/profile, ~/.bash_profile, ~/.bashrc, · 如何查詢曾經操作過的指令?如何執行第 26 個操作過的指令?上一個操作過的指令? o history o !26 o !! · 如何設定命令別名?使 lm 與 ls ?al|more 功能相同 alias lm=』ls ?al|more』 · 如何將 /bin 的所有資訊輸出到 /home/testing.dat 這個檔案? ls ?al /bin 1> /home/testing.dat · 在上一題中,若還要輸出到螢幕上,要如何是好? ls ?al /bin | tee /home/testing.dat · 執行 find ,並將正確的結果輸出到 right 而錯誤結果輸出到 error 當中? find / -name test 1> right 2>error · 如何在指令列模式中將 /root/.bashrc 的資料加在 /home/col/.bashrc 當中? cat /root/.bashrc >> /home/col/.bashrc · 不要顯示執行的結果要如何是好? command > /dev/null 2>$1 · 列出這個月曾經登入主機的使用者資訊即可,不需要重複? last | cut ?d」 「 ?f1 | sort | uniq · 萬用字元當中, *, ?, [] 各代表什麼意思? o * 代表 0 到無限多個字元; o ? 代表一個任意字元; o [] 代表一個字元,這個字元在某一個限制範圍內。