第2部分:基礎(chǔ)管理_第1頁
第2部分:基礎(chǔ)管理_第2頁
第2部分:基礎(chǔ)管理_第3頁
第2部分:基礎(chǔ)管理_第4頁
第2部分:基礎(chǔ)管理_第5頁
已閱讀5頁,還剩22頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、在木教程中,我們將向您演示如何使用正則表達(dá)式在文件中搜索文木模式。 接著,我們將向您介紹文件系統(tǒng)層次結(jié)構(gòu)標(biāo)準(zhǔn)(filesystem hierarchy standard,或者稱為fhs),并向您演示如何在您的系統(tǒng)上定位文件。然后,我 們將通過在后臺(tái)運(yùn)行l(wèi)inux進(jìn)程、列出進(jìn)程清單、從終端上拆離進(jìn)程以及更多 內(nèi)容,向您演示如何完全控制linux進(jìn)程。最后,我們將向您簡要介紹shell管 道、重定向和文本處理命令。在結(jié)束本教程的學(xué)習(xí)后,您將牢固掌握linux管 理的基本知識(shí)并可以開始學(xué)習(xí)一些更高級(jí)的linux系統(tǒng)管理技能。-o關(guān)于本教程本教程涉及哪些內(nèi)容?在本教程屮,我們將向您演示如何使用正則表達(dá)

2、式在文件屮搜索文本模式。接著, 我們將向您介紹文件系統(tǒng)層次結(jié)構(gòu)標(biāo)準(zhǔn)(f訂esystem hierarchy standard,或 者稱為fhs),并向您演示如何在您的系統(tǒng)上定位文件。然后,我們將通過在后 臺(tái)運(yùn)行l(wèi)inux進(jìn)程、列出進(jìn)程清單、從終端上拆離進(jìn)程以及更多內(nèi)容,向您演 示如何完全控制linux進(jìn)程。最后,我們將向您簡耍介紹shell管道、重定向 和文本處理命令。在結(jié)束木教程的學(xué)習(xí)后,您將牢固掌握linux管理的基木知識(shí)并可以開始學(xué)習(xí) 一些更高級(jí)的linux系統(tǒng)管理技能。在本系刃教程(共8部分)結(jié)束時(shí),您將具備成為linux系統(tǒng)管理員所必需的 知識(shí),并且如杲您選擇參加lpi考試,那么您將

3、能夠獲得linux professional institute 頒發(fā)的 lp1c level 1 證書。lpi 徽標(biāo)是 linux professional institute 的商標(biāo)。我應(yīng)該學(xué)習(xí)本教程嗎?木教程(也是木系列的第2部分)非常適合于那些具備良好bash基木知識(shí), 并想獲得基本linux管理任務(wù)詳盡介紹的人員。如果您是linux新手,那么我 們建議您在繼續(xù)學(xué)習(xí)之前先完成本教程系列的第1部分。對(duì)于某些人來說,本 教程屮的許多內(nèi)容都很新,而更有經(jīng)驗(yàn)的linux用戶可能會(huì)發(fā)現(xiàn)木教程是使他 們的基本linux管理技能“爐火純青”的途徑。木系列中還有三篇其它教程: part 1: linu

4、x 基礎(chǔ) part 3:中級(jí)管理 part 4:高級(jí)管理關(guān)于作者有關(guān)木教程內(nèi)容的技術(shù)問題,請(qǐng)與這些作者聯(lián)系: daniel robbins, drobbinsgentoo. org chri s houser, chousergentoo. org aron griffis, daniel robbins住在新墨西哥州阿爾伯克基,是gentoo technologies, inc. 的總裁兼首席執(zhí)行官,他主創(chuàng)了 gentoo linux,這是一種用于pc的高級(jí) linux,以及portage系統(tǒng),是一種用于linux的下一代移植系統(tǒng)。他還是幾 本 macmi

5、llem 出版的書籍 caldera open linux unleashed、suse linux unleashed和samba unleashed的投稿人。daniel cl二年級(jí)起就和計(jì)算機(jī)結(jié)卜 不解z緣,那時(shí)他最先接觸的是logo編程語言,并沉溺于pac man游戲屮。 這也許就是他至今擔(dān)任sony electronic publishing/psygnosis首席圖形設(shè)計(jì) 師的原因所在。daniel喜歡和他的妻子mary以及他們的女兒hadassah 一起 共度時(shí)光。chris houser在他的許多朋友屮以“欺騙專家”而聞名,自1994年加入印第 安納州泰勒大學(xué)計(jì)算機(jī)科學(xué)網(wǎng)絡(luò)管理

