2011年7月24日 星期日

《Linux進化特區:Ubuntu 10.04從入門到精通》筆記

CH1 安裝Ubuntu

一.基本知識

1.磁碟分割:
每顆硬碟在分割時最多只能分割出四個主要分割區(Primary Partition)或延伸分割區(Extended Partition)。其中,延伸分割區可再細分出數個邏輯分割區,但主要分割區只能直接拿來使用,不可再細分
﹡每顆硬碟最多只能有一個延伸分割區


2.磁碟代號:

IDE裝置:/dev/hd[a-z]

隨身碟或讀卡機:/dev/sd[a-z]

光碟機:/dev/cdrom


3.樹狀目錄管理

/bin:常用命令的存放目錄

/sbin:常用系統命令的存放目錄

/usr/bin:與使用者平常作業相關的命令存放目錄

/usr/sbin:與使用者系統管理作業相關的命令存放目錄

/root:root使用者的家目錄

/home:一般使用者的家目錄

/etc:系統設定檔的存放目錄

/dev:裝置存取檔的所在目錄

/lib:程式庫檔案的存放處

/usr/local:使用者自行安裝軟體的存放處

「/」表示根目錄
「.」表示目前目錄

「..」表示上一層目錄

「~」表示目前使用者的家目錄

「~Tom」表示Tom的家目錄



CH2 套件管理

一.APT

1.apt-get

sudo apt-get update:會先從系統預設的套件來源網站中取得所有套件的列表,以便使用者可以直接取得套件的最新版本。並不會自更新軟體套件

sudo apt-get upgrade:自動將系統上所有已安裝的套件進行更新

sudo apt-get install xxx:安裝xxx套件。若為「xxx*」則會自動安裝所有以xxx開頭的套件

sudo apt-get remove xxx:移除xxx套件。會保留其設定檔

sudo apt-get autoremove xxx:自動移除xxx及其他相依套件

sudo apt-get  puge xxx:移除xxx套件及相關設定檔

sudo apt-get dist-upgrade xxx:升級xxx及其他相依套件

sudo apt-get clean:清除更新時所下載的套件檔案

sudo apt-get autoclean:只移除過舊版版本的套件檔案


2.apt-cache

apt-cache search xxx:在套件列表中搜尋有xxx關鍵字的套件

apt-cache showpkg xxx:顯示xxx套件的所有資訊,如套件版本、相依套件的關係等

apt-cache stats:查詢套件在系統上的統計資訊

apt-cache show xxx:顯示xxx套件的相關資訊,包含套件所屬性質、分類、檔案大小、相依套件以及是否會與其他套件產生衝突等訊息

apt-cache depends xxx:顯示xxx的相依套件

apt-cache pkgnames:將系統所有可用的套件名稱列出,可在其後加上「 | more」,以便閱讀



二.手動安裝deb套件

sudo dpkg -i xxx.deb:安裝xxx 套件

sudo dpkg -r xxx.deb:移除xxx套件

dpkg -l:查詢已安裝的套件




CH3 指令介紹

一.基本指令

1.線上操作手冊 man

NAME:大略說明指令的用途

SYNOPSIS:說明指令參數的使用格式

DESCRIPTION:說明指令的詳細用途及參數

SEE ALSO:列出與該指令相關的其他指令

HISTORY:說明此指令的改版歷史、改版提供的新功能等


2在指令後方加上「--help」參數,可查到該指令的基本用法


3.輸入「clear」可清除終端機畫面



二.檔案與磁碟管理

1.列出檔案 ls

-a:顯示所有檔案,包含以「.」開頭的隱藏檔

--color:是否啟用以顏色區分檔案的功能。「--color=never」表示不啟用,「--color=always」表示一律使用

-d:僅顯示目錄名稱而非顯示目錄內的檔案列表

-F:顯示特殊檔案時,會在檔案名稱後方加上特定字元。執行檔會加上「*」號,捷徑會加上「@」等

-l:以較完整的方式顯示檔案。例如檔案的讀取權限、擁有者與群組名稱、檔案大小、修改日期等資訊

-h:顯示檔案時,以KB、MB、GB等較易閱讀的方式顯示檔案大小。此參數需與「-l」參數合用才有效果

-m:在檔案名稱後方加上逗號,但與「-l」合用時失效

-n:類似「-l」參數的功能,但檔案擁有者與群組以數字直接呈現UID/GID為何,而非顯示名稱

-o:類似「-l」參數的功能,但不顯示群組名稱

-r:顯示檔名時以反向進行排序

-R:顯示目錄下所有子目錄中的檔案

-s:以區塊為單位顯示檔案大小

-S:以檔案大小進行排序

-t:以時間進行排序

-v:以版本進行排序

-X:以副檔名進行排序


