2013年9月24日 星期二
2013年9月23日 星期一
Service-(2)
A Service is an application component that can perform
long-running operations in the background and does not provide a user interface.
一個應用程序可以啟動一個服務,服務會繼續在後台運行,即使用戶切換到另一個應用程序。
此外,一個component 可以綁定到服務,與它進行交互,甚至進行進程間通信(IPC)。例如,一個服務可以處理網絡交易,播放音樂,執行文件I / O等。
Service 可以以兩種形式存在:
一個應用程序可以啟動一個服務,服務會繼續在後台運行,即使用戶切換到另一個應用程序。
此外,一個component 可以綁定到服務,與它進行交互,甚至進行進程間通信(IPC)。例如,一個服務可以處理網絡交易,播放音樂,執行文件I / O等。
Service 可以以兩種形式存在:
- Started 當一個如Activity使用startService()來啟動一個Service,一旦Service啟動後,就不受啟動它的Activity控制, 可以在後台長期運行,通常這種Service在後台執行某個費時操作(如下載文件)不會向啟動它的Activity返回結果。
- Bound 為Activity或是其它程序部件使用bindService()來啟動Service。Bound Service提供了一種Client/Service方法允許調用Service的Activity與Service進行交互:發送請求,取得結果,並支持進程間通信。 一般Bound Service的生命週期和啟動它的Activity相同,多個Activity可以同時綁定一個Service。 當所有Activity 都斷開與Service之間的綁定時。Service自動結束。
Service-(1)
來源:http://blog.csdn.net/android_tutor/article/details/5789203
Service概念及用途:
與Activity不同,不能自己啟動的,運行在後台的程序,如果我們退出應用時,Service進程並沒有結束仍然在後台運行,那我們什麼時候會用到Service呢?
比如當我們一個應用的數據是通過網絡獲取的,不同時間(一段時間)的數據是不同的這時候我們可以用Service在後台定時更新,而不用每打開應用的時候在去獲取。
Service生命週期 :
它只繼承了onCreate(),onStart(),onDestroy()三個方法,
當我們第一次啟動Service時,先後調用了onCreate(),onStart()這兩個方法,
當停止Service時,則執行onDestroy()方法,這裡需要注意的是,如果Service已經啟動了,當我們再次啟動Service時,不會在執行onCreate()方法,而是直接執行onStart()方法,具體的可以看下面的實例。
第一次啟動 Service => onCreate() => onStart()
再次啟動 Service => onStart()
停止 Service => onDestroy()
Service與Activity通信:
Service後端的數據最終還是要呈現在前端Activity之上的,因為啟動Service時,系統會重新開啟一個新的進程,當我們想獲取啟動的Service實例時,我們可以用到bindService 和onBindService方法,它們分別執行了Service中IBinder()和onUnbind()方法。
bindService : IBinder()
onBindService : onUnbind()
Service概念及用途:
與Activity不同,不能自己啟動的,運行在後台的程序,如果我們退出應用時,Service進程並沒有結束仍然在後台運行,那我們什麼時候會用到Service呢?
比如當我們一個應用的數據是通過網絡獲取的,不同時間(一段時間)的數據是不同的這時候我們可以用Service在後台定時更新,而不用每打開應用的時候在去獲取。
Service生命週期 :
它只繼承了onCreate(),onStart(),onDestroy()三個方法,
當我們第一次啟動Service時,先後調用了onCreate(),onStart()這兩個方法,
當停止Service時,則執行onDestroy()方法,這裡需要注意的是,如果Service已經啟動了,當我們再次啟動Service時,不會在執行onCreate()方法,而是直接執行onStart()方法,具體的可以看下面的實例。
第一次啟動 Service => onCreate() => onStart()
再次啟動 Service => onStart()
停止 Service => onDestroy()
Service與Activity通信:
Service後端的數據最終還是要呈現在前端Activity之上的,因為啟動Service時,系統會重新開啟一個新的進程,當我們想獲取啟動的Service實例時,我們可以用到bindService 和onBindService方法,它們分別執行了Service中IBinder()和onUnbind()方法。
bindService : IBinder()
onBindService : onUnbind()
第六章、Linux 的檔案權限與目錄配置
資料來源:http://linux.vbird.org/
使用者與群組
1.檔案擁有者
例如當你將你的e-mail情書轉存成檔案之後,放在你自己的家目錄,你總不希望被其他人看見自己的情書吧? 這個時候,你就把該檔案設定成『只有檔案擁有者,就是我,才能看與修改這個檔案的內容』, 那麼即使其他人知道你有這個相當『有趣』的檔案,不過由於你有設定適當的權限, 所以其他人自然也就無法知道該檔案的內容囉!
2.群組概念
當你在團隊開發資源的時候啦! 舉例來說,假設有兩組專題生在我的主機裡面,
第一個專題組別為projecta,裡面的成員有 class1, class2, class3
第二個專題組別為projectb,裡面的成員有class4, class5, class6
這兩個專題之間是有競爭性質的,但卻要繳交同一份報告。每組的組員之間必須要能夠互相修改對方的資料, 但是其他組的組員則不能看到本組自己的檔案內容,此時該如何是好?
在Linux底下可以經由檔案權限設定,限制非自己團隊(亦即是群組囉) 的其他人不能夠閱覽內容囉!而且亦可以讓自己的團隊成員可以修改我所建立的檔案! 同時,如果我自己還有私人隱密的文件,仍然可以設定成讓自己的團隊成員也看不到我的檔案資料。
另外,如果teacher這個帳號是projecta與projectb這兩個專題的老師, 他想要同時觀察兩者的進度,因此需要能夠進入這兩個群組的權限時,你可以設定teacher這個帳號, 『同時支援projecta與projectb這兩個群組!』,也就是說:每個帳號都可以有多個群組的支援呢!
3.其他人的概念
因此,我們就可以知道啦,在Linux裡面,任何一個檔案都具有『User, Group及Others』三種身份的個別權限, 我們可以將上面的說明以底下的圖示來解釋:
Linux 使用者身份與群組記錄的檔案
Linux系統中
系統上的帳號與一般身份使用者,記錄在/etc/passwd這個檔案。
個人的密碼,記錄在/etc/shadow這個檔案。
Linux所有的群組名稱,紀錄在/etc/group!
Linux 檔案權限概念
第一欄代表這個檔案的類型與權限(permission):
第一個字元代表這個檔案是『目錄、檔案或連結檔等等』:
[ r ]代表可讀(read)
[ w ]代表可寫(write)
[ x ]代表可執行(execute)。
要注意的是,這三個權限的位置不會改變,如果沒有權限,就會出現減號[ - ]而已。
假如是目錄,沒有權限x,代表不能進入
※目錄與檔案的權限意義並不相同
第二欄表示有多少檔名連結到此節點(i-node):
每個檔案都會將他的權限與屬性記錄到檔案系統的i-node中,不過,我們使用的目錄樹卻是使用檔名來記錄, 因此每個檔名就會連結到一個i-node囉!
這個屬性記錄的,就是有多少不同的檔名連結到相同的一個i-node號碼去就是了。
第三欄表示這個檔案(或目錄)的『擁有者帳號』
第四欄表示這個檔案的所屬群組
在Linux系統下,你的帳號會附屬於一個或多個的群組中。
舉剛剛我們提到的例子,class1, class2, class3均屬於projecta這個群組,假設某個檔案所屬的群組為projecta,且該檔案的權限如圖2.1.2所示(-rwxrwx---), 則class1, class2, class3三人對於該檔案都具有可讀、可寫、可執行的權限(看群組權限)。 但如果是不屬於projecta的其他帳號,對於此檔案就不具有任何權限了。
第五欄為這個檔案的容量大小,預設單位為bytes;
第六欄為這個檔案的建檔日期或者是最近的修改日期:
如何改變檔案屬性與權限
改變所屬群組, chgrp
要被改變的群組名稱必須要在/etc/group檔案內存在才行,否則就會顯示錯誤!
改變檔案擁有者, chown
使用者必須在/etc/passwd 這個檔案中有紀錄的使用者名稱才能改變。
改變權限, chmod
@數字類型改變檔案權限
r:4
w:2
x:1
owner = rwx = 4+2+1 = 7
group = rwx = 4+2+1 = 7
others= --- = 0+0+0 = 0
目錄與檔案之權限意義:
@權限對檔案的重要性
權限對目錄的重要性
目錄主要的內容在記錄檔名清單,檔名與目錄有強烈的關連啦!
Linux檔案種類與副檔名
正規檔案(regular file ):
第一個字元為 [ - ],又大略可以分為:
就是目錄囉~第一個屬性為 [ d ]。
連結檔(link):
就是類似Windows系統底下的捷徑啦! 第一個屬性為 [ l ](英文L的小寫)
設備與裝置檔(device):
與系統周邊及儲存等相關的一些檔案, 通常都集中在/dev這個目錄之下!
通常又分為兩種:
既然被稱為資料接口檔, 想當然爾,這種類型的檔案通常被用在網路上的資料承接了。我們可以啟動一個程式來監聽用戶端的要求, 而用戶端就可以透過這個socket來進行資料的溝通了。第一個屬性為 [ s ], 最常在/var/run這個目錄中看到這種檔案類型了。
資料輸送檔(FIFO, pipe):
FIFO也是一種特殊的檔案類型,他主要的目的在解決多個程序同時存取一個檔案所造成的錯誤問題。 FIFO是first-in-first-out的縮寫。第一個屬性為[p] 。
Linux檔案副檔名:
Linux的檔案是沒有所謂的『副檔名』的,一個Linux檔案能不能被執行,與他的第一欄的十個屬性有關, 與檔名根本一點關係也沒有。
在Linux底下,只要你的權限當中具有x的話即代表這個檔案可以被執行!
不過,可以被執行跟可以執行成功是不一樣的~舉例來說,在root家目錄下的install.log 是一個純文字檔,如果經由修改權限成為 -rwxrwxrwx 後,這個檔案能夠真的執行成功嗎? 當然不行~因為他的內容根本就沒有可以執行的資料。
所以說,這個x代表這個檔案具有可執行的能力, 但是能不能執行成功,當然就得要看該檔案的內容囉~
雖然如此,不過我們希望可以藉由副檔名來瞭解該檔案是什麼東西。底下有數種常用的副檔名:
Linux檔案長度限制:
在Linux底下,使用預設的Ext2/Ext3檔案系統時,針對檔案的檔名長度限制為:
Linux檔案名稱的限制:
由於Linux在文字介面下的一些指令操作關係,一般來說,你在設定Linux底下的檔案名稱時, 最好可以避免一些特殊字元比較好!例如底下這些:
由於指令下達當中,常常會使用到 -option 之類的選項, 所以你最好也避免將檔案檔名的開頭以 - 或 + 來命名啊!
Linux目錄配置
Linux目錄配置的依據--Filesystem Hierarchy Standard (FHS)
根據FHS(http://www.pathname.com/fhs/)的官方文件指出, 他們的主要目的是希望讓使用者可以瞭解到已安裝軟體通常放置於那個目錄下
FHS依據檔案系統使用的頻繁與否與是否允許使用者隨意更動, 而將目錄定義成為四種交互作用的形態
根目錄 (/) 的意義與內容:
所有的目錄都是由根目錄衍生出來, 同時也與開機/還原/系統修復等動作有關。
由於系統開機時需要特定的開機軟體、核心檔案、開機所需程式、 函式庫等等檔案資料,若系統出現錯誤時,根目錄也必須要包含有能夠修復檔案系統的程式才行。
因為根目錄是這麼的重要,所以在FHS的要求方面,他希望根目錄不要放在非常大的分割槽內, 因為越大的分割槽妳會放入越多的資料,如此一來根目錄所在分割槽就可能會有較多發生錯誤的機會。
因此FHS標準建議:根目錄(/)所在分割槽應該越小越好, 且應用程式所安裝的軟體最好不要與根目錄放在同一個分割槽內,保持根目錄越小越好。
如此不但效能較佳,根目錄所在的檔案系統也較不容易發生問題。
有鑑於上述的說明,因此FHS定義出根目錄(/)底下應該要有底下這些次目錄的存在才好:
除了這些目錄的內容之外,另外要注意的是,因為根目錄與開機有關,開機過程中僅有根目錄會被掛載, 其他分割槽則是在開機完成之後才會持續的進行掛載的行為。
就是因為如此,因此根目錄下與開機過程有關的目錄, 就不能夠與根目錄放到不同的分割槽去!那哪些目錄不可與根目錄分開呢?有底下這些:
/usr 的意義與內容:
/usr裡面放置的資料屬於可分享的與不可變動的(shareable, static)
很多讀者都會誤會/usr為user的縮寫,其實usr是Unix Software Resource的縮寫, 也就是『Unix作業系統軟體資源』所放置的目錄,而不是使用者的資料啦。
FHS建議所有軟體開發者,應該將他們的資料合理的分別放置到這個目錄下的次目錄,而不要自行建立該軟體自己獨立的目錄。
因為是所有系統預設的軟體(distribution發佈者提供的軟體)都會放置到/usr底下,因此這個目錄有點類似Windows 系統的『C:\Windows\ (當中的一部份) + C:\Program files\』這兩個目錄的綜合體,系統剛安裝完畢時,這個目錄會佔用最多的硬碟容量。
一般來說,/usr的次目錄建議有底下這些:
/var 的意義與內容:
如果/usr是安裝時會佔用較大硬碟容量的目錄,那麼/var就是在系統運作後才會漸漸佔用硬碟容量的目錄。
因為/var目錄主要針對常態性變動的檔案,包括快取(cache)、登錄檔(log file)以及某些軟體運作所產生的檔案, 包括程序檔案(lock file, run file),或者例如MySQL資料庫的檔案等等。常見的次目錄有
針對FHS,各家distributions的異同
由於FHS僅是定義出最上層(/)及次層(/usr, /var)的目錄內容應該要放置的檔案或目錄資料, 因此,在其他次目錄層級內,就可以隨開發者自行來配置了。
舉例來說,CentOS的網路設定資料放在 /etc/sysconfig/network-scripts/ 目錄下,但是SuSE則是將網路放置在 /etc/sysconfig/network/ 目錄下,目錄名稱可是不同的呢!不過只要記住大致的FHS標準,差異性其實有限啦!
目錄樹(directory tree)
這個/selinux是Secure Enhance Linux(SELinux)的執行目錄, 而SELinux是Linux核心的重要外掛功能之一,他可以用來作為細部權限的控管,主要針對程序(尤其是網路程序)的存取權限來限制。
絕對路徑與相對路徑
因為根據檔名寫法的不同,也可將所謂的路徑(path)定義為絕對路徑(absolute)與相對路徑(relative)。
CentOS 的觀察
某些時刻你可能想要知道你的 distribution 使用的是那個 Linux 標準 (Linux Standard Base), 而且我們也知道 distribution 使用的都是 Linux 的核心!
使用者與群組
1.檔案擁有者
例如當你將你的e-mail情書轉存成檔案之後,放在你自己的家目錄,你總不希望被其他人看見自己的情書吧? 這個時候,你就把該檔案設定成『只有檔案擁有者,就是我,才能看與修改這個檔案的內容』, 那麼即使其他人知道你有這個相當『有趣』的檔案,不過由於你有設定適當的權限, 所以其他人自然也就無法知道該檔案的內容囉!
2.群組概念
當你在團隊開發資源的時候啦! 舉例來說,假設有兩組專題生在我的主機裡面,
第一個專題組別為projecta,裡面的成員有 class1, class2, class3
第二個專題組別為projectb,裡面的成員有class4, class5, class6
這兩個專題之間是有競爭性質的,但卻要繳交同一份報告。每組的組員之間必須要能夠互相修改對方的資料, 但是其他組的組員則不能看到本組自己的檔案內容,此時該如何是好?
在Linux底下可以經由檔案權限設定,限制非自己團隊(亦即是群組囉) 的其他人不能夠閱覽內容囉!而且亦可以讓自己的團隊成員可以修改我所建立的檔案! 同時,如果我自己還有私人隱密的文件,仍然可以設定成讓自己的團隊成員也看不到我的檔案資料。
另外,如果teacher這個帳號是projecta與projectb這兩個專題的老師, 他想要同時觀察兩者的進度,因此需要能夠進入這兩個群組的權限時,你可以設定teacher這個帳號, 『同時支援projecta與projectb這兩個群組!』,也就是說:每個帳號都可以有多個群組的支援呢!
3.其他人的概念
因此,我們就可以知道啦,在Linux裡面,任何一個檔案都具有『User, Group及Others』三種身份的個別權限, 我們可以將上面的說明以底下的圖示來解釋:
Linux 使用者身份與群組記錄的檔案
Linux系統中
系統上的帳號與一般身份使用者,記錄在/etc/passwd這個檔案。
個人的密碼,記錄在/etc/shadow這個檔案。
Linux所有的群組名稱,紀錄在/etc/group!
Linux 檔案權限概念
[root@www ~]# ls -al total 156 drwxr-x--- 4 root root 4096 Sep 8 14:06 . drwxr-xr-x 23 root root 4096 Sep 8 14:21 .. -rw------- 1 root root 1474 Sep 4 18:27 anaconda-ks.cfg -rw------- 1 root root 199 Sep 8 17:14 .bash_history -rw-r--r-- 1 root root 24 Jan 6 2007 .bash_logout -rw-r--r-- 1 root root 191 Jan 6 2007 .bash_profile -rw-r--r-- 1 root root 176 Jan 6 2007 .bashrc -rw-r--r-- 1 root root 100 Jan 6 2007 .cshrc drwx------ 3 root root 4096 Sep 5 10:37 .gconf <=範例說明處 drwx------ 2 root root 4096 Sep 5 14:09 .gconfd -rw-r--r-- 1 root root 42304 Sep 4 18:26 install.log <=範例說明處 -rw-r--r-- 1 root root 5661 Sep 4 18:25 install.log.syslog [ 1 ][ 2 ][ 3 ][ 4 ][ 5 ][ 6 ][ 7 ] [ 權限 ][連結][擁有者][群組][檔案容量][ 修改日期 ][ 檔名 ]
第一欄代表這個檔案的類型與權限(permission):
第一個字元代表這個檔案是『目錄、檔案或連結檔等等』:
- 當為[ d ]則是目錄,例如上表檔名為『.gconf』的那一行;
- 當為[ - ]則是檔案,例如上表檔名為『install.log』那一行;
- 若是[ l ]則表示為連結檔(link file)
- 若是[ b ]則表示為裝置檔裡面的可供儲存的周邊設備(可隨機存取裝置);
- 若是[ c ]則表示為裝置檔裡面的序列埠設備,例如鍵盤、滑鼠(一次性讀取裝置)。
[ r ]代表可讀(read)
[ w ]代表可寫(write)
[ x ]代表可執行(execute)。
要注意的是,這三個權限的位置不會改變,如果沒有權限,就會出現減號[ - ]而已。
假如是目錄,沒有權限x,代表不能進入
※目錄與檔案的權限意義並不相同
第二欄表示有多少檔名連結到此節點(i-node):
每個檔案都會將他的權限與屬性記錄到檔案系統的i-node中,不過,我們使用的目錄樹卻是使用檔名來記錄, 因此每個檔名就會連結到一個i-node囉!
這個屬性記錄的,就是有多少不同的檔名連結到相同的一個i-node號碼去就是了。
第三欄表示這個檔案(或目錄)的『擁有者帳號』
第四欄表示這個檔案的所屬群組
在Linux系統下,你的帳號會附屬於一個或多個的群組中。
舉剛剛我們提到的例子,class1, class2, class3均屬於projecta這個群組,假設某個檔案所屬的群組為projecta,且該檔案的權限如圖2.1.2所示(-rwxrwx---), 則class1, class2, class3三人對於該檔案都具有可讀、可寫、可執行的權限(看群組權限)。 但如果是不屬於projecta的其他帳號,對於此檔案就不具有任何權限了。
第五欄為這個檔案的容量大小,預設單位為bytes;
第六欄為這個檔案的建檔日期或者是最近的修改日期:
如何改變檔案屬性與權限
- chgrp :改變檔案所屬群組
- chown :改變檔案擁有者
- chmod :改變檔案的權限, SUID, SGID, SBIT等等的特性
改變所屬群組, chgrp
要被改變的群組名稱必須要在/etc/group檔案內存在才行,否則就會顯示錯誤!
[root@www ~]# chgrp [-R] dirname/filename ...
選項與參數:
-R : 進行遞迴(recursive)的持續變更,亦即連同次目錄下的所有檔案、目錄
都更新成為這個群組之意。常常用在變更某一目錄內所有的檔案之情況。
範例:
[root@www ~]# chgrp users install.log
[root@www ~]# ls -l
-rw-r--r-- 1 root users 68495 Jun 25 08:53 install.log
[root@www ~]# chgrp testing install.log
chgrp: invalid group name `testing' <== 發生錯誤訊息囉~找不到這個群組名~
改變檔案擁有者, chown
使用者必須在/etc/passwd 這個檔案中有紀錄的使用者名稱才能改變。
[root@www ~]# chown [-R] 帳號名稱 檔案或目錄 [root@www ~]# chown [-R] 帳號名稱:群組名稱 檔案或目錄 選項與參數: -R : 進行遞迴(recursive)的持續變更,亦即連同次目錄下的所有檔案都變更 範例:將install.log的擁有者改為bin這個帳號: [root@www ~]# chown bin install.log [root@www ~]# ls -l -rw-r--r-- 1 bin users 68495 Jun 25 08:53 install.log 範例:將install.log的擁有者與群組改回為root: [root@www ~]# chown root:root install.log [root@www ~]# ls -l -rw-r--r-- 1 root root 68495 Jun 25 08:53 install.log #事實上,chown也可以使用『chown user.group file』,亦即在擁有者與群組間加上小數點『.』也行! #不過很多朋友設定帳號時,喜歡在帳號當中加入小數點(例如vbird.tsai這樣的帳號格式),這就會造成系統的誤判了! #所以我們比較建議使用冒號『:』來隔開擁有者與群組啦!此外,chown也能單純的修改所屬群組呢! #例如『chown .sshd install.log』就是修改群組~看到了嗎?就是那個小數點的用途!常見的例子就是在複製檔案給你之外的其他人時, 我們使用最簡單的cp指令來說明好了:
#假設你今天要將.bashrc這個檔案拷貝成為.bashrc_test檔名,且是要給bin這個人,你可以這樣做: [root@www ~]# cp .bashrc .bashrc_test [root@www ~]# ls -al .bashrc* -rw-r--r-- 1 root root 395 Jul 4 11:45 .bashrc -rw-r--r-- 1 root root 395 Jul 13 11:31 .bashrc_test <==新檔案的屬性沒變 #由於複製行為(cp)會複製執行者的屬性與權限,.bashrc_test還是屬於root所擁有, #即使你將檔案拿給bin這個使用者了,那他仍然無法修改的, #所以你就必須要將這個檔案的擁有者與群組修改一下囉!
改變權限, chmod
@數字類型改變檔案權限
r:4
w:2
x:1
owner = rwx = 4+2+1 = 7
group = rwx = 4+2+1 = 7
others= --- = 0+0+0 = 0
[root@www ~]# ls -al .bashrc -rw-r--r-- 1 root root 395 Jul 4 11:45 .bashrc [root@www ~]# chmod 777 .bashrc [root@www ~]# ls -al .bashrc -rwxrwxrwx 1 root root 395 Jul 4 11:45 .bashrc@符號類型改變檔案權限
| chmod | u g o a |
+(加入) -(除去) =(設定) |
r w x | 檔案或目錄 |
[root@www ~]# chmod u=rwx,go=rx .bashrc # 注意喔!那個 u=rwx,go=rx 是連在一起的,中間並沒有任何空白字元! [root@www ~]# ls -al .bashrc -rwxr-xr-x 1 root root 395 Jul 4 11:45 .bashrc [root@www ~]# ls -al .bashrc -rwxr-xr-x 1 root root 395 Jul 4 11:45 .bashrc [root@www ~]# chmod a+w .bashrc [root@www ~]# ls -al .bashrc -rwxrwxrwx 1 root root 395 Jul 4 11:45 .bashrc [root@www ~]# chmod a-x .bashrc [root@www ~]# ls -al .bashrc -rw-rw-rw- 1 root root 395 Jul 4 11:45 .bashrc
目錄與檔案之權限意義:
@權限對檔案的重要性
- r (read):可讀取此一檔案的實際內容,如讀取文字檔的文字內容等;
- w (write):可以編輯、新增或者是修改該檔案的內容(但不含刪除該檔案);
- x (eXecute):該檔案具有可以被系統執行的權限。
權限對目錄的重要性
目錄主要的內容在記錄檔名清單,檔名與目錄有強烈的關連啦!
- r (read contents in directory):
表示具有讀取目錄結構清單的權限,所以當你具有讀取(r)一個目錄的權限時,表示你可以查詢該目錄下的檔名資料。 所以你就可以利用 ls 這個指令將該目錄的內容列表顯示出來! - w (modify contents of directory):
這個可寫入的權限對目錄來說,是很了不起的! 因為他表示你具有異動該目錄結構清單的權限,也就是底下這些權限:- 建立新的檔案與目錄;
- 刪除已經存在的檔案與目錄(不論該檔案的權限為何!)
- 將已存在的檔案或目錄進行更名;
- 搬移該目錄內的檔案、目錄位置。
總之,目錄的w權限就與該目錄底下的檔名異動有關就對了啦! - x (access directory):
咦!目錄的執行權限有啥用途啊?目錄只是記錄檔名而已,總不能拿來執行吧?沒錯!目錄不可以被執行,目錄的x代表的是使用者能否進入該目錄成為工作目錄的用途! 所謂的工作目錄(work directory)就是你目前所在的目錄啦!舉例來說,當你登入Linux時, 你所在的家目錄就是你當下的工作目錄。而變換目錄的指令是『cd』(change directory)囉!
Linux檔案種類與副檔名
正規檔案(regular file ):
第一個字元為 [ - ],又大略可以分為:
- 純文字檔(ASCII):
舉例來說,你可以下達『 cat ~/.bashrc 』就可以看到該檔案的內容。
- 二進位檔(binary):舉例來說,剛剛下達的指令cat就是一個binary file。
- 資料格式檔(data): 舉例來說,我們的Linux在使用者登入時,都會將登錄的資料記錄在 /var/log/wtmp那個檔案內,該檔案是一個data file,他能夠透過last這個指令讀出來! 但是使用cat時,會讀出亂碼~因為他是屬於一種特殊格式的檔案。瞭乎?
就是目錄囉~第一個屬性為 [ d ]。
連結檔(link):
就是類似Windows系統底下的捷徑啦! 第一個屬性為 [ l ](英文L的小寫)
設備與裝置檔(device):
與系統周邊及儲存等相關的一些檔案, 通常都集中在/dev這個目錄之下!
通常又分為兩種:
- 區塊(block)設備檔 :舉例來說,硬碟與軟碟等就是啦!
你可以隨機的在硬碟的不同區塊讀寫,這種裝置就是區塊裝置囉!你可以自行查一下/dev/sda看看,
會發現第一個屬性為[ b ]喔!
- 字元(character)設備檔:亦即是一些序列埠的周邊設備, 例如鍵盤、滑鼠等等!這些設備的特色就是『一次性讀取』的,不能夠截斷輸出。 舉例來說,你不可能讓滑鼠『跳到』另一個畫面,而是『滑動』到另一個地方啊!第一個屬性為 [ c ]。
既然被稱為資料接口檔, 想當然爾,這種類型的檔案通常被用在網路上的資料承接了。我們可以啟動一個程式來監聽用戶端的要求, 而用戶端就可以透過這個socket來進行資料的溝通了。第一個屬性為 [ s ], 最常在/var/run這個目錄中看到這種檔案類型了。
資料輸送檔(FIFO, pipe):
FIFO也是一種特殊的檔案類型,他主要的目的在解決多個程序同時存取一個檔案所造成的錯誤問題。 FIFO是first-in-first-out的縮寫。第一個屬性為[p] 。
Linux檔案副檔名:
Linux的檔案是沒有所謂的『副檔名』的,一個Linux檔案能不能被執行,與他的第一欄的十個屬性有關, 與檔名根本一點關係也沒有。
在Linux底下,只要你的權限當中具有x的話即代表這個檔案可以被執行!
不過,可以被執行跟可以執行成功是不一樣的~舉例來說,在root家目錄下的install.log 是一個純文字檔,如果經由修改權限成為 -rwxrwxrwx 後,這個檔案能夠真的執行成功嗎? 當然不行~因為他的內容根本就沒有可以執行的資料。
所以說,這個x代表這個檔案具有可執行的能力, 但是能不能執行成功,當然就得要看該檔案的內容囉~
雖然如此,不過我們希望可以藉由副檔名來瞭解該檔案是什麼東西。底下有數種常用的副檔名:
- *.sh : 腳本或批次檔 (scripts),因為批次檔為使用shell寫成的,所以副檔名就編成 .sh 囉;
- *Z, *.tar, *.tar.gz, *.zip, *.tgz: 經過打包的壓縮檔。這是因為壓縮軟體分別為 gunzip,
tar 等等的,由於不同的壓縮軟體,而取其相關的副檔名囉!
- *.html, *.php:網頁相關檔案,分別代表 HTML 語法與 PHP 語法的網頁檔案囉! .html 的檔案可使用網頁瀏覽器來直接開啟,至於 .php 的檔案, 則可以透過 client 端的瀏覽器來 server 端瀏覽,以得到運算後的網頁結果呢!
Linux檔案長度限制:
在Linux底下,使用預設的Ext2/Ext3檔案系統時,針對檔案的檔名長度限制為:
- 單一檔案或目錄的最大容許檔名為 255 個字元;
- 包含完整路徑名稱及目錄 (/) 之完整檔名為 4096 個字元。
Linux檔案名稱的限制:
由於Linux在文字介面下的一些指令操作關係,一般來說,你在設定Linux底下的檔案名稱時, 最好可以避免一些特殊字元比較好!例如底下這些:
* ? > < ; & ! [ ] | \ ' " ` ( ) { }檔案名稱的開頭為小數點『.』時, 代表這個檔案為『隱藏檔』喔!
由於指令下達當中,常常會使用到 -option 之類的選項, 所以你最好也避免將檔案檔名的開頭以 - 或 + 來命名啊!
Linux目錄配置
Linux目錄配置的依據--Filesystem Hierarchy Standard (FHS)
根據FHS(http://www.pathname.com/fhs/)的官方文件指出, 他們的主要目的是希望讓使用者可以瞭解到已安裝軟體通常放置於那個目錄下
FHS依據檔案系統使用的頻繁與否與是否允許使用者隨意更動, 而將目錄定義成為四種交互作用的形態
| 可分享的(shareable) | 不可分享的(unshareable) | |
| 不變的(static) | /usr (軟體放置處) | /etc (設定檔) |
| /opt (第三方協力軟體) | /boot (開機與核心檔) | |
| 可變動的(variable) | /var/mail (使用者郵件信箱) | /var/run (程序相關) |
| /var/spool/news (新聞群組) | /var/lock (程序相關) |
- 可分享的:可以分享給其他系統掛載使用的目錄,所以包括執行檔與使用者的郵件等資料,
是能夠分享給網路上其他主機掛載用的目錄;
- 不可分享的:自己機器上面運作的裝置檔案或者是與程序有關的socket檔案等,
由於僅與自身機器有關,所以當然就不適合分享給其他主機了。
- 不變的:有些資料是不會經常變動的,跟隨著distribution而不變動。
例如函式庫、文件說明檔、系統管理員所管理的主機服務設定檔等等;
- 可變動的:經常改變的資料,例如登錄檔、一般用戶可自行收受的新聞群組等。
- / (根目錄)
- /home (使用者放資料的地方,也就是 Windows 的 C:\Documents and settings\)
- /etc (存放全系統設定檔的地方)
- /media (額外磁區的位置,像是隨身碟、SD 卡會掛載到這個目錄底下,也可以想成是 Windows 的 D, E 等槽)
- /usr (放一般通用程式的地方)
- /opt (放廠商自己開發程式的地方,像是 EeePC 的選單程式)
- / (根目錄):與開機系統有關;
- /usr (unix software resource):與軟體安裝/執行有關;
- /var (variable):與系統運作過程有關。
根目錄 (/) 的意義與內容:
所有的目錄都是由根目錄衍生出來, 同時也與開機/還原/系統修復等動作有關。
由於系統開機時需要特定的開機軟體、核心檔案、開機所需程式、 函式庫等等檔案資料,若系統出現錯誤時,根目錄也必須要包含有能夠修復檔案系統的程式才行。
因為根目錄是這麼的重要,所以在FHS的要求方面,他希望根目錄不要放在非常大的分割槽內, 因為越大的分割槽妳會放入越多的資料,如此一來根目錄所在分割槽就可能會有較多發生錯誤的機會。
因此FHS標準建議:根目錄(/)所在分割槽應該越小越好, 且應用程式所安裝的軟體最好不要與根目錄放在同一個分割槽內,保持根目錄越小越好。
如此不但效能較佳,根目錄所在的檔案系統也較不容易發生問題。
有鑑於上述的說明,因此FHS定義出根目錄(/)底下應該要有底下這些次目錄的存在才好:
| 目錄 | 應放置檔案內容 |
| /bin | 系統有很多放置執行檔的目錄,但/bin比較特殊。因為/bin放置的是在單人維護模式下還能夠被操作的指令。 在/bin底下的指令可以被root與一般帳號所使用,主要有:cat, chmod, chown, date, mv, mkdir, cp, bash等等常用的指令。 |
| /boot |
放置開機會使用到的檔案,包括Linux核心檔案以及開機選單與開機所需設定檔等等。
Linux kernel常用的檔名為:vmlinuz,如果使用的是grub這個開機管理程式, 則還會存在/boot/grub/這個目錄喔! ※CentOS 有/boot/grub/ |
| /dev |
任何裝置與周邊設備都是以檔案的型態存在於這個目錄當中的。
你只要透過存取這個目錄底下的某個檔案,就等於存取某個裝置囉~ 比要重要的檔案有/dev/null, /dev/zero, /dev/tty, /dev/lp*, /dev/hd*, /dev/sd*等等 |
| /etc |
系統主要的設定檔幾乎都放置在這個目錄內,例如人員的帳號密碼檔、
各種服務的啟始檔等等。 一般來說,這個目錄下的各檔案屬性是可以讓一般使用者查閱的, 但是只有root有權力修改。 FHS建議不要放置可執行檔(binary)在這個目錄中喔。 比較重要的檔案有: /etc/inittab, /etc/init.d/, /etc/modprobe.conf, /etc/X11/, /etc/fstab, /etc/sysconfig/ 等等。 另外,其下重要的目錄有:
|
| /home |
這是系統預設的使用者家目錄(home directory)。 在你新增一個一般使用者帳號時, 預設的使用者家目錄都會規範到這裡來。比較重要的是,家目錄有兩種代號喔: ~:代表目前這個使用者的家目錄,而 ~dmtsai :則代表 dmtsai 的家目錄! |
| /lib |
系統的函式庫非常的多,而/lib放置的則是在開機時會用到的函式庫,
以及在/bin或/sbin底下的指令會呼叫的函式庫而已。
什麼是函式庫呢?妳可以將他想成是『外掛』,某些指令必須要有這些『外掛』才能夠順利完成程式的執行之意。 尤其重要的是/lib/modules/這個目錄, 因為該目錄會放置核心相關的模組(驅動程式)喔! |
| /media |
media是『媒體』的英文,顧名思義,這個/media底下放置的就是可移除的裝置啦!
包括軟碟、光碟、DVD等等裝置都暫時掛載於此。常 見的檔名有:/media/floppy, /media/cdrom等等。 |
| /mnt | 如果妳想要暫時掛載某些額外的裝置,一般建議妳可以放置到這個目錄中。 在古早時候,這個目錄的用途與/media相同啦!只是有了/media之後,這個目錄就用來暫時掛載用了。 |
| /opt |
這個是給第三方協力軟體放置的目錄。 什麼是第三方協力軟體啊? 舉例來說,KDE這個桌面管理系統是一個獨立的計畫,不過他可以安裝到Linux系統中,因此KDE的軟體就建議放置到此目錄下了。 另外,如果妳想要自行安裝額外的軟體(非原本的distribution提供的),那麼也能夠將你的軟體安裝到這裡來。 以前的Linux系統中,我們還是習慣放置在/usr/local目錄下呢! |
| /root | 系統管理員(root)的家目錄。之所以放在這裡,是因為如果進入單人維護模式而僅掛載根目錄時, 該目錄就能夠擁有root的家目錄,所以我們會希望root的家目錄與根目錄放置在同一個分割槽中。 |
| /sbin |
Linux有非常多指令是用來設定系統環境的,這些指令只有root才能夠利用來『設定』系統,其他使用者最多只能用來『查詢』而已。
放在/sbin底下的為開機過程中所需要的,裡面包括了開機、修復、還原系統所需要的指令。 至於某些伺服器軟體程式,一般則放置到/usr/sbin/當中。至於本機自行安裝的軟體所產生的系統執行檔(system binary), 則放置到/usr/local/sbin/當中了。常見的指令包括:fdisk, fsck, ifconfig, init, mkfs等等。 |
| /srv |
srv可以視為『service』的縮寫,是一些網路服務啟動之後,這些服務所需要取用的資料目錄。
常見的服務例如WWW, FTP等等。舉例來說,WWW伺服器需要的網頁資料就可以放置在/srv/www/裡面。 |
| /tmp |
這是讓一般使用者或者是正在執行的程序暫時放置檔案的地方。
這個目錄是任何人都能夠存取的,所以你需要定期的清理一下。當然,重要資料不可放置在此目錄啊! 因為FHS甚至建議在開機時,應該要將/tmp下的資料都刪除唷! |
| 目錄 | 應放置檔案內容 |
| /lost+found |
這個目錄是使用標準的ext2/ext3檔案系統格式才會產生的一個目錄,目的在於當檔案系統發生錯誤時,
將一些遺失的片段放置到這個目錄下。 這個目錄通常會在分割槽的最頂層存在, 例如你加裝一顆硬碟於/disk中,那在這個系統下就會自動產生一個這樣的目錄『/disk/lost+found』 |
| /proc |
這個目錄本身是一個『虛擬檔案系統(virtual filesystem)』喔!他放置的資料都是在記憶體當中,
例如系統核心、行程資訊(process)、周邊裝置的狀態及網路狀態等等。 因為這個目錄下的資料都是在記憶體當中, 所以本身不佔任何硬碟空間啊!比較重要的檔案例如:/proc/cpuinfo, /proc/dma, /proc/interrupts, /proc/ioports, /proc/net/* 等等。 |
| /sys |
這個目錄其實跟/proc非常類似,也是一個虛擬的檔案系統,主要也是記錄與核心相關的資訊。
包括目前已載入的核心模組與核心偵測到的硬體裝置資訊等等。這個目錄同樣不佔硬碟容量喔! |
除了這些目錄的內容之外,另外要注意的是,因為根目錄與開機有關,開機過程中僅有根目錄會被掛載, 其他分割槽則是在開機完成之後才會持續的進行掛載的行為。
就是因為如此,因此根目錄下與開機過程有關的目錄, 就不能夠與根目錄放到不同的分割槽去!那哪些目錄不可與根目錄分開呢?有底下這些:
- /etc:設定檔
- /bin:重要執行檔
- /sbin:重要的系統執行檔
- /dev:所需要的裝置檔案
- /lib:執行檔所需的函式庫與核心所需的模組
/usr 的意義與內容:
/usr裡面放置的資料屬於可分享的與不可變動的(shareable, static)
很多讀者都會誤會/usr為user的縮寫,其實usr是Unix Software Resource的縮寫, 也就是『Unix作業系統軟體資源』所放置的目錄,而不是使用者的資料啦。
FHS建議所有軟體開發者,應該將他們的資料合理的分別放置到這個目錄下的次目錄,而不要自行建立該軟體自己獨立的目錄。
因為是所有系統預設的軟體(distribution發佈者提供的軟體)都會放置到/usr底下,因此這個目錄有點類似Windows 系統的『C:\Windows\ (當中的一部份) + C:\Program files\』這兩個目錄的綜合體,系統剛安裝完畢時,這個目錄會佔用最多的硬碟容量。
一般來說,/usr的次目錄建議有底下這些:
| 目錄 | 應放置檔案內容 |
| /usr/X11R6/ | 為X Window System重要資料所放置的目錄,之所以取名為X11R6是因為最後的X版本為第11版,且該版的第6次釋出之意。 |
| /usr/bin/ | 絕大部分的使用者可使用指令都放在這裡!請注意到他與/bin的不同之處。(是否與開機過程有關) |
| /usr/include/ | c/c++等程式語言的檔頭(header)與包含檔(include)放置處,當我們以tarball方式 (*.tar.gz 的方式安裝軟體)安裝某些資料時,會使用到裡頭的許多包含檔喔! |
| /usr/lib/ | 包含各應用軟體的函式庫、目標檔案(object file),以及不被一般使用者慣用的執行檔或腳本(script)。 某些軟體會提供一些特殊的指令來進行伺服器的設定,這些指令也不會經常被系統管理員操作, 那就會被擺放到這個目錄下啦。要注意的是,如果你使用的是X86_64的Linux系統, 那可能會有/usr/lib64/目錄產生喔! |
| /usr/local/ |
系統管理員在本機自行安裝自己下載的軟體(非distribution預設提供者),建議安裝到此目錄,
這樣會比較便於管理。 舉例來說,你的distribution提供的軟體較舊,你想安裝較新的軟體但又不想移除舊版, 此時你可以將新版軟體安裝於/usr/local/目錄下,可與原先的舊版軟體有分別啦! 你可以自行到/usr/local去看看,該目錄下也是具有bin, etc, include, lib...的次目錄喔! |
| /usr/sbin/ | 非系統正常運作所需要的系統指令。最常見的就是某些網路伺服器軟體的服務指令(daemon)囉! |
| /usr/share/ |
放置共享文件的地方,在這個目錄下放置的資料幾乎是不分硬體架構均可讀取的資料,
因為幾乎都是文字檔案嘛!在此目錄下常見的還有這些次目錄:
|
| /usr/src/ | 一般原始碼建議放置到這裡,src有source的意思。至於核心原始碼則建議放置到/usr/src/linux/目錄下。 |
/var 的意義與內容:
如果/usr是安裝時會佔用較大硬碟容量的目錄,那麼/var就是在系統運作後才會漸漸佔用硬碟容量的目錄。
因為/var目錄主要針對常態性變動的檔案,包括快取(cache)、登錄檔(log file)以及某些軟體運作所產生的檔案, 包括程序檔案(lock file, run file),或者例如MySQL資料庫的檔案等等。常見的次目錄有
| 目錄 | 應放置檔案內容 |
| /var/cache/ | 應用程式本身運作過程中會產生的一些暫存檔; |
| /var/lib/ |
程式本身執行的過程中,需要使用到的資料檔案放置的目錄。在此目錄下各自的軟體應該要有各自的目錄。
舉例來說,MySQL的資料庫放置到/var/lib/mysql/而rpm的資料庫則放到/var/lib/rpm去! |
| /var/lock/ |
某些裝置或者是檔案資源一次只能被一個應用程式所使用,如果同時有兩個程式使用該裝置時,
就可能產生一些錯誤的狀況,因此就得要將該裝置上鎖(lock),以確保該裝置只會給單一軟體所使用。
舉例來說,燒錄機正在燒錄一塊光碟,你想一下,會不會有兩個人同時在使用一個燒錄機燒片? 如果兩個人同時燒錄,那片子寫入的是誰的資料?所以當第一個人在燒錄時該燒錄機就會被上鎖, 第二個人就得要該裝置被解除鎖定(就是前一個人用完了)才能夠繼續使用囉。 |
| /var/log/ | 重要到不行!這是登錄檔放置的目錄!裡面比較重要的檔案如/var/log/messages, /var/log/wtmp(記錄登入者的資訊)等。 |
| /var/mail/ | 放置個人電子郵件信箱的目錄,不過這個目錄也被放置到/var/spool/mail/目錄中! 通常這兩個目錄是互為連結檔啦! |
| /var/run/ | 某些程式或者是服務啟動後,會將他們的PID放置在這個目錄下喔! 至於PID的意義我們會在後續章節提到的。 |
| /var/spool/ |
這個目錄通常放置一些佇列資料,所謂的『佇列』就是排隊等待其他程式使用的資料啦!
這些資料被使用後通常都會被刪除。 舉例來說,系統收到新信會放置到/var/spool/mail/中, 但使用者收下該信件後該封信原則上就會被刪除。信件如果暫時寄不出去會被放到/var/spool/mqueue/中, 等到被送出後就被刪除。如果是工作排程資料(crontab),就會被放置到/var/spool/cron/目錄中! |
針對FHS,各家distributions的異同
由於FHS僅是定義出最上層(/)及次層(/usr, /var)的目錄內容應該要放置的檔案或目錄資料, 因此,在其他次目錄層級內,就可以隨開發者自行來配置了。
舉例來說,CentOS的網路設定資料放在 /etc/sysconfig/network-scripts/ 目錄下,但是SuSE則是將網路放置在 /etc/sysconfig/network/ 目錄下,目錄名稱可是不同的呢!不過只要記住大致的FHS標準,差異性其實有限啦!
目錄樹(directory tree)
- 目錄樹的啟始點為根目錄 (/, root);
- 每一個目錄不止能使用本地端的 partition 的檔案系統,也可以使用網路上的 filesystem 。舉例來說, 可以利用 Network File System (NFS) 伺服器掛載某特定目錄等。
- 每一個檔案在此目錄樹中的檔名(包含完整路徑)都是獨一無二的。
這個/selinux是Secure Enhance Linux(SELinux)的執行目錄, 而SELinux是Linux核心的重要外掛功能之一,他可以用來作為細部權限的控管,主要針對程序(尤其是網路程序)的存取權限來限制。
絕對路徑與相對路徑
因為根據檔名寫法的不同,也可將所謂的路徑(path)定義為絕對路徑(absolute)與相對路徑(relative)。
- 絕對路徑:由根目錄(/)開始寫起的檔名或目錄名稱, 例如 /home/dmtsai/.bashrc;
- 相對路徑:相對於目前路徑的檔名寫法。 例如 ./home/dmtsai 或 ../../home/dmtsai/ 等等。反正開頭不是 / 就屬於相對路徑的寫法
CentOS 的觀察
某些時刻你可能想要知道你的 distribution 使用的是那個 Linux 標準 (Linux Standard Base), 而且我們也知道 distribution 使用的都是 Linux 的核心!
[root@www ~]# uname -r 2.6.18-128.el5 <==可以察看實際的核心版本 [root@www ~]# lsb_release -a LSB Version: :core-3.1-amd64:core-3.1-ia32:core-3.1-noarch:graphics-3.1-amd64: graphics-3.1-ia32:graphics-3.1-noarch <==LSB 的版本 Distributor ID: CentOS Description: CentOS release 5.3 (Final) <==distribution 的版本 Release: 5.3 Codename: Final
第五章、首次登入與線上求助 man page
資料來源:http://linux.vbird.org/
重新啟動X Window的快速按鈕
在終端介面登入linux
~ 符號代表的是『使用者的家目錄』的意思,他是個『變數!』。
root的家目錄在/root, 所以 ~ 就代表/root的意思。
vbird的家目錄在/home/vbird。
Linux當中,預設root的提示字元為 # ,而一般身份使用者的提示字元為 $ 。
登出Linux
開始下達指令
語系的支援
重新啟動X Window的快速按鈕
- 直接登出,然後再重新登入即可;
- 在X的畫面中直接按下[Alt] + [Ctrl] + [Backspace]
- [Ctrl] + [Alt] + [F1] ~ [F6] :文字介面登入 tty1 ~ tty6 終端機;
- [Ctrl] + [Alt] + [F7] :圖形介面桌面。
[vbird@www ~]$ startx
在終端介面登入linux
~ 符號代表的是『使用者的家目錄』的意思,他是個『變數!』。
root的家目錄在/root, 所以 ~ 就代表/root的意思。
vbird的家目錄在/home/vbird。
Linux當中,預設root的提示字元為 # ,而一般身份使用者的提示字元為 $ 。
登出Linux
[vbird@www ~]$ exit
開始下達指令
[vbird@www ~]$ command [-options] parameter1 parameter2 ...
指令 選項 參數(1) 參數(2)
說明:
0. #一行指令中第一個輸入的部分絕對是『指令(command)』或『可執行檔案』
1. #command 為指令的名稱,例如變換路徑的指令為 cd 等等;
2. #中刮號[]並不存在於實際的指令中,而加入選項設定時,通常選項前會帶 - 號, 例如 -h;有時候會使用選項的完整全名,則選項前帶有 -- 符號,例如 --help;
3. #parameter1 parameter2.. 為依附在選項後面的參數,或者是 command 的參數;
4. #指令, 選項, 參數等這幾個咚咚中間以空格來區分,不論空幾格 shell 都視為一格;
5. #按下[Enter]按鍵後,該指令就立即執行。[Enter]按鍵代表著一行指令的開始啟動。
6. #指令太長的時候,可以使用反斜線 (\) 來跳脫[Enter]符號,使指令連續到下一行。 注意!反斜線後就立刻接特殊字符,才能跳脫!
其他:
a. #在 Linux 系統中,英文大小寫字母是不一樣的。舉例來說, cd 與 CD 並不同。
b. #更多的介紹等到第十一章 bash 時,再來詳述。
[vbird@www ~]$ ls -al ~ [vbird@www ~]$ ls -al ~ [vbird@www ~]$ ls -a -l ~
1. 顯示目前所支援的語系 [vbird@www ~]$ echo $LANG zh_TW.UTF-8 # 上面的意思是說,目前的語系(LANG)為zh_TW.UTF-8,亦即台灣繁體中文的萬國碼 2. 修改語系成為英文語系 [vbird@www ~]$ LANG=en_US # 注意到上面的指令中沒有空白字元,且英文語系為en_US才對喔! [vbird@www ~]$ echo $LANG en_US # 再次確認一下,結果出現,確實是en_US這個英文語系!注意,那個『LANG=en_US』是連續輸入的,等號兩邊並沒有空白字元喔!
這樣一來,就能夠在『這次的登入』察看英文訊息囉!
因為,如果你登出Linux後,剛剛下達的指令就沒有用啦!
基礎指令的操作
- 顯示日期與時間的指令: date
- 顯示日曆的指令: cal
- 簡單好用的計算機: bc
[vbird@www ~]$ date +%Y/%m/%d 2009/08/17 [vbird@www ~]$ date +%H:%M 17:04 #從上面的例子當中我們也可以知道,指令之後的選項除了前面帶有減號『-』之外,某些特殊情況下, 選項或參數前面也會帶有正號『+』的情況!這部份可不要輕易的忘記了呢!
[vbird@www ~]$ cal [month] [year]
[vbird@www ~]$ cal 10 2009
October 2009
Su Mo Tu We Th Fr Sa
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
[vbird@www ~]$ bc bc 1.06 Copyright 1991-1994, 1997, 1998, 2000 Free Software Foundation, Inc. This is free software with ABSOLUTELY NO WARRANTY. For details type 'warranty' _ <==這個時候,游標會停留在這裡等待你的輸入 #因為bc預設僅輸出整數,如果要輸出小數點下位數,那麼就必須要執行 scale=number ,那個number就是小數點位數 scale=3 <==沒錯!就是這裡!! 1/3 .333 340/2349 .144 quit重要的幾個熱鍵[Tab], [ctrl]-c, [ctrl]-d
這些按鍵可以輔助我們進行指令的編寫與程式的中斷呢
[vbird@www ~]$ ls -al ~/.bash[tab][tab] .bash_history .bash_logout .bash_profile .bashrc #那麼[Ctrl]-d是什麼呢?這個組合按鍵通常代表著: 『鍵盤輸入結束(End Of File, EOF 或 End Of Input)』的意思! #另外,他也可以用來取代exit的輸入呢!例如你想要直接離開文字介面,可以直接按下[Ctrl]-d就能夠直接離開了(相當於輸入exit啊!)。Linux系統的線上求助man page與info page
[vbird@www ~]$ <==在這裡不要輸入任何字元,直接輸入兩次[tab]按鍵 Display all 2450 possibilities? (y or n) <==如果不想要看,按 n 離開man page 這個man是manual(操作說明)的簡寫啦!
[vbird@www ~]$ man date
DATE(1) User Commands DATE(1)
# 請注意上面這個括號內的數字
NAME <==這個指令的完整全名,如下所示為date且說明簡單用途為設定與顯示日期/時間
date - print or set the system date and time
SYNOPSIS <==這個指令的基本語法如下所示
date [OPTION]... [+FORMAT]
date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]
DESCRIPTION <==詳細說明剛剛語法談到的選項與參數的用法
Display the current time in the given FORMAT, or set the system
date.
-d, --date=STRING <==左邊-d為短選項名稱,右邊--date為完整選項名稱
display time described by STRING, not 'now'
-f, --file=DATEFILE
like --date once for each line of DATEFILE
-r, --reference=FILE
display the last modification time of FILE
....(中間省略)....
# 找到了!底下就是格式化輸出的詳細資料!
FORMAT controls the output. The only valid option for the second
form specifies Coordinated Universal Time. Interpreted sequences
are:
%% a literal %
%a locale's abbreviated weekday name (e.g., Sun)
%A locale's full weekday name (e.g., Sunday)
....(中間省略)....
ENVIRONMENT <==與這個指令相關的環境參數有如下的說明
TZ Specifies the timezone, unless overridden by command line
parameters. If neither is specified, the setting from
/etc/localtime is used.
AUTHOR <==這個指令的作者啦!
Written by David MacKenzie.
REPORTING BUGS <==有問題請留言給底下的email的意思!
Report bugs to .
COPYRIGHT <==受到著作權法的保護!用的就是 GPL 了!
Copyright ? 2006 Free Software Foundation, Inc.
This is free software. You may redistribute copies of it under the
terms of the GNU General Public License
. There is NO WARRANTY, to
the extent permitted by law.
SEE ALSO <==這個重要,你還可以從哪裡查到與date相關的說明文件之意
The full documentation for date is maintained as a Texinfo manual.
If the info and date programs are properly installed at your site,
the command
info date
should give you access to the complete manual.
date 5.97 May 2006 DATE(1)
#按下『空白鍵』往下翻頁,可以按下『 q 』按鍵來離開man的環境。
#『DATE(1)』,DATE我們知道是指令的名稱, 那麼(1)代表什麼呢?他代表的是『一般使用者可使用的指令』的意思
常見的幾個數字的意義| 代號 | 代表內容 |
| 1 | 使用者在shell環境中可以操作的指令或可執行檔 |
| 2 | 系統核心可呼叫的函數與工具等 |
| 3 | 一些常用的函數(function)與函式庫(library),大部分為C的函式庫(libc) |
| 4 | 裝置檔案的說明,通常在/dev下的檔案 |
| 5 | 設定檔或者是某些檔案的格式 |
| 6 | 遊戲(games) |
| 7 | 慣例與協定等,例如Linux檔案系統、網路協定、ASCII code等等的說明 |
| 8 | 系統管理員可用的管理指令 |
| 9 | 跟kernel有關的文件 |
man page大致分成底下這幾個部分
| 代號 | 內容說明 |
| NAME | 簡短的指令、資料名稱說明 |
| SYNOPSIS | 簡短的指令下達語法(syntax)簡介 |
| DESCRIPTION | 較為完整的說明,這部分最好仔細看看! |
| OPTIONS | 針對 SYNOPSIS 部分中,有列舉的所有可用的選項說明 |
| COMMANDS | 當這個程式(軟體)在執行的時候,可以在此程式(軟體)中下達的指令 |
| FILES | 這個程式或資料所使用或參考或連結到的某些檔案 |
| SEE ALSO | 可以參考的,跟這個指令或資料有相關的其他說明! |
| EXAMPLE | 一些可以參考的範例 |
| BUGS | 是否有相關的臭蟲! |
通常鳥哥在查詢某個資料時是這樣來查閱的:
- 先察看NAME的項目,約略看一下這個資料的意思;
- 再詳看一下DESCRIPTION,這個部分會提到很多相關的資料與使用時機,從這個地方可以學到很多小細節呢;
- 而如果這個指令其實很熟悉了(例如上面的date),那麼鳥哥主要就是查詢關於OPTIONS的部分了! 可以知道每個選項的意義,這樣就可以下達比較細部的指令內容呢!
- 最後,鳥哥會再看一下,跟這個資料有關的還有哪些東西可以使用的?舉例來說,上面的SEE ALSO就告知我們還可以利用『info coreutils date』來進一步查閱資料;
- 某些說明內容還會列舉有關的檔案(FILES 部分)來提供我們參考!這些都是很有幫助的!
man page常用的按鍵給他整理
| 按鍵 | 進行工作 |
| 空白鍵 | 向下翻一頁 |
| [Page Down] | 向下翻一頁 |
| [Page Up] | 向上翻一頁 |
| [Home] | 去到第一頁 |
| [End] | 去到最後一頁 |
| /string | 向『下』搜尋 string 這個字串,如果要搜尋 vbird 的話,就輸入 /vbird |
| ?string | 向『上』搜尋 string 這個字串 |
| n, N | 利用 / 或 ? 來搜尋字串時,可以用 n 來繼續下一個搜尋 (不論是 / 或 ?) ,可以利用 N 來進行『反向』搜尋。舉例來說,我以 /vbird 搜尋 vbird 字串, 那麼可以 n 繼續往下查詢,用 N 往上查詢。若以 ?vbird 向上查詢 vbird 字串, 那我可以用 n 繼續『向上』查詢,用 N 反向查詢。 |
| q | 結束這次的 man page |
這些man page的資料放在哪裡呢?通常是放在/usr/share/man這個目錄裡頭,我們可以透過修改他的man page搜尋路徑來改善這個目錄的問題!修改/etc/man.config (有的版本為man.conf或manpath.conf)即可囉!至於更多的關於man的訊息你可以使用『 man man 』來查詢呦!關於更詳細的設定,
搜尋特定指令/檔案的man page說明文件
系統中還有哪些跟『man』這個指令有關的說明文件呢?
[vbird@www ~]$ man -f man man (1) - format and display the on-line manual pages man (7) - macros to format man pages man.config [man] (5) - configuration data for man #使用 -f 這個選項就可以取得更多與man相關的資訊 [vbird@www ~]$ man 1 man <==這裡是用 man(1) 的文件資料 [vbird@www ~]$ man 7 man <==這裡是用 man(7) 的文件資料 #只有輸入『 man man 』時,那麼取出的資料到底是1還是7啊? 這個就跟搜尋的順序有關了。 #搜尋的順序是記錄在/etc/man.conf這個設定檔當中, 先搜尋到的那個說明檔,就會先被顯示出來! #一般來說,通常會先找到數字較小的那個啦! #當使用『man -f 指令』時,man只會找資料中的左邊那個指令(或檔案)的完整名稱,有一點不同都不行!找出系統的說明檔中,只要有man這個關鍵字就將該說明列出來。
[vbird@www ~]$ man -k man . [builtins] (1) - bash built-in commands, see bash(1) .TP 15 php [php] (1) - PHP Command Line Interface 'CLI' ....(中間省略).... zshall (1) - the Z shell meta-man page zshbuiltins (1) - zsh built-in commands zshzle (1) - zsh command line editor #這個是利用關鍵字將說明文件裡面只要含有man那個字眼的(不見得是完整字串) 就將他取出來!還有兩個指令與man page有關呢!而這兩個指令是man的簡略寫法說~就是這兩個:
[vbird@www ~]$ whatis [指令或者是資料] <==相當於 man -f [指令或者是資料] [vbird@www ~]$ apropos [指令或者是資料] <==相當於 man -k [指令或者是資料]
info page
與man page一口氣輸出一堆資訊不同的是,info page則是將文件資料拆成一個一個的段落,每個段落用自己的頁面來撰寫, 並且在各個頁面中還有類似網頁的『超連結』來跳到各不同的頁面中,每個獨立的頁面也被稱為一個節點(node)。 你使用『 info info 』可以得到如下的畫面:
[vbird@www ~]$ info info
File: info.info, Node: Top, Next: Getting Started, Up: (dir)
#File:代表這個info page的資料是來自info.info檔案所提供的;
#Node:代表目前的這個頁面是屬於Top節點。 意思是info.info內含有很多資訊,而Top僅是info.info檔案內的一個節點內容而已;
#Next:下一個節點的名稱為Getting Started,你也可以按『N』到下個節點去;
#Up:回到上一層的節點總攬畫面,你也可以按下『U』回到上一層;
#Prev:前一個節點。但由於Top是info.info的第一個節點,所以上面沒有前一個節點的資訊。
Info: An Introduction
*********************
The GNU Project distributes most of its on-line manuals in the "Info
format", which you read using an "Info reader". You are probably using
an Info reader to read this now.
....(中間省略)....
To read about expert-level Info commands, type `n' twice. This
brings you to `Info for Experts', skipping over the `Getting Started'
chapter.
* Menu:
* Getting Started:: Getting started using an Info reader.
* Expert Info:: Info commands for experts.
* Creating an Info File:: How to make your own Info file.
* Index:: An index of topics, commands, and variables.
--zz-Info: (info.info.gz)Top, 29 lines --Top------------------------------
Welcome to Info version 4.8. Type ? for help, m for menu item.
info page當中可以使用的按鍵
| 按鍵 | 進行工作 |
| 空白鍵 | 向下翻一頁 |
| [Page Down] | 向下翻一頁 |
| [Page Up] | 向上翻一頁 |
| [tab] | 在 node 之間移動,有 node 的地方,通常會以 * 顯示。 |
| [Enter] | 當游標在 node 上面時,按下 Enter 可以進入該 node 。 |
| b | 移動游標到該 info 畫面當中的第一個 node 處 |
| e | 移動游標到該 info 畫面當中的最後一個 node 處 |
| n,] | 前往下一個 node 處 |
| p,[ | 前往上一個 node 處 |
| u | 向上移動一層 |
| s(/) | 在 info page 當中進行搜尋 |
| h | 顯示求助選單 |
| ? | 指令一覽表 |
| q | 結束這次的 info page |
CentOS 5將info page的文件放置到/usr/share/info/目錄中!
其他有用的文件(documents)
擺在/usr/share/doc這個目錄啦
舉例來說,你想要知道這一版的CentOS相關的各項資訊:
- /usr/share/doc/centos-release-notes-5.3/
總結上面的三個咚咚(man, info, /usr/share/doc/),請記住喔:
- 在文字介面下,有任何你不知道的指令或檔案格式這種玩意兒,但是你想要瞭解他,請趕快使用man或者是info來查詢!
- 而如果你想要架設一些其他的服務,或想要利用一整組軟體來達成某項功能時,請趕快到/usr/share/doc 底下查一查有沒有該服務的說明檔喔!
- 另外,再次的強調,因為Linux畢竟是外國人發明的,所以中文文件確實是比較少的! 但是不要害怕,拿本英文字典在身邊吧!隨時查閱!不要害怕英文喔!
[vbird@www ~]$ nano text.txt
# 不管text.txt存不存在都沒有關係!存在就開啟舊檔,不存在就開啟新檔
GNU nano 1.3.12 File: text.txt
<==這個是游標所在處
[ New File ]
^G Get Help^O WriteOut^R Read Fil^Y Prev Pag^K Cut Text^C Cur Pos
^X Exit ^J Justify ^W Where Is^V Next Pag^U UnCut Te^T To Spell
# 上面兩行是指令說明列,其中^代表的是[ctrl]的意思
#[ctrl]-G:取得線上說明(help),很有用的!
#[ctrl]-X:離開naon軟體,若有修改過檔案會提示是否需要儲存喔!
#[ctrl]-O:儲存檔案,若你有權限的話就能夠儲存檔案了;
#[ctrl]-R:從其他檔案讀入資料,可以將某個檔案的內容貼在本檔案中;
#[ctrl]-W:搜尋字串,這個也是很有幫助的指令喔!
#[ctrl]-C:說明目前游標所在處的行數與列數等資訊;
#[ctrl]-_:可以直接輸入行號,讓游標快速移動到該行;
#[alt]-Y:校正語法功能開啟或關閉(按一下開、再按一下關)
#[alt]-M:可以支援滑鼠來移動游標的功能
正確的關機方法 - 觀察系統的使用狀態:
看目前有誰在線上,可以下達『who』這個指令 - 看網路的連線狀態,可以下達 『 netstat -a 』這個指令,
- 看背景執行的程序可以執行『 ps -aux 』這個指令。
- 通知線上使用者關機的時刻:
要關機前總得給線上的使用者一些時間來結束他們的工作,所以,這個時候你可以使用 shutdown 的特別指令來達到此一功能。 - 正確的關機指令使用:
例如 shutdown 與 reboot 兩個指令!
所以底下我們就來談一談幾個與關機/重新開機相關的指令囉!
- 將資料同步寫入硬碟中的指令: sync
- 慣用的關機指令: shutdown
- 重新開機,關機: reboot, halt, poweroff
記憶體中尚未被更新的資料,就會被寫入硬碟中!所以,這個指令在系統關機或重新開機之前, 很重要喔!最好多執行幾次!
慣用的關機指令: shutdown
shutdown可以達成如下的工作:
- 可以自由選擇關機模式:是要關機、重新開機或進入單人操作模式均可;
- 可以設定關機時間: 可以設定成現在立刻關機, 也可以設定某一個特定的時間才關機。
- 可以自訂關機訊息:在關機之前,可以將自己設定的訊息傳送給線上 user 。
- 可以僅發出警告訊息:有時有可能你要進行一些測試,而不想讓其他的使用者干擾, 或者是明白的告訴使用者某段時間要注意一下!這個時候可以使用 shutdown 來嚇一嚇使用者,但卻不是真的要關機啦!
- 可以選擇是否要 fsck 檢查檔案系統 。
[root@www ~]# /sbin/shutdown [-t 秒] [-arkhncfF] 時間 [警告訊息] 選項與參數: -t sec : -t 後面加秒數,亦即『過幾秒後關機』的意思 -k : 不要真的關機,只是發送警告訊息出去! -r : 在將系統的服務停掉之後就重新開機(常用) -h : 將系統的服務停掉後,立即關機。 (常用) -n : 不經過 init 程序,直接以 shutdown 的功能來關機 -f : 關機並開機之後,強制略過 fsck 的磁碟檢查 -F : 系統重新開機之後,強制進行 fsck 的磁碟檢查 -c : 取消已經在進行的 shutdown 指令內容。 時間 : 這是一定要加入的參數!指定系統關機的時間!時間的範例底下會說明。 範例: [root@www ~]# /sbin/shutdown -h 10 'I will shutdown after 10 mins' # 告訴大家,這部機器會在十分鐘後關機!並且會顯示在目前登入者的螢幕前方! # 至於參數有哪些呢?以下介紹幾個吧! [root@www ~]# shutdown -h now 立刻關機,其中 now 相當於時間為 0 的狀態 [root@www ~]# shutdown -h 20:25 系統在今天的 20:25 分會關機,若在21:25才下達此指令,則隔天才關機 [root@www ~]# shutdown -h +10 系統再過十分鐘後自動關機 [root@www ~]# shutdown -r now 系統立刻重新開機 [root@www ~]# shutdown -r +30 'The system will reboot' 再過三十分鐘系統會重新開機,並顯示後面的訊息給所有在線上的使用者 [root@www ~]# shutdown -k now 'This system will reboot' 僅發出警告信件的參數!系統並不會關機啦!嚇唬人!切換執行等級: init
Linux共有七種執行等級。本章你只要知道底下四種執行等級就好了:
run level 0:關機
run level 3:純文字模式
run level 5:含有圖形介面模式
run level 6:重新開機
那如何切換各模式呢?可以使用init這個指令來處理喔! 也就是說,如果你想要關機的話, 除了上述的shutdown -h now以及poweroff之外,你也可以使用如下的指令來關機:
[root@www ~]# init 0劃分不同的partition
為什麼磁碟分割這麼重要!因為Linux每個目錄被讀寫的頻率不同,妥善的分割將會讓我們的Linux更安全! 通常我們會建議劃分下列的磁碟區塊:
/
/boot
/usr
/home
/var
這樣劃分有些好處,例如/var是系統預設的一些資料暫存或者是cache資料的儲存目錄, 像 e-mail 就含在這裡面。如果還有使用proxy時,因為常常存取,所以有可能會造成磁碟損壞, 而當這部份的磁碟損壞時,由於其他的地方是沒問題的,因此資料得以保存,而且在處理時也比較容易!
第三章、主機規劃與磁碟分割
Linux與硬體的搭配
檔案伺服器, 那麼硬碟或者是其他的儲存設備就是您最想要增購的元件。
Linux對於電腦各元件/裝置的分辨,各個元件或裝置在Linux底下都是『一個檔案!』
選擇與Linux搭配的主機配備
- CPU
Pentun-III的CPU不算太舊而且效能也不錯,也就是說P-III就非常好用了。 - RAM
主記憶體是越大越好!主記憶體的重要性比CPU還要高的多!如果主記憶體不夠大, 就會使用到硬碟的記憶體置換空間(swap)。
對於一般的小型伺服器來說,建議至少也要512MB以上的主記憶體容量較佳。 - Hard Disk
由於資料量與資料存取頻率的不同,對於硬碟的要求也不相同。
- VGA
如果需要X window系統時,你的顯示卡最好能夠擁有32MB以上的記憶體容量 - Network Interface Card
目前新式的主機板大多擁有10/100/1000Mbps的高速網路,如果是小型伺服器, 一塊Realtek RTL8139晶片的網卡就非常好用了,不過,如果是讀取非常頻繁的網站, 好一點的Intel/3Com網卡應該是比較適合的喔。
Linux distributions搭配的網站
- Red Hat的硬體支援:https://hardware.redhat.com/?pagename=hcl
- Open SuSE的硬體支援:http://en.opensuse.org/Hardware?LANG=en_UK
- Mandriva的硬體支援:http://hcl.mandriva.com/
- Linux對筆記型電腦的支援:http://www.linux-laptop.net/
- Linux對印表機的支援:http://www.openprinting.org/
- 顯示卡對XFree86/Xorg的支援:http://www.linuxhardware.org/
- Linux硬體支援的中文HowTo:http://www.linux.org.tw/CLDP/HOWTO/hardware.html#hardware
各硬體裝置在Linux中的檔名
『在Linux系統中,每個裝置都被當成一個檔案來對待』
IDE介面的硬碟的檔案名稱即為/dev/hd[a-d],其中, 括號內的字母為a-d當中的任意一個,亦即有/dev/hda, /dev/hdb, /dev/hdc, 及 /dev/hdd這四個檔案的意思。
硬體: /dev/開頭
SATA:sd[a-p]
USB:sd[a-p]
印表機:lp[0-2],usb/lp[0-15]
滑鼠:psaux,usb/mouse[0-15]
裝置 裝置在Linux內的檔名 IDE硬碟機 /dev/hd[a-d] SCSI/SATA/USB硬碟機 /dev/sd[a-p] USB快閃碟 /dev/sd[a-p](與SATA相同) 軟碟機 /dev/fd[0-1] 印表機 25針: /dev/lp[0-2]
USB: /dev/usb/lp[0-15]滑鼠 USB: /dev/usb/mouse[0-15]
PS2: /dev/psaux當前CDROM/DVDROM /dev/cdrom 當前的滑鼠 /dev/mouse 磁帶機 IDE: /dev/ht0
SCSI: /dev/st0Linux核心支援的硬體裝置與檔名
http://www.mjmwired.net/kernel/Documentation/devices.txt
磁碟分割
Windows:一顆磁碟並且將他分割成為C:, D:, E:!那個C, D, E就是分割槽(partition)
Linux:裝置都是以檔案的型態存在
主機板上:有IDE1(primary)及IDE2(secondary)
每條排線:有Master與Slave
IDE\Jumper Master Slave IDE1(Primary) /dev/hda /dev/hdb IDE2(Secondary) /dev/hdc /dev/hdd SATA介面,這些介面的磁碟裝置檔名都是/dev/sd[a-p]的格式。
但是與IDE介面不同的是,SATA/USB介面的磁碟根本就沒有一定的順序,這個時候就得要根據Linux核心偵測到磁碟的順序了!這裡以底下的例子來讓你瞭解囉。
例題:
如果你的PC上面有兩個SATA磁碟以及一個USB磁碟,而主機板上面有六個SATA的插槽。這兩個SATA磁碟分別安插在主機板上的SATA1, SATA5插槽上, 請問這三個磁碟在Linux中的裝置檔名為何?答:由於是使用偵測到的順序來決定裝置檔名,並非與實際插槽代號有關,因此裝置的檔名如下:
- SATA1插槽上的檔名:/dev/sda
- SATA5插槽上的檔名:/dev/sdb
- USB磁碟(開機完成後才被系統捉到):/dev/sdc
磁碟的第一個磁區主要記錄了兩個重要的資訊,分別是:
- 主要開機記錄區(Master Boot Record, MBR):可以安裝開機管理程式的地方,有446 bytes
- 分割表(partition table):記錄整顆硬碟分割的狀態,有64 bytes
MBR很重要,當系統在開機的時候會主動去讀取這個區塊的內容,這樣系統才會知道你的程式放在哪裡且該如何進行開機。 如果你要安裝多重開機的系統,MBR這個區塊的管理就非常非常的重要了磁碟分割表(partition table)
2013年9月21日 星期六
第二章、 Linux 如何學習
- 手持系統(PDA、手機)
- LiMo基金會:http://www.limofoundation.org/
- Linux手機論壇:http://www.lipsforum.org/
- OpenMoKo網站:http://www.openmoko.com/
- Google的手機平台:http://code.google.com/android/
- X window的學習
- Ubuntu下載: http://www.ubuntu.com/getubuntu/download
- OpenSuSE下載: http://software.opensuse.org/
- Fedora下載: http://fedoraproject.org/en/get-fedora
- Mandriva下載: http://www.mandriva.com/en/download/free
圖形使用者介面能夠使用的軟體資訊
- Open Office(http://www.latex-project.org/):
就是辦公室軟體,包含有電子試算表、文書處理與簡報軟體等; - Free Maid(http://freemind.sourceforge.net/wiki/index.php/Main_Page):
可繪製組織圖的軟體,酷學園裡的SAKANA曾用過,鳥哥覺得挺好看; - AbiWord(http://www.abisource.com/):
非常類似微軟的Word的文書處理軟體; - Tex/LaTeX(http://www.latex-project.org/):
可進行文件排版的軟體(很多自由軟體文件使用此編輯器喔!); - Dia(http://dia-installer.de/index_en.html):
非常類似微軟Visio的軟體,可繪製流程圖; - Scribus(http://www.scribus.net/):
專業的排版軟體,老實說,鳥哥確實不會用~@_@; - GanttProject(http://ganttproject.biz/):
可繪製甘特圖(就是時程表)的軟體; - GIMP(http://www.gimp.org/):
在業界相當有名的繪圖自由軟體!
- 實作再實作
- Study-Area http://www.study-area.org
- 鳥哥的私房菜館 http://linux.vbird.org
- 臺灣 Linux 社群 http://www.linux.org.tw/
- 狼主的網路實驗室 http://netlab.kh.edu.tw/index.htm
- 大南國小(林克敏主任文件集)http://freebsd.lab.mlc.edu.tw/
- 吳仁智的文件集 http://www.cses.tcc.edu.tw/~chihwu/
- 發生問題怎麼處理啊?
- Linux自己的文件資料: /usr/share/doc (在你的Linux系統中)
- CLDP 中文文件計畫 http://www.linux.org.tw/CLDP/
- The Linux Documentation Project:http://www.tldp.org/
- 參與討論:
『酷學園(Study Area, SA)』,每個月不定期的在北/中/南舉辦自由軟體相關活動,
http://phorum.study-area.org/index.php/board,22.0.html
第一章、Linux是什麼
Torvalds寫出Linux的時候,該核心僅能『驅動386所有的硬體』而已!
由於不同的硬體的功能函數並不相同,
所以同一套作業系統是無法在不同的硬體平台上面運作的!
如果能參考硬體的功能函數並修改你的作業系統程式碼,
那改版後的作業系統就能夠在另一個硬體平台上面運作。
這個動作我們通常就稱為『軟體移植』!
2006年以前蘋果是請IBM公司開發硬體(Power CPU),蘋果則在該硬體架構上發展作業系統(MAC)。
2006年以後,蘋果轉而請Intel設計硬體架構,亦即架構轉為x86系統, 因此在2006年以後的蘋果若使用x86架構時,則『可能』可以安裝Windows作業系統了。
Linux由於是Open Source的作業系統,所以他可以被修改成適合在各種機器上面運行, 也就是說,Linux是具有『可移植性』,這可是很重要的一個功能喔!
- GPL(GNU General Public License, GPL)
- 取得軟體與原始碼:你可以根據自己的需求來執行這個自由軟體;
- 複製:你可以自由的複製該軟體;
- 修改:你可以將取得的原始碼進行程式修改工作,使之適合你的工作;
- 再發行:你可以將你修改過的程式,再度的自由發行,而不會與原先的撰寫者衝突;
- 回饋:你應該將你修改過的程式碼回饋於社群!
- 修改授權:你不能將一個GPL授權的自由軟體,在你修改後而將他取消GPL授權~
- 單純販賣:你不能單純的販賣自由軟體。
- 對386硬體的多工測試
多工的作業系統中,每個程式被執行時,都會有一個最大CPU使用時間,若該工作運作的時間超過這個CPU使用時間時, 該工作就會先被丟出CPU的運作中,而再度的進入核心工作排程中等待下一次被CPU取用來運作。
因為Linux參考POSIX設計規範,於是相容於Unix作業系統,故亦可稱之為Unix Like的一種。
- Linux的核心版本
2.6.18-92.el5 主版本.次版本.釋出版本-修改版本
- 主、次版本為奇數:發展中版本(development)
- 主、次版本為偶數:穩定版本(stable)
Linux : 3.11.1
CentOS : 6.4
Linux可完整安裝發佈套件
為了讓所有的Linux distributions開發不致於差異太大,且讓這些開發商在開發的時候有所依據,有Linux Standard Base (LSB)等標準來規範開發者,以及目錄架構的File system Hierarchy Standard (FHS)標準規範!
鳥哥認為distributions主要分為兩大系統,
一種是使用Red Hat的RPM方式安裝軟體的系統,Red Hat, Fedora, SuSE;
一種則是使用Debian的dpkg方式安裝軟體的系統,Debian, Ubuntu, B2D。
主要的Linux distributions發行者網址:
- Red Hat: http://www.redhat.com
- Fedora: http://fedoraproject.org/
- Mandriva: http://www.mandriva.com
- Novell SuSE: http://www.novell.com/linux/
- Debian: http://www.debian.org/
- Slackware: http://www.slackware.com/
- Gentoo: http://www.gentoo.org/
- Ubuntu: http://www.ubuntu.com/
- CentOS: http://www.centos.org/
- Linux在台灣
如果只想看看Linux的話,可以選擇可光碟開機進入Linux的Live CD版本,
亦即是KNOPPIX這個Linux distributions呢!台灣也有阿里巴巴兄維護的中文Live CD喔!
想要知道更多的Linux distributions的下載與使用資訊,可以參考:
鳥哥的建議
先學習以RPM套件管理為主:RHEL/Fedora/SuSE/CentOS等台灣使用者較多的版本, 更嚴謹的Linux版本:Debian
效能至上: Gentoo
先學習以RPM套件管理為主:RHEL/Fedora/SuSE/CentOS等台灣使用者較多的版本, 更嚴謹的Linux版本:Debian
效能至上: Gentoo
- Open Source (開放源碼)
Open source的代表授權為GNU的GPL授權及BSD
- GNU General Public License:
http://www.gnu.org/licenses/licenses.html#GPL
目前有version 2, version 3兩種版本,Linux使用的是version 2這一版。 鳥哥也有收集一份GPL version 2 的中文化條文,您可以參考:http://linux.vbird.org/linux_basic/1010appendix_A.php - Berkeley Software Distribution (BSD):
http://en.wikipedia.org/wiki/BSD_license
使用BSD source code最常接觸到的就是BSD授權模式了!這個授權模式其實與GPL很類似, 而其精神也與Open Source相呼應呢! - Apache License, Version 2.0:
http://www.apache.org/licenses/LICENSE-2.0
Apache是一種網頁伺服器軟體,這個軟體的發佈方式也是使用Open source的。只是在apache的授權中規定, 如果想要重新發佈此軟體時(如果你有修改過該軟體),軟體的名稱依舊需要定名為Apache才行!
- Close Source
優點是有專人維護,你不需要去更動他;
缺點則是靈活度大打折扣,使用者無法變更該程式成為自己想要的樣式!
此外,若有木馬程式或者安全漏洞,將會花上相當長的一段時間來除錯!這也是所謂專利軟體(copyright)常見的軟體出售方式。
雖然專利軟體常常代表就是需要花錢去購買,不過有些專利軟體還是可以免費提供大眾使用的! 免費的專利軟體代表的授權模式有:
- Freeware:
http://en.wikipedia.org/wiki/Freeware
不同於Free software,Freeware為『免費軟體』而非『自由軟體!』雖然它是免費的軟體,但是不見得要公布其原始碼, 端看釋出者的意見囉!這個東西與Open Source畢竟是不太相同的東西喔!此外,目前很多標榜免費軟體的程式很多都有小問題! 例如假藉免費軟體的名義,實施使用者資料竊取的目的! 所以『來路不明的軟體請勿安裝!』 - Shareware:
http://en.wikipedia.org/wiki/Shareware
共享軟體這個名詞就有趣了!與免費軟體有點類似的是,Shareware在使用初期,它也是免費的,但是, 到了所謂的『試用期限』之後,你就必須要選擇『付費後繼續使用』或者『將它移除』的宿命~ 通常,這些共享軟體都會自行撰寫失效程式,讓你在試用期限之後就無法使用該軟體。
DNS Protocol
DNS的來由
DNS(Domain Name System)是用來幫助記憶網路地址的。
在早期的網路世界裡面,建立一個HOSTS對應表,將IP和主機名字對應起來
Linux系統,在/etc可以找到這個hosts檔案了﹔
NT系統,在\winnt \system32\drivers\etc下面找到它。
DNS的結構
DNS是一個分層級的分散式名稱對應系統
最頂端的是“root”
其下分為幾個基本類別,如﹕com﹑org﹑edu
再下面是組織名稱,如﹕sony﹑toshiba﹑intel
繼而是主機名稱,如 ﹕www﹑mail﹑ftp等。
類別資料由美國本土的NIC(Network Information Center)管理之外,
其它在國域的類別分別由該國的NIC管理。
查詢www.home.netman.com.tw這台主機位址的過程←查詢順序
來源:http://www.study-area.org/
What images are in this directory
CentOS-6.3-x86_64-netinstall.iso
This is the network install and rescue image.
This image is designed to be burned onto a CD. You then boot your computer off the CD
CentOS-6.3-x86_64-minimal.iso
The aim of this image is to install a very basic CentOS 6.3 system, with the minimum of packages needed to have a functional system.
Please burn this image onto a CD and boot your computer off it. A preselected set of packages will be installed on your system Everything else needs to be installed using yum.
Please read http://wiki.centos.org/Manuals/ReleaseNotes/CentOSMinimalCD6.3 for more details about this image.
Beware that the set of packages installed by this image is NOT identical to the one installed when choosing the group named "Minimal" from the full DVD image.
CentOS-6.3-x86_64-bin-DVD1.iso
CentOS-6.3-x86_64-bin-DVD2.iso
These two dvd images contain the entire base distribution.
Please burn DVD1 onto a DVD and boot your computer off it.
A basic install will not need DVD2.
After the installation is complete, please run "yum update" in order to update your system.
Download this version.
CentOS-6.3-x86_64-LiveCD.iso
This is a CD live image of CentOS 6.3 designed to be burned onto a CD. You then boot your computer using that CD.
Please read http://wiki.centos.org/Manuals/ReleaseNotes/CentOSLiveCD6.3 for more details about this image.
The disk can also be used to install CentOS 6.3 onto your computer.
CentOS-6.3-x86_64-LiveDVD.iso
This is a DVD live image of CentOS 6.3 designed to be burned onto a DVD. You then boot your computer using that DVD.
Please read http://wiki.centos.org/Manuals/ReleaseNotes/CentOSLiveDVD6.3 for more details about this image.
The disk can also be used to install CentOS 6.3 onto your computer.
Remember that in order to be able to partition your disk you will need to run the GUI installer which in turns needs enough RAM. The same is true for the network setup step. The release notes ( http://wiki.centos.org/Manuals/ReleaseNotes/CentOS6.3 ) provide more details about these aspects.
This is the network install and rescue image.
This image is designed to be burned onto a CD. You then boot your computer off the CD
CentOS-6.3-x86_64-minimal.iso
The aim of this image is to install a very basic CentOS 6.3 system, with the minimum of packages needed to have a functional system.
Please burn this image onto a CD and boot your computer off it. A preselected set of packages will be installed on your system Everything else needs to be installed using yum.
Please read http://wiki.centos.org/Manuals/ReleaseNotes/CentOSMinimalCD6.3 for more details about this image.
Beware that the set of packages installed by this image is NOT identical to the one installed when choosing the group named "Minimal" from the full DVD image.
CentOS-6.3-x86_64-bin-DVD1.iso
CentOS-6.3-x86_64-bin-DVD2.iso
These two dvd images contain the entire base distribution.
Please burn DVD1 onto a DVD and boot your computer off it.
A basic install will not need DVD2.
After the installation is complete, please run "yum update" in order to update your system.
Download this version.
CentOS-6.3-x86_64-LiveCD.iso
This is a CD live image of CentOS 6.3 designed to be burned onto a CD. You then boot your computer using that CD.
Please read http://wiki.centos.org/Manuals/ReleaseNotes/CentOSLiveCD6.3 for more details about this image.
The disk can also be used to install CentOS 6.3 onto your computer.
CentOS-6.3-x86_64-LiveDVD.iso
This is a DVD live image of CentOS 6.3 designed to be burned onto a DVD. You then boot your computer using that DVD.
Please read http://wiki.centos.org/Manuals/ReleaseNotes/CentOSLiveDVD6.3 for more details about this image.
The disk can also be used to install CentOS 6.3 onto your computer.
Remember that in order to be able to partition your disk you will need to run the GUI installer which in turns needs enough RAM. The same is true for the network setup step. The release notes ( http://wiki.centos.org/Manuals/ReleaseNotes/CentOS6.3 ) provide more details about these aspects.
訂閱:
意見 (Atom)