6、團(tuán)隊(duì)以來,一直是unix的擁護(hù)者,在那里, 他獲得了計(jì)算機(jī)科學(xué)和數(shù)學(xué)學(xué)士學(xué)位??谀且院螅恢敝铝τ趙eb應(yīng)用程序 編程、用戶界面設(shè)計(jì)、專業(yè)視頻軟件支持,并且目前在compaq從事tru64 unix 設(shè)備驅(qū)動(dòng)程序編程。他還參與了各種自由軟件項(xiàng)目,最近的項(xiàng)目是gentoo linuxo他和他的妻子以及兩只貓住在新漢普郡。aron gr辻fis畢業(yè)于泰勒大學(xué),獲得計(jì)算機(jī)科學(xué)學(xué)位并被授予“理想unix公 社的未來創(chuàng)立者”榮譽(yù)稱號(hào)。為實(shí)現(xiàn)那個(gè)目標(biāo),aron在compaq工作,從事編 寫tru64 unix網(wǎng)絡(luò)驅(qū)動(dòng)程序的工作,并在業(yè)余吋間彈彈鋼琴或者開發(fā)gentoo linuxo他和他的妻子amy (

7、也是unix工程師)住在新罕布什爾州的納舒尼。-o正則表達(dá)式什么是正則表達(dá)式?正則表達(dá)式(也稱為“regex”或"regexp”)是一種用來描述文本模式的特殊 語法。在linux系統(tǒng)上,止則表達(dá)式通常被用來查找文本的模式,以及對(duì)文本 流執(zhí)行“搜索-替換”操作以及其它功能。與glob的比較 當(dāng)我們看到正則表達(dá)式時(shí),您可能發(fā)現(xiàn)正則表達(dá)式的語法看起來與我們上一篇教 程(請(qǐng)參閱本教程最后的“參考資料” 一節(jié)中列出的“笫1部分”)中研究的“文件名匹配替換”語法相類似。但是,不要讓它欺騙您;它們的類似性只是表 面的。雖然正則表達(dá)式和文件名匹配替換模式可能看上去相類似,但是它們是根 木不同的兩種類

8、型。簡單子串記住那個(gè)警告,讓我們看一下最基本的正則表達(dá)式,簡單子串。為了這樣做,我 們要使用grep,它是一個(gè)掃描文件內(nèi)容來查找適合特定正則表達(dá)式的命令°grep 打印與正則表達(dá)式匹配的每一行,并忽略與之不匹配的每一行:$ grep bash /etc/passwdoperator:x:11:0:operator:/root:/bin/bashroot:x:0:0:/root:/bin/bashftp:x:40:1:/home/ftp:/bin/bash在上面的命令grep的第一個(gè)參數(shù)是一個(gè)正則表達(dá)式;第二個(gè)參數(shù)是一個(gè)文 件名。grep讀取/etc/passwd中的每一行并對(duì)它應(yīng)用簡

9、單了串止則表達(dá)式bash 來查找匹配項(xiàng)。如果找到一個(gè)匹配項(xiàng),那么grep打印出整行;否則,忽略該行。一般來說,如果您正在搜索一個(gè)子串,那么您町以不提供任何“特殊”字符,而 只是逐字地指定文木。只有在了串包含+、.、*、或(在這樣的悄況下,這些字符需要用引號(hào)括起來并在它們的前面使用反斜杠)才需耍做特殊 的事情。下面是簡單了串止則表達(dá)式幾個(gè)其它示例:/imp (掃描查找文字串/imp) box (掃描查找文字串box) "*funny*"(掃描查找文字串*funny*) "id. so"(掃描查找文字串id. so)元字符使川止則表達(dá)式,町以利川元/你執(zhí)行比

10、我們至今已研究過的示例復(fù)雜得多的搜索。這些 元字符中的一個(gè)是(點(diǎn)),它與任何單個(gè)字符匹配:$ grep dev.hda/etc/fstab/dev/hda3/dev/hdal/dev/hda2#/dev/hda4/bootswap/mnt/extrareiserfsreiserfsswapreiserfsnoatime,ro 1 1noauto,noatime,notail 1 2sw 0 0noatimez rw 1 1在本示例中,文字文本dev. hda沒有出現(xiàn)在/etc/fstab中的任何一行中。但是,grep掃 描這些行時(shí)沒冇查找文字dev. hda字符串,而是查找dev. hda饑c

11、。請(qǐng)記住、腿與任何 単個(gè)孚舟相匹配。正如您看到的,.元字符在功能上等價(jià)于glob擴(kuò)展中?元字符的工作原理。使用如果我們希望打比.更具體一點(diǎn)地來匹配字符,那么我們可以使用和(方括號(hào))來指定要肚配的字符了集:noauto,noatime,notail 1 2sw 0 0$ grep dev.hda12 /etc/fstab/dev/hdal/bootreiserfs/dev/hda2swapswap正如您看到的,這個(gè)特殊語法的作川與、'glob文件名擴(kuò)展屮的相同。同樣,這是學(xué)習(xí)正則表達(dá)式的難點(diǎn)之一 -這個(gè)語法與''glob 文件名擴(kuò)展語法於似,但乂不盡相同,它經(jīng)常給學(xué)習(xí)正則

12、表達(dá)式的人帶來閑惑。使用八通過使后面緊跟一個(gè)“,您可以使方括號(hào)中的意思相反。在木例屮,方括號(hào)將與未列在方 括號(hào)內(nèi)的任意字符匹配。同樣,請(qǐng)注意我們在正則表達(dá)式中使用,而在glob中使用!:$ grep dev.hdaa12 /etc/fstab/dev/hda3/reiserfsnoatime,ro 1 1#/dev/hda4/mnt/extra reiserfsnoatime,rw 1 1區(qū)別語法注意卜面一點(diǎn)很重耍:方括號(hào)內(nèi)紳語法根本不同f正則表達(dá)式其它部分中的語法。例如, 如果在方括號(hào)內(nèi)放置一個(gè).,那么它允許方括號(hào)與文字匹配,就象上面示例屮的1和 2。比較起來,除非有作為前綴,否則方括號(hào)外而

13、的文字被解釋為一個(gè)元字符。通過輸 入如下命令,我們可以利用這一事實(shí)來打印/etc/fstab屮包含文字串dev. hda的所有行 的列表:$ grep devhda /etc/fstab或者,我們也可以輸入:$ grep ndev.hdah /etc/fstab這兩個(gè)正則表達(dá)式都不可能與您的/etc/fstab文件中的任何行相匹配。某些元字符本身不匹配任何字符,但卻修改前-個(gè)字符的含義。個(gè)這樣的元字符是*(星號(hào)),它用來與前一個(gè)字符的零次或者多次重復(fù)出現(xiàn)相匹配。這里是些示例:ab*c (與abbbbc匹配但不與abqc匹配) ab*c (與abc匹配但不與abbqbbc匹配) ab*c (與a

14、c匹配但不與cba匹配) bcq*e (與bqe匹配但不與eb匹配) bcq*e (與bccqqe匹配但不與bccc匹配) bcq*e (與bqqcce匹配但不與cqe匹配) bcq*e (與 bbbeee 匹配) * (與任何字符串匹配) foo. * (與以 foo開始的任何字符串相匹配)ac行與正則表達(dá)式ab*c相匹配,因?yàn)樾翘?hào)也允許前面的表達(dá)式(b)出現(xiàn)零次。請(qǐng)注意解 釋*正則表達(dá)式元字符所用的方法與解釋*glob字符的方法根本不同。行的開始和結(jié)束我們在這里要詳細(xì)描述的最后幾個(gè)元字符是八和$元字符,它們用來分別與行的開始和結(jié) 束相匹配。通過在正則表達(dá)式開始處使川一個(gè)-,您町以將您的模式