2.切換目錄 cd


3.顯示目前目錄 pwd


4.建立目錄 mkdir

﹡若要一次建立多層子目錄,則加上「-p」參數


5.刪除目錄 rmdir

﹡僅能刪除空目錄

﹡加上參數「-p」可直接刪除子目錄及其上層目錄


6.刪除檔案 rm

﹡加上參數「-i」可確認使用者是否要刪除檔案

﹡加上參數「-r」會自動刪除目錄下的所有檔案與子目錄


7.複製檔案 cp

﹡加上參數「-i」可確認使用者是否要複製除檔案

8.移動檔案 mv

﹡若來源目錄與目的目錄都是位於相同的目錄,則mv指令為更名的動作

﹡加上參數「-i」可確認使用者是否要移動除檔案


9.顯示檔案內容 cat

﹡加上參數「-n」可在每一行的前面加上行號


10.擷取字串 grep

﹡加上參數「-v」會隱藏包含關鍵字的行數,而其他的行數則全數顯示


11.尋找檔案

find:可以在檔案中找尋任何檔案,只要檔名符合即可,檔案屬性並不影響搜尋結果

﹡find指令格式為「find <搜尋開始目錄> -name <檔案名稱>」

which:只會在PATH環境變數所設定的目錄中找尋可執行檔。如果檔案只是一般檔案,如普通的文字檔,則不會被找到

﹡環境變數指的是系統運行時,供作業系統本身或應用程式參考的特殊變數。而PATH環境變數會定義一連串的路徑位置,表示系統執行指令時預設搜尋指令執行檔所在路徑的順序

whereis:類似which指令,但whereis會另外搜尋像man page的目錄等額外目錄與指令


12.分頁顯示

more:只能向下捲動

less:可以上下捲動,也可以利用Page Up或Page Down按鍵上下捲動一頁的資料


13.顯示檔頭、檔尾

head:僅顯示檔案的前幾行。指令為「head -<行數> <檔案名稱>」,預設為10行

﹡加上參數「-f」可用來監控像是記錄檔之類會隨時更新內容的檔案。若要中止,則按下CTRL + C

tail:僅顯示檔案的後幾行。指令為「tail -<行數> <檔案名稱>」,預設為10行

﹡加上參數「-f」可用來監控像是記錄檔之類會隨時更新內容的檔案。若要中止,則按下CTRL + C


14.更新檔案時間 touch

﹡若檔案不存在,則會建立指定名稱的檔案


15.建立連結 ln

硬連結:指令為「ln <連結來源檔案> <連結目的檔案>」。不能跨越磁碟分割區,所以在使用硬連結時,無論是連結目的檔案或是連結來源檔案,都必須在同個硬碟分割區中。此外,因為連結目的檔案與連結來源檔案使用相同的inode number,所以針對連結來源檔案所進行的任何操作,都會即時反應到連結目的檔案上。例如「touch」指令更新連結來源檔案,則連結目的檔案也會跟著一起更新最後修改時間的資訊

﹡建立一個與連結來源檔案使用相同incode number的檔案

軟連結:又稱為符號連結。指令為「ln -s <連結來源檔案> <連結目的檔案>」。可以跨越磁碟分割區,且針對連結來源檔案所進行的檔案資料結構修改,並不會影響連結目的檔案的屬性


16.檔案佔用大小 du

﹡預設會將目錄下所有子目錄的佔用空間全數列出,最後才計算總大小

﹡「du」指令所顯示的數字是以KB為單位

﹡加上參數「-h」可以將數字以MB為單位

﹡加上參數「-s」可以單純計算某個目錄所佔用的空間


17.已掛載的檔案系統使用量 df

﹡指令同du



三.權限管理

1.當使用「ls -l」指令時,會看到檔案或目錄前方有十個字元,這些即為檔案存取權限。這些字元可分為四組,各擁有1、3、3、3個字元。第一個字元用來表示檔案的特殊性,當此檔案為目錄時,則顯示「d」;當為連結檔時,則顯示「l」。後面三組各三個字元則分別代表檔案擁有者、群組與其他使用者對於此檔案的存取權限


2.更改讀取權限 chmod

除了以數字方式進行修改外,也可利用文字指定的模式,如「chmod 644 <檔案名稱>」效果與「chmod u=rw,g=r,o=r <檔案名稱>」。其中「u」為檔案擁有者的權限;「g」為相同群組使用者;「o」為其他使用者。設定全現實可以使用「=」直接設定,如果只需要修改某種權限,則可以使用「+」或「-」

﹡若要同時修改檔案的擁有者與群組,則使用「chmod <使用者帳號>.<群組> <檔案名稱>」


3.更改擁有者 chown


4.更改群組 chgrp



四.系統管理

1.工作監控 top


2.顯示行程 ps

