Linux使用技巧集
1、處理特殊的文件名
假設(shè)Linux系統(tǒng)中有一個(gè)文件名叫“-ee”,如果我們想對它進(jìn)行操作,例如要?jiǎng)h除它,按照一般的刪除方法在命令行中輸入rm -ee命令,界面會(huì)提示我們是“無效選項(xiàng)”(invalid
option),原來由于文件名的第一個(gè)字符為“-”,Linux把文件名當(dāng)作選項(xiàng)了,我們可以使用“--”符號來解決這個(gè)問題,輸入“rm --
-ee”命令便可順利刪除名為“-ee”的文件。如果是其他特殊字符的話可以在特殊字符前加一個(gè)“”符號,或者用雙引號把整個(gè)文件名括起來。
2、直接進(jìn)行Linux的安裝工作
在安裝Linux操作系統(tǒng)時(shí),可以利用該系統(tǒng)光盤中的一個(gè)名為“l(fā)oadlin.exe”的軟件,將Linux核心直接調(diào)入內(nèi)存,由Linux核心代替當(dāng)前操作系統(tǒng)來接管計(jì)算機(jī),并進(jìn)入Linux的安裝界面。在安裝Linux時(shí),我們只要在運(yùn)行對話框中輸入“l(fā)oadlin
E:imagesvmlinuz root=/dev/ram initrd=E:imagesinitrd.img”這個(gè)命令就可以直接安裝Linux了;其中“E:imagesvmlinuz”為Linux的核心名。
3、消除Xwindows下的死機(jī)現(xiàn)象
我們可以用兩個(gè)常用的方法來消除這種現(xiàn)象:第一,用鍵盤上的復(fù)合鍵“Ctrl+Alt+Backspace”來關(guān)閉當(dāng)前正在運(yùn)行的任務(wù);第二,首先按住鍵盤上的“Ctrl+Alt+F2”復(fù)合鍵,讓系統(tǒng)切換到另一個(gè)操作臺(tái),然后登錄到系統(tǒng),再執(zhí)行“#ps
-ax/grep startx”命令,這將會(huì)列出你的Xserver的進(jìn)程標(biāo)識,接著在命令行中輸入如下命令就能消除Xwindows下的死機(jī)現(xiàn)象:#kill
-9 PID_Number,最后通過“Alt+F1”復(fù)合鍵返回到原來的平臺(tái)。
4、快速關(guān)閉Linux系統(tǒng)
最新版本的Linux/UNIX系統(tǒng)借鑒了大型機(jī)的技術(shù),采用了抗掉電的日志式文件系統(tǒng),可以自動(dòng)跟蹤保存用戶數(shù)據(jù),自動(dòng)同步刷新文件系統(tǒng),用戶完全可以隨手關(guān)閉電源,從而達(dá)到快速關(guān)閉系統(tǒng)的目的。
5、巧妙使用“rm”命令
我們可以使用帶“-r”參數(shù)的“rm”命令來刪除一個(gè)非空目錄,例如我們在命令行中輸入“rm -r bbb”這樣的命令,表示系統(tǒng)將把bbb目錄中包含的所有文件和子目錄全部刪除掉。
6、巧妙使用“Tab”鍵
大家知道在Linux字符界面中輸入命令時(shí),有時(shí)需要輸入很多字符,如果經(jīng)常這樣逐個(gè)地輸入字符,比較麻煩。假設(shè)鍵入的字符足以確定該目錄下一個(gè)惟一的文件時(shí),我們只需按鍵盤上的“Tab”鍵就可以自動(dòng)補(bǔ)齊該文件名的剩下部分,例如要把目錄/ccc下的文件“ddddddd-1.2.3.tar.gz”解包時(shí),當(dāng)我們在命令行中鍵入到“tar
xvfz /ccc/d”時(shí),如果該文件是該目錄下惟一以“d”打頭的文件的話就可以直接按下“Tab”鍵,這時(shí)命令會(huì)被自動(dòng)補(bǔ)齊為:tar xvfz
/ccc/ddddddd-1.2.3.tar.gz ,從而提高了輸入效率。
7、多用鼠標(biāo)拷貝與粘貼來提高操作速度
Linux系統(tǒng)安裝后,每次啟動(dòng)到字符界面時(shí)都會(huì)自動(dòng)運(yùn)行一個(gè)叫“gpm”的程序,該程序運(yùn)行后就可以用鼠標(biāo)來拷貝與粘貼了。具體做法是按住鼠標(biāo)左鍵拖動(dòng)使要拷貝的地方突出顯示,這時(shí)突出顯示的區(qū)域已經(jīng)被拷貝,再按鼠標(biāo)右鍵拷貝的內(nèi)容就會(huì)被粘貼在光標(biāo)所在位置了。如果我們在Xwindow下運(yùn)行Linux系統(tǒng),拷貝與粘貼的操作與在Windows
9x系統(tǒng)下一樣。
8、快速啟動(dòng)Linux系統(tǒng)
在DOS下,有一種簡單快速啟動(dòng)Linux的方法,那就是load Linux。loadlin.exe是DOS下的可執(zhí)行程序,它可以在純DOS環(huán)境下迅速啟動(dòng)Linux,而且無需重啟計(jì)算機(jī),通常我們可以在光盤的“/kernels”目錄下找到這個(gè)程序。如果不知這個(gè)程序被放置于安裝盤的何處,可以使用“find
-name loadlin*”命令來尋找。找到之后將其復(fù)制到DOS分區(qū)中,同時(shí)還需要復(fù)制一份你所使用的Linux內(nèi)核文件。可以通過Windows直接從光盤復(fù)制,也可在Linux環(huán)境下使用“mcopy”命令將文件復(fù)制到DOS分區(qū);接著再編寫一個(gè)名為“Linux.bat”的批處理文件,文件內(nèi)容如下:c:loadlin
c:vmlinuz root=/dev/hda1 ro(我們假設(shè)loadlin.exe和vmlinuz這兩個(gè)內(nèi)核文件都在c盤根目錄下,“root”為Linux的根設(shè)備,而且Linux處于硬盤第一分區(qū),所以設(shè)備名為“/dev/hda1”,“ro”意為readonly)。以后在DOS下要啟動(dòng)Linux時(shí),運(yùn)行“Linux.bat”就可以了。
問:Linux為何無法支持34GB以上的IDE硬盤?
答:這是kernel版本的問題,在核心版本2.2.14之前對于IDE接口的硬盤只能支持到34GB,到核心版本2.2.14以上(包括2.2.14版本)便能支持34GB以上IDE接口的硬盤。
問:Linux中如何檢測CPU型號?
答:鍵入cat /proc/cpuinfo命令即可獲知系統(tǒng)配備了幾個(gè)CPU、CPU的型號、制造商、運(yùn)行頻率、cache的大小、有無fpu等信息。
問:如何讓鼠標(biāo)的按鍵符合左手使用的方向?
答:其實(shí),在x-window中,我們可以通過對鼠標(biāo)的設(shè)定來達(dá)到鼠標(biāo)按鍵方向?qū)φ{(diào)的效果。你可以在.xinitrc中加上下面一行內(nèi)容就可調(diào)整鼠標(biāo)按鍵方向:
xmodmap -e "pointer = 3 2 1"
問:如何處理才能在開機(jī)后就去執(zhí)行一個(gè)程序?
答:請?jiān)?etc/rc.d/rc.local中寫入你要執(zhí)行的程序。例如一開機(jī)便啟動(dòng)MySQL數(shù)據(jù)庫,請?jiān)?etc/rc.d/rc.local下鍵入:
/usr/local/bin/mysql.server start即可。注意,請不要使用:exec /usr/local/bin/mysql.server
start
因?yàn)閑xec會(huì)使得后面要執(zhí)行的程序取代目前的程序,如此一來,放在/usr/local/bin/mysql.server start后面的程序就都不會(huì)執(zhí)行了。
問:如何使得系統(tǒng)在一段時(shí)間不操作后能自動(dòng)退出?
答:當(dāng)系統(tǒng)管理員?root賬戶擁有者 在離開計(jì)算機(jī)時(shí),出于安全考慮,最好能讓系統(tǒng)在隔一段時(shí)間后能自動(dòng)退出。為了能做到這一點(diǎn),你必須為一個(gè)叫做"TMOUT"的Linux變量設(shè)置指定時(shí)間?時(shí)間單位是秒 。編輯"/etc/profile"文件,在有"HISTFILESIZE="字樣的那一行的后面加上下面一行內(nèi)容:
TMOUT=3600
加入的這一行代表的含義是1小時(shí)?60×60=3600秒 。當(dāng)你把這行內(nèi)容放入你的"/etc/profile"文件后,在系統(tǒng)連續(xù)一小時(shí)不用時(shí),系統(tǒng)會(huì)自動(dòng)通知系統(tǒng)中的所有用戶系統(tǒng)將退出。你也可以把該變量設(shè)置放在用戶的各自的".bashrc"文件中,使得系統(tǒng)能在指定的一段時(shí)間不用后能自動(dòng)退出。
該變量參數(shù)被設(shè)置在系統(tǒng)中后,你必須先退出系統(tǒng),然后再以root帳戶重新登錄后,該項(xiàng)設(shè)置才會(huì)生效。
問:在Linux下如何更改系統(tǒng)時(shí)間?
答:若你要改時(shí)間,以root身份執(zhí)行:
date -s HH?MM?SS (更改時(shí)間,其中HH、MM、SS分別為時(shí)、分、秒)
clock -w(寫入Cmos)
如此即可,若你是時(shí)區(qū)設(shè)錯(cuò)的話,則可到#timeconfig中重新設(shè)定。
1、處理特殊的文件名
假設(shè)Linux系統(tǒng)中有一個(gè)文件名叫“-ee”,如果我們想對它進(jìn)行操作,例如要?jiǎng)h除它,按照一般的刪除方法在命令行中輸入rm
-ee命令,界面會(huì)提示我們是“無效選項(xiàng)”(invalid option),原來由于文件名的第一個(gè)字符為“-”,Linux把文件名當(dāng)作選項(xiàng)了,我們可以使用“--”符號來解決這個(gè)問題,輸入“rm
-- -ee”命令便可順利刪除名為“-ee”的文件。如果是其他特殊字符的話可以在特殊字符前加一個(gè)“”符號,或者用雙引號把整個(gè)文件名括起來。
2、直接進(jìn)行Linux的安裝工作
在安裝Linux操作系統(tǒng)時(shí),可以利用該系統(tǒng)光盤中的一個(gè)名為“l(fā)oadlin.exe”的軟件,將Linux核心直接調(diào)入內(nèi)存,由Linux核心代替當(dāng)前操作系統(tǒng)來接管計(jì)算機(jī),并進(jìn)入Linux的安裝界面。在安裝Linux時(shí),我們只要在運(yùn)行對話框中輸入“l(fā)oadlin
E:imagesvmlinuz root=/dev/ram initrd=E:imagesinitrd.img”這個(gè)命令就可以直接安裝Linux了;其中“E:imagesvmlinuz”為Linux的核心名。
3、消除Xwindows下的死機(jī)現(xiàn)象
我們可以用兩個(gè)常用的方法來消除這種現(xiàn)象:第一,用鍵盤上的復(fù)合鍵“Ctrl+Alt+Backspace”來關(guān)閉當(dāng)前正在運(yùn)行的任務(wù);第二,首先按住鍵盤上的“Ctrl+Alt+F2”復(fù)合鍵,讓系統(tǒng)切換到另一個(gè)操作臺(tái),然后登錄到系統(tǒng),再執(zhí)行“#ps
-ax/grep startx”命令,這將會(huì)列出你的Xserver的進(jìn)程標(biāo)識,接著在命令行中輸入如下命令就能消除Xwindows下的死機(jī)現(xiàn)象:#kill
-9 PID_Number,最后通過“Alt+F1”復(fù)合鍵返回到原來的平臺(tái)。
4、快速關(guān)閉Linux系統(tǒng)
最新版本的Linux/UNIX系統(tǒng)借鑒了大型機(jī)的技術(shù),采用了抗掉電的日志式文件系統(tǒng),可以自動(dòng)跟蹤保存用戶數(shù)據(jù),自動(dòng)同步刷新文件系統(tǒng),用戶完全可以隨手關(guān)閉電源,從而達(dá)到快速關(guān)閉系統(tǒng)的目的。
5、巧妙使用“rm”命令
我們可以使用帶“-r”參數(shù)的“rm”命令來刪除一個(gè)非空目錄,例如我們在命令行中輸入“rm
-r bbb”這樣的命令,表示系統(tǒng)將把bbb目錄中包含的所有文件和子目錄全部刪除掉。
6、巧妙使用“Tab”鍵
大家知道在Linux字符界面中輸入命令時(shí),有時(shí)需要輸入很多字符,如果經(jīng)常這樣逐個(gè)地輸入字符,比較麻煩。假設(shè)鍵入的字符足以確定該目錄下一個(gè)惟一的文件時(shí),我們只需按鍵盤上的“Tab”鍵就可以自動(dòng)補(bǔ)齊該文件名的剩下部分,例如要把目錄/ccc下的文件“ddddddd-1.2.3.tar.gz”解包時(shí),當(dāng)我們在命令行中鍵入到“tar
xvfz /ccc/d”時(shí),如果該文件是該目錄下惟一以“d”打頭的文件的話就可以直接按下“Tab”鍵,這時(shí)命令會(huì)被自動(dòng)補(bǔ)齊為:tar xvfz
/ccc/ddddddd-1.2.3.tar.gz ,從而提高了輸入效率。
7、多用鼠標(biāo)拷貝與粘貼來提高操作速度
Linux系統(tǒng)安裝后,每次啟動(dòng)到字符界面時(shí)都會(huì)自動(dòng)運(yùn)行一個(gè)叫“gpm”的程序,該程序運(yùn)行后就可以用鼠標(biāo)來拷貝與粘貼了。具體做法是按住鼠標(biāo)左鍵拖動(dòng)使要拷貝的地方突出顯示,這時(shí)突出顯示的區(qū)域已經(jīng)被拷貝,再按鼠標(biāo)右鍵拷貝的內(nèi)容就會(huì)被粘貼在光標(biāo)所在位置了。如果我們在Xwindow下運(yùn)行Linux系統(tǒng),拷貝與粘貼的操作與在Windows
9x系統(tǒng)下一樣。
8、快速啟動(dòng)Linux系統(tǒng)
在DOS下,有一種簡單快速啟動(dòng)Linux的方法,那就是load
Linux。loadlin.exe是DOS下的可執(zhí)行程序,它可以在純DOS環(huán)境下迅速啟動(dòng)Linux,而且無需重啟計(jì)算機(jī),通常我們可以在光盤的“/kernels”目錄下找到這個(gè)程序。如果不知這個(gè)程序被放置于安裝盤的何處,可以使用“find
-name loadlin*”命令來尋找。找到之后將其復(fù)制到DOS分區(qū)中,同時(shí)還需要復(fù)制一份你所使用的Linux內(nèi)核文件??梢酝ㄟ^Windows直接從光盤復(fù)制,也可在Linux環(huán)境下使用“mcopy”命令將文件復(fù)制到DOS分區(qū);接著再編寫一個(gè)名為“Linux.bat”的批處理文件,文件內(nèi)容如下:c:loadlin
c:vmlinuz root=/dev/hda1 ro(我們假設(shè)loadlin.exe和vmlinuz這兩個(gè)內(nèi)核文件都在c盤根目錄下,“root”為Linux的根設(shè)備,而且Linux處于硬盤第一分區(qū),所以設(shè)備名為“/dev/hda1”,“ro”意為readonly)。以后在DOS下要啟動(dòng)Linux時(shí),運(yùn)行“Linux.bat”就可以了。
對于那些用慣了Windows的朋友,初用Linux時(shí)可能有處處不方便的感覺,以下是我使用Linux的一些經(jīng)驗(yàn)技巧,相信對初學(xué)者會(huì)有所幫助的。
1.使用虛擬控制臺(tái)
登錄后按Alt+F2鍵這時(shí)又可以看到“l(fā)ogin:”提示符,這個(gè)就是第二個(gè)虛擬控制臺(tái)。一般新安裝的Linux有四個(gè)虛擬控制臺(tái),可以用Alt+F1~Alt+F4來訪問。虛擬控制臺(tái)最有用的時(shí)候是當(dāng)一個(gè)程序出錯(cuò)鎖住輸入時(shí)可以切換到其他虛擬控制臺(tái)登錄進(jìn)入后殺掉這個(gè)出錯(cuò)的進(jìn)程。
2.拷貝與粘貼
適用于字符界面。Linux每次啟動(dòng)時(shí)都會(huì)自動(dòng)運(yùn)行一個(gè)叫g(shù)pm的程序,該程序運(yùn)行后就可以用鼠標(biāo)來拷貝與粘貼了。具體做法是按住鼠標(biāo)左鍵拖動(dòng)使要拷貝的地方反白,這時(shí)反白的區(qū)域已經(jīng)被拷貝,再按鼠標(biāo)右鍵拷貝的內(nèi)容就會(huì)被粘貼在光標(biāo)所在位置了。
如果系統(tǒng)啟動(dòng)時(shí),未運(yùn)行g(shù)pm,您可以在進(jìn)入字符界面后再進(jìn)行設(shè)置:#ntsysv。將會(huì)出現(xiàn)一對話框,先用鍵盤上的下鍵頭移到gpm選項(xiàng),然后按空格鍵將其選中(選中項(xiàng)前有一星號),最后重啟,重新登陸即可。
3.快速進(jìn)入某些目錄
鍵入cd ~可進(jìn)入用戶的home目錄;鍵入cd -可進(jìn)入上一個(gè)進(jìn)入的目錄。
4.軟驅(qū)的使用
(1)如果是Linux的ext2文件系統(tǒng)用如下命令:#mount -t ext2 /dev/fd0/mnt/floppy;若是dos格式的軟盤則用命令:#mount
-t msdos/dev/fd0/mnt/floppy。然后就可以在/mnt/floppy里訪問軟盤的內(nèi)容了;
(2)注意在取出軟盤之前要先卸掉軟盤上的文件系統(tǒng):#umount /mnt/floppy,否則會(huì)導(dǎo)致信息丟失;
(3)在軟盤上建立文件系統(tǒng)可用如下命令:#mke2fs /dev/fd0H1440;
(4)格式化1.44M的軟盤:#fdformat /fd0H1440。
5.使用光驅(qū)
(1)使用光驅(qū)前,要先mount一下:#mount /dev/cdrom /mnt/cdrom,然后您就可以進(jìn)入/mnt/cdrom目錄下讀取光盤內(nèi)容了;
(2)當(dāng)您想退出光盤時(shí),須使用umout命令,否則光驅(qū)就會(huì)一直處于死鎖狀態(tài):#umount /mnt/cdrom。還有一方法可直接退出光盤:#eject。
6.顯示文件的類型
用命令file可以使你知道某個(gè)文件究竟是ELF格式的可執(zhí)行文件,還是shell script文件或是其他的什么格式,例如:#file startx。
7.命令文件的路徑
當(dāng)你鍵入一些命令如find、reboot、mount、startx時(shí)是否想過這些文件究竟放在哪個(gè)目錄里?用命令whereis可以實(shí)現(xiàn)。如:#whereis
startx。
8.查找文件
find命令要加一些參數(shù)才能查到文件。如:在/usr里查找文件XF86Setup:#find /usr -name XF86Setup -print。
9.一次解開.tar.gz文件
解開.tar.gz文件一般要先用gunzip解壓再用tar解包,在Linux下可以一次完成。如:#tar zxpvf sample.tar.gz。
10.Linux里的Norton Commander
在提示符下鍵入命令mc后你就會(huì)看到一個(gè)與Norton Commander很相似的界面,實(shí)際上功能也很相似甚至更強(qiáng)大,比如可以直接對.tar.gz壓縮包里的文件進(jìn)行操作(有點(diǎn)像ZipMagic)。
11.啟動(dòng)后直接進(jìn)入X-windows
編輯/etc/inittab文件,把id:3:initdefautl改為id:4:initdefautl。不過搜索路徑可能會(huì)有些問題,關(guān)機(jī)時(shí)你得直接進(jìn)入/sbin里去執(zhí)行shutdown。
12.后臺(tái)運(yùn)行X程序
執(zhí)行一個(gè)X程序時(shí)別忘了在后面加一個(gè)&號,如#netscape&。否則的話在你退出執(zhí)行的程序之前再無法在那個(gè)終端窗口里輸入命令了。
13. 強(qiáng)行退出X-windows
有時(shí)候在X里由于程序出錯(cuò)鼠標(biāo)鍵盤都不起作用,這時(shí)候不用著急,因?yàn)樵贚inux下幾乎不會(huì)像在Win95里那樣惡性死機(jī),你只須鍵入Ctrl+Alt+BackSpace鍵就可以回到字符界面下了。
14.顯卡的配置(命令:Xconfigurator,注意:X是大寫!)
此命令是一圖型界面的對話框,您可以根據(jù)實(shí)際情況選擇配置參數(shù)。
15.聲卡的配置(命令:sndconfig)
此命令也是一圖型界面的對話框,您可以根據(jù)實(shí)際情況選擇配置參數(shù),不過Linux兼容的聲卡種類比較少。
16.Linux的在線幫助(命令:man 命令名)
Linux提供了幾千頁的在線幫助文檔,內(nèi)容幾乎覆蓋了Linux的方方面面,對于初學(xué)者很有幫助!例如:#man mount。
相信以上幾點(diǎn)介紹,能給讀者帶來幫助和啟迪?。ㄉ綎| 尹植平)
作為桌面操作系統(tǒng),Linux的人機(jī)界面可真是不敢恭維,但是,作為網(wǎng)絡(luò)操作系統(tǒng),其易用性(對于NOS而言)和高性能恐怕是很難有能出其右的。當(dāng)然,這并不是說它的操作很簡單,而是說若能掌握一些技巧,無論是系統(tǒng)設(shè)置還是網(wǎng)絡(luò)管理都能變得輕松自如、隨心所欲。
禁止終端模式下的顯示器自動(dòng)節(jié)能
大部分PC上安裝Linux后,在終端模式下也能實(shí)現(xiàn)自動(dòng)關(guān)閉顯示器的功能,但是假如我們要在顯示器上即時(shí)顯示一些信息,如:網(wǎng)絡(luò)流量、包分析等,這個(gè)功能就變得非常討厭了。采用修改CMOS和系統(tǒng)屬性都無法解決,解決的辦法是用setterm,設(shè)置終端的命令,如setterm
--blank,就能關(guān)閉自動(dòng)節(jié)能這一特性。
將man幫助文檔存為普通txt文件
Man的地位在Linux中可謂至關(guān)重要,比Windows里的中看不中用的Help好多了。但是它所顯示的信息卻不是普通的文本,如果直接將這些文字重定向到一個(gè)文本文件,你會(huì)發(fā)現(xiàn),在man中高亮顯示的文字就變成了兩個(gè),而且有不計(jì)其數(shù)的制表符,這使我們的打印、編輯都變得非常不便。不過使用下面這樣一條語句就能得到tcsh命令的普通幫助文本:man
tcsh|col -b >tcsh.txt,再也不會(huì)有那些討厭的重復(fù)字符了。
IDE硬盤的優(yōu)化
Linux可能更加注重?cái)?shù)據(jù)的安全性而非性能,這對NOS來說是完全必要的,但是打開IDE硬盤的一些有用的優(yōu)化應(yīng)該沒什么害處吧。看看這個(gè)命令:hdparm,它的作用是顯示、設(shè)置硬盤(包括光驅(qū))的參數(shù)。我們可以先用hdparm
-i /dev/hda查看hda這塊硬盤的參數(shù)設(shè)置,再根據(jù)情況來修改,如:hdparm - c 1可將硬盤的I/O讀寫支持由16位改為32位,hdparm
-m 16是開啟硬盤的MultiCount。在執(zhí)行這條命令之前最好先用-i參數(shù)確定你的硬盤所能支持的最大MultiCount數(shù)。主要優(yōu)化的就是這兩項(xiàng)了,其他的不敢確定也別亂來??梢杂胔dparm
-t /dev/had在優(yōu)化前后測試硬盤性能。
允許root從遠(yuǎn)程登錄
Linux的默認(rèn)安全設(shè)置是root不能從遠(yuǎn)程工作站登錄,這使我們對Linux服務(wù)器進(jìn)行遠(yuǎn)程管理造成了不小的麻煩,/etc/securtty正是控制這一機(jī)制的關(guān)鍵文件,在這個(gè)配置文件的root小節(jié)中加入pts/0、pts/1等你希望root能夠登錄的終端名就行了。
恢復(fù)被覆蓋的MBR(主引導(dǎo)扇區(qū))的Linux引導(dǎo)程序LILO
如果LILO安裝在MBR,那么先裝Linux再安裝Windows,LILO就會(huì)被覆蓋,這時(shí)我們將無法從硬盤引導(dǎo)Linux,怎么辦?我們可以啟動(dòng)到Windows命令行模式,從Linux光盤上拷貝loadlin.exe和vmlinuz兩個(gè)文件到Windows分區(qū),然后執(zhí)行l(wèi)oadlin
vmlinuz root=/dev/had? rw。這條命令的作用是從指定的分區(qū)啟動(dòng)Linux,并將根分區(qū)(1)設(shè)為讀寫模式,這樣就可以修改Linux的大部分設(shè)置或者恢復(fù)LILO。要注意的是這種情況啟動(dòng)的Linux并不完整,如:MSDOS、VFAT文件系統(tǒng)的支持、網(wǎng)絡(luò)等都無法使用,不過沒關(guān)系,只要能這樣啟動(dòng),我們可以利用mkbootdisk來創(chuàng)建Linux啟動(dòng)盤,用這張啟動(dòng)盤啟動(dòng)Linux,就能完全使用Linux了。啟動(dòng)Linux以后,只要將/etc/lilo.conf文件的第一項(xiàng)boot=/dev/hda?改為boot=/dev/hda,然后執(zhí)行l(wèi)ilo就能恢復(fù)從MBR啟動(dòng)Linux。
配置文件一覽表 文件位置及名稱
作用
/etc/rc.d/rc.sysinit
系統(tǒng)啟動(dòng)時(shí)的公用服務(wù)配置
/etc/rc.d/rc.local
系統(tǒng)啟動(dòng)時(shí)的本地服務(wù)配置
/etc/bashrc、/etc/profile
bash shell的公用配置
/home/username/.bashrc
各用戶私人bash shell配置
/etc/securetty
終端安全設(shè)置
/etc/hosts
主機(jī)名與ip地址的對應(yīng)文件
/etc/resolv.conf
dns服務(wù)器配置
/etc/squid.conf或/etc/squid/squid.conf
squid代理服務(wù)器軟件配置
/etc/smb.conf或/etc/samba/smb.conf
基于smb的網(wǎng)上鄰居配置
/etc/dhcpd.conf
linux下的dhcp服務(wù)器配置文件
/etc/filesystems
系統(tǒng)支持的文件系統(tǒng)列表
/etc/fstab
當(dāng)前系統(tǒng)中已激活分區(qū)的信息
/etc/host.conf
指定系統(tǒng)搜索dns記錄的配置文件
/etc/lilo.conf
啟動(dòng)程序lilo的配置文件
Linux系統(tǒng)的大部分控制都是基于配置文件的,了解這些配置文件能更有利于使用Linux。
將Linux加入到Win NT/2000的啟動(dòng)選單中
Linux的啟動(dòng)選單不錯(cuò),可惜不能顯示中文,而且不能選擇啟動(dòng)NT還是Win 98,所以我認(rèn)為啟動(dòng)選單還是用NT系列的好。其實(shí)做起來很簡單,安裝完所有Windows系列操作系統(tǒng)后再裝Linux,并在安裝時(shí)選擇將LILO安裝到Linux所在的分區(qū)而非MBR,然后利用啟動(dòng)盤啟動(dòng)Linux,將Windows分區(qū)mount為/mnt/dos;然后執(zhí)行dd
if=/dev/hda? bs=512 count=1 of=/mnt/dos/ bootsect.lin,這樣在Windows分區(qū)就有了一個(gè)bootsect.lin文件,它記錄了Linux分區(qū)的啟動(dòng)信息,然后在Windows
NT的啟動(dòng)配置文件boot.ini中加入C:BOOTSECT.LIN = "紅帽子Linux 7.0",再啟動(dòng)電腦的時(shí)候,我們發(fā)現(xiàn),在Windows
NT啟動(dòng)選單中多了“紅帽子Linux 7.0”這個(gè)選項(xiàng),選擇它就能啟動(dòng)我們的Linux。需要注意的是NT在啟動(dòng)時(shí)仍然只識別8.3格式的文件,所以不要把bootsect.lin改為長文件名。
用Squid來控制文件類型的訪問
Linux的一大好處就是能夠非常方便地對IP網(wǎng)絡(luò)進(jìn)行路由,很多Linux系統(tǒng)就是專門用作Internet接入路由器。但是,iptables或ipchain等包過濾軟件只能控制用戶訪問哪些站點(diǎn),而無法控制用戶訪問哪些文件。使用Linux下的代理服務(wù)器軟件Squid可以很容易地做到這一點(diǎn),Squid.conf文件中的urlpath_regex項(xiàng)就是控制每種注冊的MIME文件訪問的,例如以下語句:
#給出需要控制訪問的MIME文件類型(訪問控制列表即acl)
acl denymine urlpath_regex .exe .zip
#禁止這類文件的訪問
http_access deny denymine
這樣就禁止了這條語句以后的所有用戶對相應(yīng)站點(diǎn)zip、exe文件的訪問,當(dāng)然你可以加入其他文件類型,如MP3等。再利用iptables之類的ReDirect重定向功能,強(qiáng)迫用戶通過Squid代理上網(wǎng),即所謂“透明代理”,就可完全控制用戶對站點(diǎn)的訪問了。
讓系統(tǒng)使用默認(rèn)的彩色文件顯示
Linux終端下的不同類型文件的彩色顯示讓我們感覺非常方便,但有時(shí)可能不小心丟失這一功能,在配置文件中加入alias ls="ls
--color -F -N"就能保證這一功能的正常使用。
利用cron保持某些分區(qū)的激活狀態(tài)
cron相當(dāng)于Win 98的計(jì)劃任務(wù),它能根據(jù)用戶的要求定時(shí)執(zhí)行某些命令。如果你mount了一些NTFS分區(qū),并經(jīng)常訪問這個(gè)分區(qū)(如Web
Server對一些文件的訪問),很有可能因?yàn)闀r(shí)間過長而無法正確讀寫數(shù)據(jù),這時(shí)可以利用cron的定時(shí)訪問功能,保證該分區(qū)總是激活的。根據(jù)個(gè)人經(jīng)驗(yàn),網(wǎng)絡(luò)上的NTFS分區(qū)最好讓cron每15分鐘訪問一次,否則就有可能出現(xiàn)需要該分區(qū)數(shù)據(jù)時(shí)出現(xiàn)mount失敗的情況。
注:本文中凡未經(jīng)說明的都以RedHat Linux為準(zhǔn)。
RPM 有五種基本的操作方式(不包括創(chuàng)建軟件包): 安裝, 卸載, 升級, 查詢,和驗(yàn)證。 下面我們就來逐一的講解吧。
一、 安裝RPM包
RPM 軟件包通常具有類似foo-1.0-1.i386.rpm 的文件名。其中包括 軟件包的名稱(foo),版本號(1.0),發(fā)行號(1),
和 硬件平臺(tái)(i386)。安裝一個(gè)軟件包只需簡單的鍵入以下命令:
$ rpm -ivh foo-1.0-1.i386.rpm
foo ####################################
RPM安裝完畢后會(huì)打印出軟件包的名字(并不一定與文件名相同), 而后打印一連串的#號以表示安裝進(jìn)度。雖然軟件包的安裝被設(shè)計(jì)的盡量簡單易行, 但還是可能會(huì)發(fā)生如下的錯(cuò)誤:
1、 軟件包已被安裝
如果您的軟件包已被安裝, 將會(huì)出現(xiàn)以下信息:
$ rpm -ivh foo-1.0-1.i386.rpm
foo package foo-1.0-1 is already installed
error: foo-1.0-1.i386.rpm cannot be installed
如果您仍舊要安裝該軟件包,可以在命令行上使用--replacepkgs 選項(xiàng),RPM將忽略該錯(cuò)誤信息強(qiáng)行安裝。
2、文件沖突
如果您要安裝的軟件包中有一個(gè)文件已在安裝其它軟件包時(shí)安裝,會(huì)出現(xiàn)以下錯(cuò)誤信息:
# rpm -ivh foo-1.0-1.i386.rpm
foo /usr/bin/foo conflicts with file from bar-1.0-1
error: foo-1.0-1.i386.rpm cannot be installed
要想讓RPM 忽略該錯(cuò)誤信息, 請使用--replacefiles 命令行選項(xiàng)。
3、未解決依賴關(guān)系
RPM軟件包可能依賴于其它軟件包,也就是說要求在安裝了特定的軟件包之后才能安裝該軟件包。如果在您安裝某個(gè)軟件包時(shí)存在這種未解決的依賴關(guān)系。會(huì)產(chǎn)生以下信息:
$ rpm -ivh bar-1.0-1.i386.rpm
failed dependencies: foo is needed by bar-1.0-1
您必須安裝完所依賴的軟件包,才能解決這個(gè)問題。如果您想強(qiáng)制安裝(這是個(gè)壞主意, 因?yàn)榘惭b后的軟件包未必能正常運(yùn)行), 請使用--nodeps 命令行選項(xiàng)。
二、卸載RPM包
卸載軟件包就象安裝軟件包時(shí)一樣簡單:
$ rpm -e foo
注意這里使用軟件包的名字name ``foo'', 而不是軟件包文件的名字file ``foo-1.0-1.i386.rpm''。
如果其它軟件包依賴于您要卸載的軟件包,卸載時(shí)則會(huì)產(chǎn)生錯(cuò)誤信息。如:
$ rpm -e foo
removing these packages would break dependencies:foo is needed by bar-1.0-1
若讓RPM忽略這個(gè)錯(cuò)誤繼續(xù)卸載(這可不是一個(gè)好主意,因?yàn)橐蕾囉谠撥浖某绦蚩赡軣o法運(yùn)行),請使用--nodeps 命令行選項(xiàng)。
三、升級RPM包
升級軟件包和安裝軟件包十分類似:.
$ rpm -Uvh foo-2.0-1.i386.rpm
foo ####################################
RPM將自動(dòng)卸載已安裝的老板本的foo 軟件包,您不會(huì)看到有關(guān)信息。事實(shí)上您可能總是使用 -U 來安裝軟件包,因?yàn)榧幢阋酝窗惭b過該軟件包,也能正常運(yùn)行。因?yàn)镽PM
執(zhí)行智能化的軟件包升級,自動(dòng)處理配置文件,您將會(huì)看到如下信息:
saving /etc/foo.conf as /etc/foo.conf.rpmsave
這表示您對配置文件的修改不一定能向上兼容。 因此,RPM 會(huì)先備份老文件再安裝新文件。您應(yīng)當(dāng)盡快解決這兩個(gè)配置文件的不同之處,以使系統(tǒng)能持續(xù)正常運(yùn)行。
因?yàn)樯墝?shí)際包括軟件包的卸載與安裝兩個(gè)過程,所以您可能會(huì)碰到由這兩個(gè)操作引起的錯(cuò)誤。另一個(gè)你可能碰到的問題是:當(dāng)您使用舊版本的軟件包來升級新版本的軟件時(shí),RPM會(huì)產(chǎn)生以下錯(cuò)誤信息:
$ rpm -Uvh foo-1.0-1.i386.rpm
foo package foo-2.0-1 (which is newer) is already installed
error: foo-1.0-1.i386.rpm cannot be installed
如果你確有需要將該軟件包”降級,加入 --oldpackage 命令選項(xiàng)就可以了。
四、 查詢已安裝的軟件包
使用命令rpm -q來查詢已安裝軟件包的數(shù)據(jù)庫。簡單的使用命令 rpm -q foo 會(huì)打印出foo軟件包 的包名
,版本號,和發(fā)行號:
$ rpm -q foo
foo-2.0-1
除了指定軟件包名以外,您還可以使用以下選項(xiàng)來指明要查詢哪些軟件包的信 息。 這些選項(xiàng)被稱之為 “軟件包指定選項(xiàng)“。
· -a 查詢所有已安裝的軟件包
· -f 將查詢包含有文件. 的軟件包
· -p 查詢軟件包文件名為的軟件包
還可以指定查詢軟件包時(shí)所顯示的信息。它們被稱作信息選擇選項(xiàng):
· -i 顯示軟件包信息,如描述, 發(fā)行號, 尺寸, 構(gòu)建日期, 安裝日期, 平臺(tái), 以及其它一些各類信息。
· -l 顯示軟件包中的文件列表。
· -s 顯示軟件包中所有文件的狀態(tài)。
· -d 顯示被標(biāo)注為文檔的文件列表(man 手冊, info 手冊, README's, etc)。
· -c 顯示被標(biāo)注為配置文件的文件列表。這些是您要在安裝完畢以后加以定制的文件(sendmail.cf, passwd, inittab, etc)。
對于那些要顯示文件列表的文件, 您可以增加-v 命令行選項(xiàng)以獲得如同 ls -l 格式的輸出。
五、 驗(yàn)證軟件包
驗(yàn)證軟件包是通過比較已安裝的文件和軟件包中的原始文件信息來進(jìn)行的。驗(yàn)證主要是比較文件的尺寸, MD5 校驗(yàn)碼,
文件權(quán)限, 類型, 屬主和用戶組等。
rpm-V命令用來驗(yàn)證一個(gè)軟件包。您可以使用任何包選擇選項(xiàng)來查詢您要驗(yàn)證的軟件包。 命令rpm -V foo 將用來驗(yàn)證foo軟件包。又如:
· 驗(yàn)證包含特定文件的軟件包:
rpm -Vf /bin/vi
· 驗(yàn)證所有已安裝的軟件包:
rpm -Va
· 根據(jù)一個(gè)RPM包來驗(yàn)證:
rpm -Vp foo-1.0-1.i386.rpm
如果您擔(dān)心你的RPM數(shù)據(jù)庫已被破壞,就可以使用這種方式。
如果一切均校驗(yàn)正常將不會(huì)產(chǎn)生任何輸出。如果有不一致的地方,就會(huì)顯示出來。 輸出格式是8位長字符串, ``c'' 用以指配置文件, 接著是文件名.
8位字符的每一個(gè) 用以表示文件與RPM數(shù)據(jù)庫中一種屬性的比較結(jié)果 。``.'' (點(diǎn)) 表示測試通過。.下面的字符表示對RPM軟件包進(jìn)行的某種測試失?。?br>
顯示字符 錯(cuò)誤源
5 MD5 校驗(yàn)碼
S 文件尺寸
L 符號連接
T 文件修改日期
D 設(shè)備
U 用戶
G 用戶組
M 模式e (包括權(quán)限和文件類型)
如果有錯(cuò)誤信息輸出, 您應(yīng)當(dāng)認(rèn)真加以考慮,是通過刪除還是重新安裝來解決出現(xiàn)的問題。
六、教你一招
RPM不僅是安裝/卸載程序的工具,它還是系統(tǒng)維護(hù)和診斷的一把好手??催^下面幾個(gè)例子你就會(huì)領(lǐng)教它的厲害了。
· 如果您誤刪了一些文件, 但您不能肯定到底都刪除了那些文件,怎么辦? 您可以鍵入:
rpm -Va
rpm會(huì)在屏幕上顯示出文件刪除的情況。若你發(fā)現(xiàn)一些文件丟失了或已被損壞, 您就可以重新安裝或先卸載再安裝該軟件包。
· 如果您碰到了一個(gè)自己不認(rèn)識的文件,要想查處它屬于哪個(gè)軟件包,您可以輸入以下命令
rpm -qf /usr/X11R6/bin/xjewel
輸出的結(jié)果會(huì)是:
xjewel-1.6-1
· 如果發(fā)生綜合以上兩個(gè)例子的情況,如文件/usr/bin/paste出了問題。您想知道哪個(gè)軟件包中包含該文件,您這時(shí)可以簡單的鍵入:
rpm -Vf /usr/bin/paste
· 如果您想了解正在使用的程序的詳細(xì)信息, 您可以鍵入如下命令來獲得軟件包中關(guān)于該程序的文檔信息:
rpm -qdf /usr/bin/ispell
輸出結(jié)果為:
/usr/man/man4/ispell.4
/usr/man/man4/english.4
/usr/man/man1/unsq.1
/usr/man/man1/tryaffix.1
/usr/man/man1/sq.1
/usr/man/man1/munchlist.1
/usr/man/man1/ispell.1
/usr/man/man1/findaffix.1
/usr/man/man1/buildhash.1
/usr/info/ispell.info.gz
/usr/doc/ispell-3.1.18-1/README
· 您發(fā)現(xiàn)了一個(gè)新的koules RPM,但您不知道它是做什么的,您可以鍵入如下命令:
rpm -qip koules-1.2-2.i386.rpm
· 現(xiàn)在您想了解koules的 RPM包在系統(tǒng)里安裝了哪些文件, 您可以鍵入:
rpm -qlp koules-1.2-2.i386.rpm輸出結(jié)果為:
/usr/man/man6/koules.6
/usr/lib/games/kouleslib/start.raw
/usr/lib/games/kouleslib/end.raw
/usr/lib/games/kouleslib/destroy2.raw
/usr/lib/games/kouleslib/destroy1.raw
/usr/lib/games/kouleslib/creator2.raw
/usr/lib/games/kouleslib/creator1.raw
/usr/lib/games/kouleslib/colize.raw
/usr/lib/games/kouleslib
/usr/games/koules
以上只是幾個(gè)常見例子。隨著您進(jìn)一步的使用RPM,您會(huì)發(fā)現(xiàn)它的各種功能選項(xiàng)組合可以實(shí)現(xiàn)更為強(qiáng)大的RPM包管理功能。
RPM不僅在安裝,升級,卸載方面工作出色,而且在查詢方面比其它軟件包管理工具更勝一籌。這從以下幾種情況可以看出:
* 當(dāng)你在瀏覽系統(tǒng)文件時(shí),發(fā)現(xiàn)一個(gè)文件,想知道它來自哪個(gè)軟件包時(shí),可以用RPM來查詢得知;
* 當(dāng)你的朋友給你發(fā)送來一個(gè)軟件包,但你不知道這是個(gè)什么樣的軟件包,不知道它做些什么,安裝些什么,來源是哪里。這時(shí),你可以用RPM查詢搞定;
* 幾個(gè)月前你安裝了XFree86窗口軟件,但現(xiàn)在你忘了它的版本號,也不知它的說明文檔在哪里。這時(shí),你可以用RPM查詢一下這個(gè)軟件包,得到這方面的信息。
RPM的查詢還有一個(gè)高級功能,即定制輸出功能。你可用--queryformat(或-qf)來定制一下輸出格式,這樣,RPM查詢得到的信息將以你定制的格式輸出,這樣很是方便,尤適合于程序的自動(dòng)處理。
命令格式
查詢RPM格式的軟件包,可使用如下命令格式:
rpm -q [查詢選項(xiàng)1 查詢選項(xiàng)2...]
注: 也可使用--query代替-q,效果相同。
選項(xiàng)列表
選項(xiàng)詳解
指定用選項(xiàng)中ftp與http相關(guān)的四個(gè)選項(xiàng)(--ftpproxy,--ftpport,--httpproxy,--httpport)和通用選項(xiàng)的解釋,請參見<<精通RPM之二--安裝篇>>,本文不再贅述。下面對指定用選項(xiàng)做些解釋:
指定用選項(xiàng)可分為如下幾類:
一、軟件包選擇類
此類選項(xiàng)在一次只能選擇一個(gè),選擇多個(gè)時(shí)RPM將提示錯(cuò)誤:
rpm: one type of query/verify may be performed at a time
從查詢方面看,一個(gè)是查詢那些已安裝的軟件包,一個(gè)是查詢未安裝的軟件包。
1. 查詢已安裝的軟件包,使用下列選項(xiàng):
(1) -a (或--all) : 查詢所有已安裝的軟件包
# rpm -q -a
setup-2.0.2-1
filesystem-1.3.4-5
basesystem-6.0-5
agrep-2.04-5
aktion-0.3.6-2
amor-0.5-1
dhcpcd-1.3.17pl2-1
ldconfig-1.9.5-15
glibc-2.1.2-12
chkconfig-1.0.6-2
......
#
注: 本例查找當(dāng)前系統(tǒng)中安裝的所有軟件包,輸出很多,僅列出幾個(gè),剩下的省略掉了(以......表示)。
(2) -g (或--group) : 查詢有哪些軟件包屬于指定類別
RPM根據(jù)軟件功用的不同,將軟件分為以下若干類:(括號內(nèi)為注釋)
Amusements/Games (娛樂/游戲)
Amusements/Graphics(娛樂/圖形)
Applications/Archiving (應(yīng)用/檔案)
Applications/Communications (應(yīng)用/通訊)
Applications/Databases (應(yīng)用/數(shù)據(jù)庫)
Applications/Editors (應(yīng)用/編輯器)
Applications/Emulators (應(yīng)用/仿真器)
Applications/Engineering (應(yīng)用/工程)
Applications/File (應(yīng)用/文件)
Applications/Internet (應(yīng)用/因特網(wǎng))
Applications/Multimedia (應(yīng)用/多媒體)
Applications/Productivity (應(yīng)用/產(chǎn)品)
Applications/Publishing (應(yīng)用/印刷)
Applications/System (應(yīng)用/系統(tǒng))
Applications/Text (應(yīng)用/文本)
Development/Debuggers (開發(fā)/調(diào)試器)
Development/Languages (開發(fā)/語言)
Development/Libraries (開發(fā)/函數(shù)庫)
Development/System (開發(fā)/系統(tǒng))
Development/Tools (開發(fā)/工具)
Documentation (說明文檔)
System Environment/Base (系統(tǒng)環(huán)境/基礎(chǔ))
System Environment/Daemons (系統(tǒng)環(huán)境/守護(hù))
System Environment/Kernel (系統(tǒng)環(huán)境/內(nèi)核)
System Environment/Libraries (系統(tǒng)環(huán)境/函數(shù)庫)
System Environment/Shells (系統(tǒng)環(huán)境/接口)
User Interface/Desktops (用戶界面/桌面)
User Interface/X (用戶界面/X窗口)
User Interface/X Hardware Support (用戶界面/X硬件支持)
Other (其它)
注意: 類別是大小寫敏感的,這一點(diǎn)輸入時(shí)要小心。如果用戶想要查詢當(dāng)前系統(tǒng)安裝了哪些游戲類的軟件包,可這樣做:
# rpm -q -g Amusements/Games
clanbomber-1.01-1
kdegames-1.1.2-1
xbill-2.0-6
xboard-4.0.0-3
xboing-2.4-7
xgammon-0.98-14
xjewel-1.6-11
xpat2-1.04-10
xpilot-3.6.2-6
xpuzzles-5.4.1-7
xtrojka-1.2.3-6
#
如果用戶想查詢?nèi)舾深悇e的軟件包時(shí),可以把類別都列出來,一起查詢,如:
# rpm -q -g Applications/Editors Applications/File
emacs-20.3-15
emacs-nox-20.3-15
emacs-X11-20.3-15
vim-common-5.6-12
vim-minimal-5.6-12
vim-X11-5.6-12
fileutils-4.0-3
bzip2-0.9.5d-1
findutils-4.1-32
git-4.3.17-6
gzip-1.2.4-15
slocate-1.4-7
stat-1.5-12
file-3.26-6
#
注: 本例查詢結(jié)果中前6個(gè)為"應(yīng)用/編輯器"類別,后8個(gè)為"應(yīng)用/文件"類別。
(3) -f (或--file) : 查詢有哪些軟件包擁有指定文件這個(gè)選項(xiàng)非常有用。當(dāng)用戶不清楚某個(gè)文件屬于哪個(gè)軟件包時(shí),可試試這個(gè)選項(xiàng)。假如我記不清/usr/sbin/ftpd這個(gè)文件在哪個(gè)包中,現(xiàn)在用RPM查詢:
# rpm -qf /usr/sbin/ftpd
inet6-apps-0.36-3
#
現(xiàn)在知道了,它在inet6-apps-0.36-3包中。命令中-qf是-q -f的縮寫,當(dāng)選項(xiàng)僅帶一個(gè)減號時(shí),多個(gè)選項(xiàng)可以合并在一起,如-a
-b -c三個(gè)選項(xiàng)可寫作-abc,執(zhí)行效果相同。
(4) --whatrequires : 查詢有哪些包需要指定功能
本選項(xiàng)指示RPM從所有已安裝的軟件包中,查詢有哪些軟件包提供了用戶指定的功能,命令行上可輸入一個(gè)或多個(gè)功能。
# rpm -q --whatrequires /bin/ps libc.so.6 | head
autofs-3.1.3-2
agrep-2.04-5
aktion-0.3.6-2
amor-0.5-1
chkconfig-1.0.6-2
libtermcap-2.0.8-16
bash-2.03-10
ncurses-4.2-18
info-3.12f-4
fileutils-4.0-3
#
注: 本例從系統(tǒng)中查詢哪些軟件包需要/bin/ps和libc.so.6功能,通過管道輸出前10行內(nèi)容。
(5) --whatprovides : 查詢有哪些包提供指定功能
本選項(xiàng)指示RPM從所有已安裝的軟件包中,查詢有哪些軟件包提供了用戶指定的功能。命令行上可輸入一個(gè)或多個(gè)功能。
# rpm -q --whatprovides libc.so.6 /bin/ps
glibc-2.1.2-12
no package provides /bin/ps
#
注: 本例從系統(tǒng)中查詢有哪些軟件包提供libc.so.6與/bin/ps功能,結(jié)果是glibc-2.1.2-12包提供了libc.so.6,而沒有包提供/bin/ps功能。
( 6) --triggeredby : 查詢有哪些包被指定的包觸發(fā)本選項(xiàng)指示RPM從所有已安裝的軟件包中,查詢有哪些包可被用戶指定的包觸發(fā)。指定的包可輸入一個(gè)或多個(gè)。
# rpm -q --triggeredby file
foo-8.0-1
#
注: 本例查詢后得知,安裝或卸載foo-8.0-1包,將會(huì)觸發(fā)與file包相關(guān)的腳本程序執(zhí)行。
2. 查詢未安裝的軟件包: (僅有一個(gè)選項(xiàng)可用)
(1) -p : 查詢指定包裹文件的信息
使用本選項(xiàng),通過指定一個(gè)或多個(gè)包裹文件名,RPM就可以獲取相應(yīng)包裹的有關(guān)信息。包裹文件可以是一般形式,也可是ftp/http形式。
# rpm -qp -l --ftpport 2121 ftp://zzz:pass@linux/zhsoft/file-3.26-6.i386.rpm
/usr/bin/file
/usr/man/man1/file.1
/usr/man/man4/magic.4
/usr/share/magic
#
注: 本例查詢ftp形式的包裹,顯示其文件列表(-l選項(xiàng)使然,下面要講到)。ftp用戶名zzz,密碼為pass,遠(yuǎn)程機(jī)為linux,文件名為/zhsoft/file-3.26-6.i386.rpm,ftp使用2121端口。
二、信息顯示類
本類選項(xiàng)可同時(shí)選擇多個(gè),以顯示多種信息。
1. -i : 顯示軟件包信息
當(dāng)用戶需要了解軟件包的頭部信息時(shí),要使用該選項(xiàng)。
# rpm -qi file
Name: file Relocations: /usr
Version : 3.26 Vendor: Red Hat Software
Release : 6 Build Date: 1999年03月23日 星期二 05時(shí)32分29秒
Install date: 2001年10月14日 星期日 21時(shí)18分25秒 Build Host: porky.devel.redhat.com
Group : Applications/File Source RPM: file-3.26-6.src.rpm
Size: 211946 License: distributable
Packager: Red Hat Software
Summary : A utility for determining file types.
Description :
The file command is used to identify a particular file according to the
type of data contained by the file. File can identify many different
file types, including ELF binaries, system libraries, RPM packages, and
different graphics formats.
You should install the file package, since the file command
is such a
useful utility.
#
上述輸出中,包含多個(gè)域,各個(gè)域的含義為:
Name : 軟件名;Relocations : 重定位目錄前綴(一個(gè)或多個(gè));
Version : 版本號;Vendor : 開發(fā)商;
Release : 釋出號;Build Date : 包建立時(shí)間;
Install date : 安裝時(shí)間; Build host : 包建立主機(jī);
Group: 類別; Source RPM : 源代碼包;
Size : 大小; License : 許可證;
Packager : 打包者;
Summary : 軟件簡介;
Description : 詳細(xì)描述。
2. -l (或--list) : 顯示軟件包文件列表
當(dāng)用戶想知道軟件包包含哪些文件時(shí),要使用該選項(xiàng)。輸出時(shí),一行一個(gè)文件名,形成文
件列表。下例列出file包中文件:
# rpm -qlv file
-rwxr-xr-x root root23948 3月 23 1999 /usr/bin/file
-rwxr-xr-x root root12023 3月 23 1999 /usr/man/man1/file.1
-rwxr-xr-x root root 6625 3月 23 1999 /usr/man/man4/magic.4
-rwxr-xr-x root root 169350 3月 23 1999 /usr/share/magic
#
注: 本例列文件時(shí)選用了通用選項(xiàng)-v,這樣列出的格式同ls命令列出的格式,從中可以看到各個(gè)文件的權(quán)限,屬主,屬組,大小,最后修改時(shí)間及文件名等信息。
3. -d (或--docfiles) : 顯示軟件包說明文檔RPM將軟件包中的文件分為三類,一是配置文件,一是說明文檔,再一是其它文件(包括可執(zhí)行程序及數(shù)據(jù)文件等)。通過-d選項(xiàng),可列出包中所有說明文檔。下例列出file包中說明文檔:
# rpm -qd file
/usr/man/man1/file.1
/usr/man/man4/magic.4
#
4. -c (或--configfiles) : 顯示軟件包配置文件使用本選項(xiàng)可列出包中所有配置文件。下例列出lze包中的配置文件:
# rpm -qc lze
/etc/funkey.def
/etc/inputme.def
#
5. -s (或--state) : 顯示軟件包文件狀態(tài)RPM已安裝的軟件包中各個(gè)文件可擁有如下4種狀態(tài):
* normal(正常): 這表明文件未被其它軟件包修改過。
* replaced(已替換): 這表明文件已被其它軟件包修改替換過了,不再是原先的文件了。* not installed(未安裝): 這表明文件未安裝。有一種原因可導(dǎo)致這種情況發(fā)生,這就是當(dāng)安裝軟件包時(shí)使用了--excludedocs選項(xiàng)(或是通過設(shè)置%_excludedocs宏為1),說明文檔未被安裝到系統(tǒng)中。當(dāng)用RPM查詢此軟件包狀態(tài)時(shí),所有說明文檔均顯示此狀態(tài)。
* net shared(網(wǎng)絡(luò)共享): 這表明文件處于網(wǎng)絡(luò)共享狀態(tài)。這一狀態(tài)是RPM用來支持NFS(網(wǎng)絡(luò)文件系統(tǒng))的,用于避免一個(gè)NFS客戶端系統(tǒng)刪除一個(gè)正在共享的文件時(shí),另一NFS客戶端系統(tǒng)無法正常使用含此文件的軟件包。有兩種情況可使文件在此狀態(tài),一是文件安裝在真實(shí)網(wǎng)絡(luò)共享的目錄里,二是文件安裝在RPM資源配置文件中%_netsharedpath宏所確定的目錄里。
# rpm -i --excludedocs file-3.26-6.i386.rpm
# rpm -qs file
normal/usr/bin/file
not installed /usr/man/man1/file.1
not installed /usr/man/man4/magic.4
normal/usr/share/magic
#
注: 本例先安裝file包裹文件,選用--excludedocs表明不安裝說明文檔。而后再查詢file包文件的狀態(tài),可以看到其說明文檔均為not
installed(未安裝),其它文件為normal(正常)狀態(tài)。
6. -R (或--requires) : 顯示軟件包所需的功能
所謂功能,可以是軟件包標(biāo)識,可以是文件(如共享庫libc.so.6等),也可以是虛擬的名字。軟件包的依賴關(guān)系,就是依靠功能來實(shí)現(xiàn)的。RPM安裝軟件包時(shí),如果所需功能不存在,則其依賴關(guān)系不滿足,RPM將中斷安裝過程。
# rpm -q -R lze
/bin/sh
ld-linux.so.2
libc.so.6
libc.so.6(GLIBC_2.0)
libc.so.6(GLIBC_2.1)
#
注: 本例查詢lze包所需的功能。
7. --provides : 顯示軟件包提供的功能
一個(gè)軟件包,可以提供若干功能,這些功能可以是動(dòng)態(tài)鏈接庫等實(shí)際的文件,也可以是虛擬的名字(只要其它軟件包可以用就行了)。如果想查詢某個(gè)包提供了哪些功能,要用--provides
選項(xiàng)。
下面的例子查詢一個(gè)包裹文件所提供的功能:
# rpm -qp --provides zlib-1.1.3-6.i386.rpm
libz.so.1
libz.so.1(GCC.INTERNAL)
#
注: 本包裹文件提供的功能是libz.so.1動(dòng)態(tài)鏈接庫。
8. --conflicts : 顯示軟件包沖突的功能
何謂沖突?沖突就是不同軟件包之間不能共存的現(xiàn)象。RPM制作軟件包時(shí),可以記錄下與本軟件包不能共存的功能,這樣安裝該包時(shí),若沖突的功能已然存在,則RPM將中止安裝。
下面的例子查詢at-3.1.7-8包是否有與其沖突的功能:
# rpm -q --conflicts at-3.1.7-8
crontabs <= 1.5
#
注: 本例顯示at包與版本號小于1.5的crontabs包有沖突存在。
9. --scripts : 顯示軟件包內(nèi)置的腳本程序
scripts即腳本,指的是用SHELL語言編寫的程序。選用本選項(xiàng)時(shí),RPM將輸出軟件包所含的各類腳本程序的內(nèi)容。總共有5類這樣的腳本程序,即安裝前腳本程序(preinstall),安裝后腳本程序(postinstall),卸載前腳本程序(preuninstall),卸載后腳本程序(postuninstall)和校驗(yàn)?zāi)_本程序(verify)。
下面的例子列出zsh包的腳本程序:
# rpm -q --scripts zsh-3.0.7-4 | nl
1 postinstall script (through /bin/sh):
2 if [ ! -f /etc/shells ] ; then
3 echo "/bin/zsh" > /etc/shells
4 else
5 echo "/bin/zsh" >> /etc/shells
6 fi
7 /sbin/install-info /usr/info/zsh.info.gz /usr/info/dir \
8 --entry="* zsh: (zsh). An enhanced bourne shell."
9 preuninstall script (through /bin/sh):
10 if [ "$1" = 0 ] ; then
11 /sbin/install-info --delete /usr/info/zsh.info.gz /usr/info/dir \
12 --entry="* zsh: (zsh). An enhanced bourne shell."
13 fi
14 postuninstall script (through /bin/sh):
15 if [ "$1" = 0 ] ; then
16 if [ -f /etc/shells ] ; then
17 TmpFile=`/bin/mktemp /tmp/.zshrpmXXXXXX`
18 grep -v '^/bin/zsh$' /etc/shells > $TmpFile
19 cp -f $TmpFile /etc/shells
20 rm -f $TmpFile
21 chmod 644 /etc/shells
22 fi
23 fi
#
注: 本例利用管道技術(shù)給查詢的每行輸出加上了行號,便于觀察解釋。
第2-8行: 為安裝后腳本程序(postinstall)的源代碼;
第10-13行: 為卸載前腳本程序(preuninstall)的源代碼;
第15-23行: 為卸載后腳本程序(postuninstall)的源代碼。
例中所有腳本程序均通過/bin/sh解釋執(zhí)行,本例沒有安裝前腳本程序(preinstall)和
校驗(yàn)?zāi)_本程序(verify)。
10. --triggers : 顯示軟件包內(nèi)置的觸發(fā)腳本程序
觸發(fā)腳本程序是scripts類腳本程序的擴(kuò)展,它用于軟件包之間的交互控制。觸發(fā)腳本
程序有安裝時(shí)觸發(fā)腳本程序(triggerin),卸載前觸發(fā)腳本程序(triggerun)和卸載后觸發(fā)腳
本程序(triggerpostun)三種。
下面的例子列出zsh包中的觸發(fā)腳本程序:
# rpm -q --triggers zsh-3.0.7-4
triggerpostun script (through /bin/sh) -- zsh <= 3.0.7-2
if [ ! -f /etc/shells ] ; then
echo "/bin/zsh" > /etc/shells
else
echo "/bin/zsh" >> /etc/shells
fi
#
注: 輸出的第1行說明腳本程序的類別(為卸載后觸發(fā)腳本程序triggerpostun),用什么程序解釋(一般為/bin/sh),和觸發(fā)的條件(在--之后描述)。本例的觸發(fā)條件為zsh的版本小于或等于3.0.7-2。如果條件成立,則此腳本程序?qū)?huì)執(zhí)行。
輸出的第2-6行為卸載后觸發(fā)腳本程序的源代碼。
11. --changelog : 顯示軟件維護(hù)記錄
changelog即軟件維護(hù)記錄,用它來記錄什么人,什么時(shí)間,改動(dòng)了軟件的什么地方。通
過查看維護(hù)記錄,開發(fā)者或用戶可以了解軟件的開發(fā)進(jìn)展情況。
下面的例子查詢lze包的維護(hù)情況:
# rpm -q --changelog lze-6.0-2
* 五 5月 01 1998 雨亦奇
- 增加多窗口操作
* 一 3月 24 1997 雨亦奇
- 增加塊操作命令
#
注: 從本例中就可以看出來,維護(hù)記錄的書寫有一定的規(guī)范:以星號(*)開頭的行記錄維護(hù)時(shí)間,維護(hù)人及其電子郵箱,而以減號(-)開頭的行則記錄維護(hù)的具體內(nèi)容。
12. --dump : 顯示軟件包中所有文件的屬性信息
如果用戶想查看某個(gè)軟件包內(nèi)文件的屬性信息,請用--dump選項(xiàng)。
# rpm -q --dump file
/usr/bin/file 23948 922138347 abaf6cfd51588ac7c484526fbdb84e5b 0100755
root root 0 0 0 X
/usr/man/man1/file.1 12023 922138346 76d9ff6567ab64a53eab50911272f5c1
0100755 root root 0 1 0 X
/usr/man/man4/magic.4 6625 922138346 b8d126803709f0da7f39f5125a132cd3
0100755root root 0 1 0 X
/usr/share/magic 169350 922138346 3bd2eaf3c5e0e84153ba7df38b7561fc 0100755
root root 0 0 0 X
#
現(xiàn)在根據(jù)例子的輸出,解釋一下RPM包中各個(gè)文件所擁有的屬性信息:(以第1行為例)
/usr/bin/file : 為文件名;
23948 : 指文件大小(字節(jié)數(shù));
922138347 : 指文件最后修改時(shí)間(秒數(shù));
abaf6cfd51588ac7c484526fbdb84e5b : 指根據(jù)文件內(nèi)容計(jì)算出的MD5檢查和;
0100755 : 指文件存取權(quán)限;
root : 指文件屬主;
root : 指文件屬組;
0 : 配置文件標(biāo)志,為0表示該文件非配置文件,為1表明該文件是配置文件;
0 : 說明文檔標(biāo)志,為0表示該文件非說明文檔,為1表明該文件是說明文檔;
0 : 指文件類型,為0表示普通文件,非0表示設(shè)備文件,包含主從設(shè)備號;
X : 符號連接內(nèi)容,如果文件不是符號連接,則此值為X。
三、定制輸出類
定制輸出是RPM一項(xiàng)強(qiáng)有力的功能,當(dāng)用戶想要RPM按自己的格式輸出軟件包信息時(shí),可以通過使用--qf(或--queryformat)選項(xiàng)來實(shí)現(xiàn)定制。
定制輸出要指定格式化的字符串(類似printf的格式串),該字符串以單引號'或雙引號"引住。格式串中可包括普通文本,含轉(zhuǎn)義符的文本,功能標(biāo)簽和數(shù)組循環(huán)三種不同的組件。
* 普通文本
格式串中的普通文本將按原樣輸出。
* 含轉(zhuǎn)義符的文本
RPM定義的轉(zhuǎn)義符為\,稱作反斜杠。當(dāng)RPM遇到此字符時(shí),會(huì)根據(jù)預(yù)先定義的轉(zhuǎn)義序列,把后面的字符解釋后輸出。
轉(zhuǎn)義序列如下:
\a : 輸出響鈴字符(值為7),效果是喇叭鳴叫一聲。
\b : 輸出退格符(值為8),效果是刪除光標(biāo)前面一個(gè)字符,且光標(biāo)后退一個(gè)字符位置。
\f : 輸出換頁符(值為12),根據(jù)終端解釋的不同,效果也不相同,有的是實(shí)現(xiàn)清屏操作,有的則是換一行。
\n : 輸出換行符(值為10),效果是光標(biāo)移到下一行。
\r : 輸出回車符(值為13),效果是光標(biāo)回到行首。
\t : 輸出跳格(值為9),根據(jù)終端解釋的不同,效果也不同,有的是輸出一個(gè)空格,有的 則輸出最多8個(gè)空格。
\v : 輸出垂直方向的跳格(值為11),用處不大。
\\ : 輸出反斜杠(\)這個(gè)字符。
* 功能標(biāo)簽
RPM內(nèi)置了很多功能標(biāo)簽,如NAME表示軟件名,VERSION表示版本號,RELEASE表示釋出號等。輸出功能標(biāo)簽所表示的內(nèi)容時(shí),需用這樣一種格式:
%[輸出寬度]{功能標(biāo)簽}
注:輸出寬度可選,正值表示右對齊輸出,負(fù)值表示左對齊輸出。
如格式串中使用%{NAME}時(shí)將輸出軟件名,使用%20{NAME}時(shí)則右對齊輸出軟件名,寬度為20,而使用%-20{NAME}時(shí)則按寬度為20左對齊輸出軟件名??纯聪旅娴膶?shí)際例子就會(huì)明白:
# rpm -q --qf "%{NAME}:%20{NAME}:%-20{NAME}:\n" file
file:file:file:
#
功能標(biāo)簽書寫不區(qū)分大小寫,即NAME也可輸作name,Name等等。功能標(biāo)簽還可以帶有選項(xiàng),選項(xiàng)用":選項(xiàng)名"表示,選項(xiàng)名有大小寫之分。如%{FILEMODES}默認(rèn)以數(shù)字形式輸出,如采用perms選項(xiàng),即%{FILEMODES:perms},輸出結(jié)果將采用rwx的形式。請看下面的例子:
# rpm -q --qf "%{filenames} %{FILEMODES:perms}\n" file
/usr/bin/file -rwxr-xr-x-
#
注: %{filenames}表示包中的文件名。
RPM常用功能標(biāo)簽表
注: 可用rpm --querytags命令查到RPM內(nèi)置的所有功能標(biāo)簽。
* 數(shù)組循環(huán)
對于功能標(biāo)簽是數(shù)組的,可以用數(shù)組循環(huán)(用[與]括住的部分)來輸出數(shù)組的全部內(nèi)容。數(shù)組循環(huán)內(nèi)部可包含功能標(biāo)簽,普通文本和含轉(zhuǎn)義符的文本。RPM將根據(jù)循環(huán)內(nèi)部一個(gè)或多個(gè)數(shù)組類型的功能標(biāo)簽所擁有的單元個(gè)數(shù),取其最小值,循環(huán)同樣次數(shù),輸出解釋或轉(zhuǎn)義后的數(shù)據(jù)。對于功能標(biāo)簽僅含一個(gè)單元的,若想輸出多次,則需要在功能標(biāo)簽前面加個(gè)等號(=)。
下面的例子以數(shù)組循環(huán)的方式,輸出file包所含的各個(gè)文件的文件名及權(quán)限,同時(shí)輸出每一個(gè)文件時(shí)都要先輸出軟件包標(biāo)識。
# rpm -q --qf "[%{=NAME}-%{=VERSION}-%{=RELEASE} : %-20{FILENAMES}
: %{FILEMODES:perms}\n]" file
file-3.26-6 : /usr/bin/file : -rwxr-xr-x-
file-3.26-6 : /usr/man/man1/file.1 : -rwxr-xr-x-
file-3.26-6 : /usr/man/man4/magic.4 : -rwxr-xr-x-
file-3.26-6 : /usr/share/magic : -rwxr-xr-x-
#
通過使用定制輸出,我們可以很方便地查找出系統(tǒng)中占用空間最大的軟件包。
# rpm -q -a --qf "%{NAME} %{SIZE}\n" | sort -nr +1 | head -1
kernel-source 65824967
#
注: -a項(xiàng)選擇所有已安裝的軟件包,--qf項(xiàng)定制查詢格式, 格式串中用功能標(biāo)簽NAME輸出軟件名,用SIZE輸出軟件大小,查詢得到的數(shù)據(jù)通過管道送sort命令,對第2列降序排序后由head命令取第1行內(nèi)容,這即是占用空間最大的軟件包。
評論
查看更多