15、''錨定在行的開始。 在下面的示例中,我們使用 鼻正則表達(dá)式來與以#字符開始的任何行相匹配:$ grep a# /etc/fstab# /etc/fstab: static file system information.完整行正則表達(dá)式 可以組合八和$來少完整的行相匹配。例如,下面的止則表達(dá)式將與以#字符開始并以. 字符結(jié)束的行相匹配,在其中間可以有任意多個(gè)英它字符:$ grep “#*$, /etc/fstab# /etc/fstab: static file system information.在上面的示例屮,我們用單引號(hào)將我們的正則表達(dá)式括起來以阻止shell解釋$。

16、在不 使用單引號(hào)的情況下,grep甚至沒有機(jī)會(huì)查看$, $就從我們的正則表達(dá)式上消失了。三。fhs和查找文件文件系統(tǒng)層次結(jié)構(gòu)標(biāo)準(zhǔn)filesystem hierarchy standard是指定linux系統(tǒng)上目錄布局的文檔。fhs被 設(shè)計(jì)來捉供一個(gè)通用布局以簡化與分布無關(guān)的軟件開發(fā)。fhs指定下列f1錄(直接來自 fhs規(guī)范): /(根冃錄) /boot (引導(dǎo)裝入程序的靜態(tài)文件) /dev (設(shè)備文件) /etc (主機(jī)特定的系統(tǒng)配置) /lib (基本共亨庫和核心模塊) /mnt (臨時(shí)掛裝文件系統(tǒng)的掛裝點(diǎn)) /opt (附加的應(yīng)用程序軟件包) /sbin (基木系統(tǒng)二進(jìn)制文件) /tmp

17、 (臨時(shí)文件) /usr (輔助層次結(jié)構(gòu)) /var (可變數(shù)據(jù))兩個(gè)獨(dú)立的fhs類別fhs的布局規(guī)范里丁存在兩個(gè)獨(dú)立的文件類別:町共亨與不町共亨以及町變與靜態(tài)這思想???共亨數(shù)據(jù)飽在主機(jī)z間被共享;不“共聲數(shù)菇特定丁給定主機(jī)(例如配置文件)。町變數(shù)據(jù) 可以被修改;靜,態(tài)麹那不可以被修改(除了在系統(tǒng)安裝和維護(hù)階段)。下面的表格概述了四種可能的組合,并列出了與那些類別相符的日錄示例。這個(gè)表還是肓接 取自fhs規(guī)范:卜1x-+1可共享1+不可共享111靜態(tài)11-1 /usr|1 /opti/etc1/boot|1可變1卜-+71 /var/mail1 /var/spool/news+十i /var