﹡加上參數「u」可顯示執行該行程的使用帳號

﹡加上參數「a」可顯示系統上所有使用者執行的行程列表

﹡加上參數「x」可顯示非使用者所執行的行程

﹡加上參數「w」則包含所有的參數


3.查詢系統負載、已開機時間 uptime

﹡「load average」後面的三個數字分別表示過去一、五、十五分鐘系統的負載程度。0.00表示負載十分輕微,1.00以上表示有些負荷,若到了5以上,則該系統可能正在進行大工程


4.刪除行程 kill

﹡先以「ps」指令查詢欲刪除行程的PID,再以「kill <PID>」刪除。若該行程被kill後仍繼續執行,可輸入「kill -9 <PID>」強制刪除


5.調整優先權 nice

﹡所有使用者執行的命令預設都是以優先權20進行運作

﹡格式為「nice --adjustment=<數字> <指令>」,其中數字若為正值,表示要降低優先權;若為負值,則表示提高優先權。數字越小表示優先權越高


5.開機訊息 dmesg


6.查詢線上使用者 who


7.查詢目前所使用的身份 whoami


8.最後登入時間 last


9.切換使用者 su

﹡若輸入「su <使用者帳號>」,不會套用該使用者的登入環境;若輸入「su - <使用者帳號>」,則會自動套用該使用者所有的環境變數


10.掛載磁碟 mount

﹡可使用「mount -t <檔案系統> <來源裝置代號> <掛載目錄>」,將其他磁碟掛載到系統中


11.卸載磁碟 umount


12.格式化檔案系統 mkfs

﹡需umount後才可格式化

﹡格式為「mkfs -t <檔案系統類型> <磁碟代號>」


13.檢查檔案系統 fsck

﹡最好先umount後再檢查

﹡若要檢查的磁碟是系統磁碟,無法卸載時,可執行「sudo init 1」指令進入擔使用者模式,再進行卸載即可


14.寫入快取 sync

﹡LInux在進行磁碟存取時,並不會立即將資料寫入磁碟中,而是會先存放在快娶記憶體中,等到CPU有空或快取記憶體滿載時,才一次寫入。而此指令是強迫系統立即將這些資料寫入


15.關機 shutdown

﹡格式為「shutdown <參數> <執行時間>」

﹡加上參數「-h」表示停止運行後直接關機。相當於「-H」加上「-P」

﹡加上參數「-H」表示停止運行但不關機,直到使用者按下電源鍵才算是真正關機

﹡加上參數「-r」表示停止運行後重新開機

﹡加上參數「-P」表示執行完hitdown過程後便立即關機

﹡加上參數「+ <時間>」表示過了<時間>分後便執行shutdown指令

﹡關機前為確保快取記憶體有被寫入磁碟,最好先執行二到三次的「sync」指令再進行關機

﹡若要立即進行關機,使用「halt」指令可以代替使用「shutdown -h now」

﹡若要立即重新開機,使用「reboot」指令可以代替使用「shutdown -r now」


16.新增群組 addgroup


17.刪除群組 delgroup


18.新增使用者 adduser


19.刪除使用者 deluser

﹡通常執行時會加上「--remove-home」參數,表示一併移除此帳號的家目錄


20.修改密碼  passwd


21.預約執行at

﹡格式為「at <HH:MM>」

﹡執行「atq」指令可查詢目前系統上已建立的預約行程

﹡執行「atrm <佇列序號>」可刪除指定行程


22.定期執行 crontab

﹡設定格式為「<分鐘> <小時> <日期> <月份> <星期幾> <命令>」,「*」表示所有時間都可接受

﹡加上參數「-l」可列出目前已排程的行程表

﹡加上參數「-r」可移除所有的排程

﹡加上參數「-e」可編輯排程


23.背景執行 bg

﹡在執行指令時,若在命令列的最後面加上「&」符號,表示要將此命令放置背景執行,與執行「bg %<工作編號> 」指令效果相同

﹡若指令執行到一半,想將指令放到背景執行,可先按下CTRL+Z暫停程式的執行

﹡使用「jobs」指令,會列出目前使用者所執行的背景程式,並顯示這些程式的執行狀態


24.前景執行 fg


25.離線執行 nohup

﹡使用「cat nohup.out」指令可查詢離線執行的工作


26.服務管理 service

﹡格式為「service <服務名稱> <命令>」。允許的命令包括start、stop、restart

﹡執行「service --status-all」指令可查詢目前系統所有服務的啟動狀態。狀態若為「+」表示目前運作中;「-」表示未執行;「?」表示狀態不明



五.壓縮程式

1.tar

﹡單純以「tar」指令打包只能將一些檔案或目錄集合成一個檔案,但不進行壓縮

﹡格式為「tar cpf <目的檔案> <來源目錄或檔案>」。其中「c」參數表示打包檔案;「p」參數表示保留檔案原先的存取權限;「f」參數表示打包的結果要存成檔案

﹡若要解壓縮,則將參數「c」改為「x」。「x」參數表示解開已打包的檔案


2.gzip

﹡gzip只有壓縮功能,故需tar後才能壓縮

﹡附檔名為.gz

﹡解壓縮使用「gunzip」指令


3.bzip2

﹡bzip2只有壓縮功能,故需tar後才能壓縮

﹡附檔名為.bz2

﹡解壓縮使用「bunzip2」


4.zip

﹡解壓縮使用「unzip」

﹡可直接壓縮,不必tar打包

﹡若要壓縮的是目錄下所有的檔案,則應在目錄名稱後加上「/*」


5.rar

﹡壓縮使用「rar a xxx.rar <來源檔案或目錄>」指令

﹡解壓縮使用「rar x <壓縮檔案名稱>」指令



六.日期與時間

1.顯示目前系統時間 date


2.萬年曆 cal



七.網路指令

1.ifconfig:查詢網路的設定狀態,亦可用來設定IP位址,或是啟用、停止網路介面

﹡設定IP位址的指令格式為「ifconfig <網路介面代號> <IP Address> netmask <NET MASK>」

﹡啟用網路介面指令為「ifconfig <網路介面代號> up」

﹡停止網路介面指令為「ifconfig <網路介面代號> down」


2.route:查詢主機的路由表(routing table),也可用來指定預設路由器

﹡設定預設路由器指令為「route add default gw <IP Address>」


3.ping:提供網路檢測的功能,但Linux版本的「ping」不會自動停止,除非設定測試次數,否則會持續傳送ping封包,直到按下CTRL+C為止

﹡指定ping測試次數的指令為「ping -c <次數>」

﹡指定ping封包大小的指令為「ping -s <封包大小>」


4.traceroute:檢測網路的工具程式,會列出目前主機與被測主機之間所經過的所有路由器IP位址,並測試速度


5.netstat:查詢目前主機上有多少來自網路的連線,或是系統所開放的通訊埠有哪些

﹡加上參數「-a」可顯示所有的連線


6.hostname:顯示目前主機所設定的主機名稱

﹡加上參數「-fqdn」可顯示完整的主機名稱


7.wget:可直接從FTP或網站連結中下載檔案,或是用來下載整個網站作為離線閱讀之用

﹡加上參數「-c」可進行續傳

﹡加上參數「-q」可在下載過程中不顯示任何資訊


8.ftp:開啟FTP通訊協定以傳輸檔案


9.ncftp:為FTP的傳輸程式,支援書籤、續傳功能



八.驗證工具

1.MD5

﹡ 產生MD5檢查碼的指令為「md5sum」,格式為「md5sum <檔案>」


2.SHA-1

﹡ 產生SHA-1檢查碼的指令為「sha1sum」,格式為「sha1sum <檔案>」


3.SHA-2

﹡ 產生SHA-2檢查碼的指令為「sha256sum」,格式為「sha256sum <檔案>」



九.別名 alias

設定別名能讓任何指令加上參數,以使用者自行定義的方式做連結,如「ls -l」,可設定為「lls」

﹡格式為「alias <別名名稱>=’<原指令>’」

﹡使用「unalias <別名名稱>」可取消別名的設定



十.SHELL簡介

SHELL:提供介面供使用者操作電腦的特殊程式

1.bash:包含自動補齊指令、紀錄歷史命令、同時輸出導向


2.環境變數

﹡PATH決定執行指令時的搜尋路徑

﹡LS_COLORS決定ls執行時如何已不同的色彩顯示檔案的屬性

﹡使用「env」指令可查詢系統目前所有的環境變數

﹡使用「echo $<變數名稱>」指令可只顯示單一環境變數

﹡使用「echo $USER」指令可查詢目前使用者的名稱

﹡使用「echo $PWD」指令可顯示目前的工作路徑

﹡使用「export <變數名稱> = “<變數內容>”」指令可設定環境變數

﹡使用「unset <變數名稱>」可消除環境變數的設定


3.提示字元:Shell提醒使用者目前可以輸入指令的一小段字串


4.移動腳本(RC Files):bash執行時會先檢查系統上的特定檔案,即啟動腳本檔。若RC檔案存在,則會先執行這些檔案的內容。通常這些檔案存放的是一些初始設定,如PATH環境變數


5.Shell Script:一種純文件檔案,檔案中的每一行都會被Shell視為是一個指令或動作而加以執行

﹡當撰寫完成後,務必以「chmod a+x <檔案名稱>」指令加上指令權限,此檔案才可執行

沒有留言:

張貼留言