18、/run|1 /var/lock i+/usr中的輔助層次結(jié)構(gòu)在/usr下,您會(huì)發(fā)現(xiàn)一個(gè)看上去與根文件系統(tǒng)非常相似的輔助層次結(jié)構(gòu)。當(dāng)機(jī)器打開并運(yùn)行時(shí),/usr的 存在并不匝要,所以能在網(wǎng)絡(luò)上共亨它(、'可共享),或者從cd-rom上掛裝它(''靜態(tài))。大多數(shù)linux 設(shè)置不利用/usr的共享,但是理解根ii錄中主層次結(jié)構(gòu)和/usr中輔助層次結(jié)構(gòu)z間的區(qū)別的用處是 冇價(jià)值的。這就是我們要說的有關(guān)filesystem hierarchy standard的所有內(nèi)容。該文檔木身非常具有町讀性, 所以您應(yīng)該去看一下。我們承諾如果您讀了它,那么您將對(duì)linux文件系統(tǒng)理解得更多

19、。查找文件linux系統(tǒng)通常包含數(shù)i萬個(gè)文件。可能您非常精明能干,從未丟失它們屮的任何一個(gè),但是更可能的是, 您偶爾在查找一個(gè)文件時(shí)需耍幫助。linux上有兒個(gè)不同的工具用丁査找文件。下而的演示將向您介紹它 們,并幫助您選擇適合您的工作的工具。path 當(dāng)您在命令行上運(yùn)行程序時(shí),bash實(shí)際上搜索目錄列衣來查找您所請(qǐng)求的程序。例如,當(dāng)您輸入is, bash實(shí)質(zhì)上不知道is程序位于/usr/bin.但是,bash引用一個(gè)名為path的環(huán)境變量,它是一個(gè) 用冒號(hào)分隔的目錄列表。我們可以檢查path的值:$ echo $path/usr/local/bin:/usr/bin:/bin:/usr/sb

20、in:/sbin:/usr/xllr6/bin給定了 path的值(您的可以不同),bash將首先檢查/usr/local/bin,然后是/use/bin以搜 索is程序。is最有可能被保存在/usr/bin內(nèi),所以bash在那里停止。修改path您可以通過在命令行上為path指派元素來擴(kuò)充它:$ path=$path:/bin$ echo $path/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/xhr6/bin:/home/agriffis/b in您也可以除去path上的元索,盡管這不是那么容易,因?yàn)槟荒苄∮矛F(xiàn)有的$pat1仁最好的辦

21、法是簡 單輸入您想要的新path:$ path=/usr/local/bin: /usr/bin: /bin: /usr/xhr6/bin: -/bin$ echo $path/usr/local/bin : /usr/bin: /bin : /usr/xhr6/bin: /home/agrif f is/bin關(guān)于“which”的一切通過使用which,您能杳看path屮是否有給定程序。例如,我們通過下面的命令發(fā)現(xiàn) linux系統(tǒng)沒有(普通的)sense:$ which sensewhich: no sense in(/usr/local/bin : /usr/bin: /bin: /usr

22、/sbin: /sbin : /usr/xhr6/bin)在本示例中,我們成功定位is:$ which is/usr/bin/lsu w hich -an最后,您應(yīng)該知道a標(biāo)志,它使which向您顯示您的path中給定程序的所冇實(shí)例:$ which -a is/usr/bin/ls/bin/lsw h ereis如果您不只對(duì)程序位置感興趣,而且想要找到更多信息,那么可以嘗試where is程序:$ whereis isis: /bin/ls /usr/bin/ls /usr/share/man/manl/ls.l.gz這里我們看到is出現(xiàn)在兩個(gè)常見二進(jìn)制位置/bin和/usr/bin中。另外,

23、我們被告知手冊頁定位在 /usr/share/man。如果您要輸入man is,那么這就是您將看到的手冊頁。whereis程序還具冇搜索源代碼、指定備用搜索路徑和搜索不尋常項(xiàng)的能力。冇關(guān)進(jìn)一步信息,請(qǐng)參考 whereis手冊頁。findfind命令是您工具箱中的另一個(gè)工具。使用find,您不會(huì)受限于程序;通過使用多種搜索標(biāo)準(zhǔn),您能 搜索您想要的任何文件。例如,要搜索/usr/share/doc目錄下名為readme的文件:$ find /usr/share/doc -name readme/usr/share/doc/ion-20010523/readme/usr/share/doc/bind

24、-9.1.3-r6/dhcp-dynamic-dns-examples/readme/usr/share/doc/sane-105/readmefind和通配符您可以在-name的參數(shù)中使用、'glob通配符,詢捉條件是您用雙引號(hào)引用了它們或用反 斜杠進(jìn)行了轉(zhuǎn)義(這樣它們就能被完整地傳遞到find而不是被bash擴(kuò)展)。例如,我們 可能想要搜索帶有擴(kuò)展名的readme文件:$ find /usr/share/doc -name readme*/usr/share/doc/iproute2-2 4 7/readme gz/usr/share/doc/iproute2-2.4.7/read

25、me.iproute2+tcgz/usr/share/doc/iproute2-2.4.7/readme decnet.gz /usr/share/doc/iproute2-24.7/examples/diffserv/readmegz /usr/share/doc/pilot-link-0.9.6-r2/readme.gz /usr/share/doc/gnome-pilot-conduits-0.8/readme.gz/usr/share/doc/gimp-122/readme.il8n.gz/usr/share/doc/gimp-122/readmewin32gz/usr/share/d

26、oc/gimp-1 22/readme.gz /usr/share/doc/gimp-1.2.2/readme.perl gz578 additional lines snipped在find中忽略大小寫當(dāng)然,您可能想要在搜索中忽略大小寫:$ find /usr/share/doc -name 1rreeaaddmmee*f或者,更簡單:$ find /usr/share/doc -iname readme*正如您看到的,您能使用-inane來進(jìn)行不區(qū)分大小寫的搜索。find和正則表達(dá)式如果您熟悉正則表達(dá)式,那么使用regex選項(xiàng)將把輸出限制成匹配某一模式的文件名。與-iname選 項(xiàng)類似,它

27、有一個(gè)相應(yīng)的-iregex選項(xiàng),該選項(xiàng)忽略模式中的大小寫。例如:$ find /etc -iregex 1.*xt.* 1/etc/xll/xkb/types/extra/etc/xll/xkb/semantics/xtest/etc/xll/xkb/compat/xtest/etc/xll/app-defaults/xterm/etc/xll/app-defaults/xterm-color請(qǐng)注懣:不象許多程序,find耍求指定的正則表達(dá)式與整個(gè)路徑匹配,而不只是該路徑的一部分。為此, 指定前導(dǎo)和尾隨的.*是必要的;只使用xt是不夠的。find和類型type選項(xiàng)允許您查找某一類和的文件系統(tǒng)對(duì)

28、象??赡艿膖ype參數(shù)是b (塊設(shè)備)、c (字符設(shè)備)、 d (目錄)、p (命名管道)、f (常規(guī)文件)、1 (符號(hào)鏈接)和s (套接字)。例如,要在/uer/bin '|' 搜索包含字符串vim的符號(hào)鏈接:$ find /usr/bin -name 1*vim*f -type 1 /usr/bin/rvim/usr/bin/vimdiff/usr/bin/gvimdifffind 和 m tim emtime選項(xiàng)允許您根據(jù)最近一次的修改時(shí)間來選擇文件。mtime的參數(shù)以24小時(shí)為單位,當(dāng)輸入時(shí) 帶加號(hào)(表示、'z后)或者減號(hào)(表示前)時(shí),它最冇用。例如,考慮如下情

29、形:$ is -1 ?-rw 1rootroot0jan718:00arootroot0jan618:00brw丄rootroot0jan518:00w1c-rw 1rootroot0jan418:00d$ datemon jan 7 18:14:52 est 2002您町以搜索力過去的24小時(shí)z內(nèi)創(chuàng)建的文件:$ find . -name ? -mtime -1 /a或者您可以搜索在當(dāng)前24小時(shí)周期之前創(chuàng)建的文件:$ find . -name ? -mtime +0./b/c /d-daystart 選項(xiàng) 如果您另外指定了 -daystart選項(xiàng),那么時(shí)間周期以今天的開始時(shí)為開始,而不是24小

30、時(shí)z前。例如, 這是昨天和前天創(chuàng)建的一組文件:$ find -name ? -daystart -mtime +0 -mtime-3 /b./c$ is -1b crootroot0 jan618:00brw1-rw- 1rootroot0 jan518:00c-size選項(xiàng)-size選項(xiàng)允許您根據(jù)文件的大小來查找它們。缺省情況下,-si刁e的參數(shù)是512個(gè)字節(jié) 的塊,但是添加后綴可以使操作更簡便。可用的后綴是b (512字節(jié)的塊)、c (字節(jié))、 k (千字節(jié))和w (2字節(jié)的字)。另外,您可以在前放置加號(hào)('、人于)或者減號(hào)(''小 于)o 例如,要在/usr/bi

31、n屮查找小于50個(gè)字節(jié)的常規(guī)文件:$ find /usr/bin 一type f -size -50c/usr/bin/krdb/usr/bin/run-nautilus/usr/bin/sgmlwhich/usr/bin/muttbug處理找到的文件您可能在想如何處理所冇這些找到的文件!不用擔(dān)心,通過使用-exec選項(xiàng),find具冇對(duì) 它找到的文件進(jìn)行操作的能力。這個(gè)選項(xiàng)接受命令行作為它的參數(shù)來執(zhí)行,它以;中斷, 并用文件名來替換任何出現(xiàn)的。下面這個(gè)示例可以幫助您完全理解它:$ find /usr/bin -typef -size -50c -exec is -1» < r一

32、rwxr-xr-x1rootroot27oct2807:13/usr/bin/krdb-rwxr-xr-x1rootroot35nov2818:26/usr/bin/run-nautilus-rwxr-xr-x1rootroot25oct2117:51/usr/bin/sgmlwhich-rwxr-xr-x1rootroot26sep2608:00/usr/bin/muttbug正如您看到的,find是一個(gè)功能非常強(qiáng)大的命令。在unix和linux開發(fā)的兒年中,它 獲得了發(fā)展。find中還有許多其它有用的選項(xiàng)。您可以在find手冊頁屮學(xué)習(xí)它們。定位我們已經(jīng)學(xué)習(xí)了 which、where is和

33、find。您可能已經(jīng)注意到執(zhí)行find要花一些時(shí)間, i大i為它需耍讀取它止在搜索的每個(gè)h錄。事實(shí)表明locate命令町以通過依靠外部數(shù)據(jù)庫來 加速操作。locate命令與路徑名的任何部分相匹配,而不只是文件本身。例如:$ locate bin/ls/var/ftp/bin/ls/bin/ls/sbin/lsmod/sbin/lspci/usr/bin/lsattr/usr/bin/lspgpot/usr/sbin/lsof使用 updatedb大多數(shù)linux系統(tǒng)包含-個(gè)周期性的進(jìn)程來更新這個(gè)數(shù)據(jù)庫。如果您的系統(tǒng)在運(yùn)行上述命令時(shí)返回如下 錯(cuò)誤,那么您需要運(yùn)行updatedb來生成搜索數(shù)據(jù)庫:

34、$ locate bin/lslocate: /var/spool/locate/locatedb: no such file or directory$ supassword:# updatedb運(yùn)行updatedb命令可能要花很長時(shí)間。如果您碩盤的噪音很人,那么將聽到許多吵鬧聲,因?yàn)檫@正在 為整個(gè)文件系統(tǒng)建立索引。:)slocate在linux的許多分發(fā)版(distribution)中,locate命令已經(jīng)被slocato所替代。通常有-個(gè)至 ''locate"的符號(hào)鏈接,這樣您不需要記住擁有的是哪一個(gè)。slocate代表''安全定位(secure

35、 locate) 。它將許可權(quán)信息存儲(chǔ)在數(shù)拯庫中,這樣普通用戶不能以別的方式窺探他們不能讀取的目錄。 slocate的用法信息在本質(zhì)上與locate的信息相同,盡管輸出可能不同(取決于正在運(yùn)行命令的用戶)。四。進(jìn)程控制啟動(dòng)xeyes為了學(xué)習(xí)進(jìn)程控制,我們首先需耍啟動(dòng)個(gè)進(jìn)程:$ xeyes -center red您將注意到彈出一個(gè)xeyes窗口,紅色眼球跟隨您的鼠標(biāo)在屏幕i.移動(dòng)。您還可能注意到在終端上沒冇 新的提示符。停止進(jìn)程為了恢復(fù)提示符,您可以輸入control-c (通常寫為ctrl-c或 v):ac$您獲得了一個(gè)新的bash提示符,但xeyes 口消失了。竊實(shí)上,整個(gè)進(jìn)程已被殺死。如果

36、不通過 control-c來殺死它,我們還可以使用control-z來使它只是停止:$ xeyes -center red人z1 + stoppedxeyes -center red$這次您獲得了一個(gè)新的bash提示符,并且xeyes窗口依然保稱著。但是,如果您試圖稍微移動(dòng)這個(gè)窗 口,那么將注意到眼球在某一位置被凍結(jié)了。如果xeyes窗口被另一個(gè)窗口遮蓋,然后又出現(xiàn),那么您 將看到它根本不會(huì)重繪眼睹。進(jìn)程沒有做任何操冷;事實(shí)上,它是''被停止了。fg 和 bg為了使進(jìn)程''重新活動(dòng)并再次運(yùn)行,我們能用bash內(nèi)置的fg使它在前臺(tái)運(yùn)行:$ fgxeyes 刃/xe

37、yesazxeyes -center red1 + stopped$現(xiàn)在川bash內(nèi)置的bg來繼續(xù)在后臺(tái)運(yùn)行它:$ bg1+ xeyes -center red &$好極了!現(xiàn)在xeyes進(jìn)程在后臺(tái)運(yùn)行,并ii出現(xiàn)了新的正在工作的bash提示符。使用“ & ”如果我們一開始想要在后臺(tái)啟動(dòng)xeyes (而不是使用control-z和bg),那么我們只須在xeyes命 令行的最后添加一個(gè)沌:$ xeyes -center blue &2 16224多個(gè)后臺(tái)進(jìn)程現(xiàn)在紅色和藍(lán)色xeyes都在后臺(tái)運(yùn)行。我們nj以川bash內(nèi)置的jobs列出這些作業(yè):$ jobs -11 - 16

38、217 runningxeyes -center red &2 + 16224 runningxeyes center blue &左列中的號(hào)碼是當(dāng)作業(yè)被啟動(dòng)時(shí),bash指定給它們的作業(yè)號(hào)碼。作業(yè)2有一個(gè)+(加號(hào)), 這表示它是''當(dāng)前作業(yè),這意味著輸入fg將把它帶到前臺(tái)。您也可以通過指定作業(yè)號(hào)碼 將指定的作業(yè)帶到前臺(tái),換句話說,fgl使紅色xeyes成為前臺(tái)任務(wù)。下一列是包含在列 表中的進(jìn)程標(biāo)識(shí)或者是pid,由于jobs的-1選項(xiàng)可得到該列表。最后,這兩個(gè)作業(yè)當(dāng)前 都是''running并r它們的命令行都列在右邊。介紹信號(hào)為了殺死、停止或者繼續(xù)

39、運(yùn)行進(jìn)程,linux使用了 -種稱為''信號(hào)的特殊通訊方式。通過 將某一信號(hào)發(fā)送給進(jìn)程,您可以使它中斷、停止或執(zhí)行其它操作。這就是當(dāng)您輸入 control-cx control-z或使用bg或fg內(nèi)置命令時(shí)真正執(zhí)行的操作-您正使用 bash將一個(gè)特殊信號(hào)發(fā)送給進(jìn)程。還可以通過使用kill命令并在命令行上指定pid (進(jìn) 程標(biāo)識(shí))來發(fā)送這些信號(hào):$ kill -s sigstop 16224$ jobs -1xeyes -center red &xeyes -center blue1 - 16217 running2 + 16224 stopped (signal)正如您

40、看到的,kill不一定、殺死進(jìn)程,盡管它能這樣做。通過使用''-s選項(xiàng),kill能 將任何信號(hào)發(fā)送給進(jìn)程。當(dāng)分別將sigint> sigstop或sigcont信號(hào)發(fā)送給進(jìn)程時(shí), linux就殺死、停止或繼續(xù)運(yùn)行這些進(jìn)程。您還町以將具它信號(hào)發(fā)送給進(jìn)程;這些信號(hào)屮 的一些對(duì)能是用與應(yīng)用程序相關(guān)的方法來解釋的。通過査看信號(hào)的手冊頁并搜索signals 一節(jié),您能學(xué)習(xí)某一特定進(jìn)程能識(shí)別哪些信號(hào)。si gterm 和 sigint如果您惣?xì)⑺肋M(jìn)程,那么有幾種選擇。缺省情況下,kill發(fā)送sigterm,它與control-c 著名的sigint不同,但是通常具冇相同的結(jié)果:$ k

41、ill 16217$ jobs -11 - 16217 terminatedxeyes -center red2 + 16224 stopped (signal)xeyes -center blue功能強(qiáng)大的kill進(jìn)程可以自己選擇或者由于被停止或由于某種原因''被阻塞而忽略sigterm和sigint.在這些情況下 可能需要使用功能強(qiáng)犬的sigkill信號(hào)。進(jìn)程不能忽略sigkill:$ kill 16224$ jobs -1xeyes -center bluexeyes -center blue2+ 16224 stopped (signal)$ kill -s sigki

42、ll$ jobs -12+ 16224 interruptnohup 您啟動(dòng)作業(yè)的終端被稱為這個(gè)作業(yè)的控制終端。當(dāng)您注銷時(shí), 池shell (缺省情況卜不是bash)將向 這些后臺(tái)作業(yè)傳送sighup信號(hào),從而導(dǎo)致這些進(jìn)程退出。為了保護(hù)進(jìn)程以免產(chǎn)生這種行為,當(dāng)您啟動(dòng)進(jìn) 程時(shí),請(qǐng)使用nohup:$ nohup make &$ exit使用ps來列出進(jìn)程我們較早使用的jobs命令只列出了從您bash會(huì)話上啟動(dòng)的進(jìn)程。為了查看您系統(tǒng)上所有的進(jìn)程,請(qǐng) 使用同時(shí)帶冇a和x選項(xiàng)的ps:$ ps axpid ttystattime command1 ?s0:04 init 32 ?sw0:11 ke

43、ventd3 ?swn0:13 ksoftirqd_cpu04 ?sw2:33 kswapd5 ?sw0:00 bdflush我們只列出了開始的幾個(gè)進(jìn)程,因?yàn)橥ǔK且粋€(gè)罪常長的列表。這捉供給您整臺(tái)機(jī)器正在執(zhí)行的進(jìn)程的 一個(gè)快照,但您可能要篩選掉一些信息。如果您要省略ax,那么將只看到您擁有的并具有控制終端的進(jìn) 程。命令ps x將顯示您所有的進(jìn)程,甚至那些沒有控制終端的進(jìn)程。如果您要使用ps a,那么可以獲 取附加在終端上的每人的進(jìn)程列表。查看森林(層次結(jié)構(gòu))和樹您也對(duì)以列出冇關(guān)每個(gè)進(jìn)程的不同信息的列表。使用forest選項(xiàng)叮以很容易地杳看進(jìn)程的層次結(jié)構(gòu), 它將向您顯示系統(tǒng)上的各種進(jìn)程是如何相

44、互關(guān)聯(lián)的。為一個(gè)進(jìn)程啟動(dòng)一個(gè)新進(jìn)程時(shí),那個(gè)新進(jìn)程被稱為 、'子進(jìn)程。在一forest列表中,父進(jìn)程出現(xiàn)在左側(cè),而子進(jìn)程作為分支出現(xiàn)在右側(cè):$ ps x forestpidttystattimecommand927pt s/1s0:00bash6690pt s/1s0:00bash26909pts/1r0:00ps x -forest19930pts/4s0:01bash25740pts/4s0:04vi processes.txt“u”和ul5,ps選項(xiàng)、'u 或7選項(xiàng)也可以被添加到''&和''x 的任何組合中以包含關(guān)于每個(gè)進(jìn)程的更多信息

45、:$ ps auuserpid%cpu務(wù)memvszrssttystatstarttime;commandagriffis4030.00.0248472ttyls20010:00-bashchouser4040.00.0250892tty2s20010:00-bashroot4080.0001308248tty6s20010:00/sbin/agetty 3agriffis4340.00.010084ttyls20010:00/bin/sh /usr/xchouser9270.00.0254096pt s/1s20010:00bash$ ps alfuidpidppidprinivszrssw

46、chanstat ttytime command1001001403190248472wait4sttyl0:00-bash1001000404190250892wait4stty20:00-bash00004081901308248read_cstty60:00/sbin/ag00010014344039010084wai t4sttyl0:00/bin/sh000100092765290254096wait4spt s/10:00bash使用“top”如果您正在連續(xù)多次運(yùn)行ps,并嘗試觀察p"的變化,那么您可能想要用top。top顯示了持續(xù)更新的 進(jìn)程列表,以及一些冇用的摘要信息

47、:$ top10:02pm up 19 days, 6:24,8 users,load average: 0.04, 0.05,0.0075 processes: 74 sleeping, 1running,0 zombie, 0 stoppedmem:256020kav,226580kused,29440kfree,okshrd,3804k buffswap:136544kavz80256kused,56288kfree101760k cachedpiduserprinisizerssshare stat lib%cpu%mem time command628root160213m31m23

48、04 s01.9 12.591:43x26934chouser170127212721076 r01.10.40:00top652chouser1101201688401604 s00.53.43:52gnome-termin641chouser90293628081416 s00.11.02:13sawfish0-0% nice, 96.0% idlesystem,cpu states :1.3% user, 2.5%nice每個(gè)進(jìn)程都有個(gè)優(yōu)先級(jí)設(shè)置,linux用它來確疋:該進(jìn)程相對(duì)丁與系統(tǒng)上其它進(jìn)程的運(yùn)行速度。通過使 用nice命令來啟動(dòng)進(jìn)程您能設(shè)登進(jìn)程的優(yōu)先級(jí):$ nice -n 10

49、oggenc /tmp/song.wav 因?yàn)閮?yōu)先級(jí)設(shè)豐稱為nice,所以很容易記住一個(gè)更大的值對(duì)于其它進(jìn)程是非常友好的,從而允許它們獲 取對(duì)cpu的優(yōu)先訪問權(quán)。缺省情況下,用0設(shè)宣來啟動(dòng)進(jìn)程,所以上而的10設(shè)置意味著oggenc將 欣然放棄對(duì)cpu的訪問權(quán),而把它交給其它進(jìn)稈。一般來說,這意味著oggenc將允許其它進(jìn)程以它們 正常的速度運(yùn)行,而不管oggenc突然多么迫切地需要訪問cpu。您可以在上而的ps和top列農(nóng)的 ni列下看到這些nice值(niceness)的級(jí)別。ren ice只有在您啟動(dòng)進(jìn)程時(shí),nice命令才改變它的優(yōu)先級(jí)。如果您想要更改正在運(yùn)行的進(jìn)程nice值設(shè)置,那 么使

50、用renice:$ ps 1 641fuidpidppidprinivszrsswchanstatttytimecommand000100064119058762808do seis92:14sawfish$ renice10 641641:oldpriority 0,newpriority10$ ps1 641fuidpidppidprinivszrsswchanstatttytimecommand0001000641191058762808do seis92:14sawfish五。文本處理再述重定向町以使用''操作符將命令的輸出重定向到一個(gè)文件,如卜所示:$ echo ,f

51、firstfhe11 > copyme除了將輸出重定向到一個(gè)文件z外,我們也可以利川shell強(qiáng)大的名為管道的特性。通過 使用管道,我們能將一個(gè)命令的輸出傳遞給另一個(gè)命令的輸入??紤]下而示例:$ echo lfhi there11 i wc129字符用來將左側(cè)命令的輸出連接到右側(cè)命令的輸入。在上面的示例中,echo命令打卬出 后而跟有換行符的字符串hi therco那個(gè)輸出通常出現(xiàn)在終端上,但是管道將它重定向到 wc命令,該命令顯示它輸入屮的行、字和字符的數(shù)量。管道示例這里是另一個(gè)簡單示例:$ is -s i sort -n 在木例ip, 1s-s通常打印終端上當(dāng)前1=1錄的列表,并在每

52、個(gè)文件前面打印它的人小。但是 我們己通過管道將輸出傳遞給sort -n,它根據(jù)文件大小對(duì)輸出排序。這是在您的主目錄中 查找大型文件的一個(gè)實(shí)際有用的方法!卜冽的示例更復(fù)雜,但是它們演不了通過可以使用管道實(shí)現(xiàn)的強(qiáng)人功能。我們將拋棄我們還 未討論的一些命令,但不要讓它使您放慢腳步。請(qǐng)集中精力理解管道的工作原理,這樣您才 能將它們應(yīng)用到日常linux任務(wù)中。解壓縮管道通常為了解壓縮并解包文件,您可以執(zhí)行以下操作:$ bzip2 -d linux-2 <4.16 tar.bz2$ tar xvf linux-2.416.tar這個(gè)方法的缺點(diǎn)是需要在您的磁盤上創(chuàng)建一個(gè)中間的未壓縮文件。山于tar具備

53、從其輸入 上直接讀的能力(而不是指定一個(gè)文件),所以我們可以使用管道來產(chǎn)生相同的最終結(jié)果:$ bzip2 -de linux-24.16.tarbz2 | tar xvf -哇!我們壓縮的tarball已經(jīng)被解壓縮了,而且不需要中間文件。更長的管道這是另一個(gè)管道示例:$ cat myfile.txt | sort | uniq | we -1我們使用cat將myfi le. txt的內(nèi)容傳遞給sort命令。當(dāng)sort命令接收到這個(gè)輸入 時(shí),它対所有的輸入行排序,以便它們按字母次序排列,然后它將輸出發(fā)送到uniq°uniq除 去任何重復(fù)行,將篩選后的輸出發(fā)送到wc-lo我們在前而就已經(jīng)

54、看到we命令了,但它沒 有帶命令行選項(xiàng)。當(dāng)給定-1選項(xiàng)時(shí),它只打印它輸入屮的行數(shù),而不包括字和字符。用您 肖愛的文木編輯器嘗試創(chuàng)建兩個(gè)測試文件,然后使用這個(gè)管道來査看您獲得什么樣的結(jié) 果。馬上開始文本處理現(xiàn)在我們著于快速杏看標(biāo)準(zhǔn)linux文木處理命令。因?yàn)槲覀冋谀窘坛体懻撛S多內(nèi)容, 所以沒冇足夠的篇幅來提供每個(gè)命令的示例。因此,鼓勵(lì)您閱讀每個(gè)命令的手冊頁(例如, 通過輸入man echo),并花些時(shí)間使用每個(gè)命令來學(xué)習(xí)它們及其選項(xiàng)的工作原理。通常, 這些命令將任何文本處理的結(jié)果打印到終端,而不是修改任何指定文件。在快速查看了標(biāo)準(zhǔn)linux文本處理命令之后,我們將詳細(xì)討論輸出和輸入重定向。那么, 是的,隧道的盡頭就是光明。:)echoecho將它的參數(shù)打印到終端。如果您想要嵌入反斜杠轉(zhuǎn)義序列,那么使用-e選項(xiàng);例如 echo-e "foonfoo"將打印foo,然后打印一個(gè)換彳亍,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論