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

下載本文檔

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

文檔簡介

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

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

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

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

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

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

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

8、型。簡單子串記住那個警告,讓我們看一下最基本的正則表達式,簡單子串。為了這樣做,我 們要使用grep,它是一個掃描文件內(nèi)容來查找適合特定正則表達式的命令°grep 打印與正則表達式匹配的每一行,并忽略與之不匹配的每一行:$ 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的第一個參數(shù)是一個正則表達式;第二個參數(shù)是一個文 件名。grep讀取/etc/passwd中的每一行并對它應(yīng)用簡

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

10、我們至今已研究過的示例復(fù)雜得多的搜索。這些 元字符中的一個是(點),它與任何單個字符匹配:$ 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掃 描這些行時沒冇查找文字dev. hda字符串,而是查找dev. hda饑c

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

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

13、的文字被解釋為一個元字符。通過輸 入如下命令,我們可以利用這一事實來打印/etc/fstab屮包含文字串dev. hda的所有行 的列表:$ grep devhda /etc/fstab或者,我們也可以輸入:$ grep ndev.hdah /etc/fstab這兩個正則表達式都不可能與您的/etc/fstab文件中的任何行相匹配。某些元字符本身不匹配任何字符,但卻修改前-個字符的含義。個這樣的元字符是*(星號),它用來與前一個字符的零次或者多次重復(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行與正則表達式ab*c相匹配,因為星號也允許前面的表達式(b)出現(xiàn)零次。請注意解 釋*正則表達式元字符所用的方法與解釋*glob字符的方法根本不同。行的開始和結(jié)束我們在這里要詳細描述的最后幾個元字符是八和$元字符,它們用來分別與行的開始和結(jié) 束相匹配。通過在正則表達式開始處使川一個-,您町以將您的模式

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

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

17、 (臨時文件) /usr (輔助層次結(jié)構(gòu)) /var (可變數(shù)據(jù))兩個獨立的fhs類別fhs的布局規(guī)范里丁存在兩個獨立的文件類別:町共亨與不町共亨以及町變與靜態(tài)這思想。可 共亨數(shù)據(jù)飽在主機z間被共享;不“共聲數(shù)菇特定丁給定主機(例如配置文件)。町變數(shù)據(jù) 可以被修改;靜,態(tài)麹那不可以被修改(除了在系統(tǒng)安裝和維護階段)。下面的表格概述了四種可能的組合,并列出了與那些類別相符的日錄示例。這個表還是肓接 取自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下,您會發(fā)現(xiàn)一個看上去與根文件系統(tǒng)非常相似的輔助層次結(jié)構(gòu)。當(dāng)機器打開并運行時,/usr的 存在并不匝要,所以能在網(wǎng)絡(luò)上共亨它(、'可共享),或者從cd-rom上掛裝它(''靜態(tài))。大多數(shù)linux 設(shè)置不利用/usr的共享,但是理解根ii錄中主層次結(jié)構(gòu)和/usr中輔助層次結(jié)構(gòu)z間的區(qū)別的用處是 冇價值的。這就是我們要說的有關(guān)filesystem hierarchy standard的所有內(nèi)容。該文檔木身非常具有町讀性, 所以您應(yīng)該去看一下。我們承諾如果您讀了它,那么您將對linux文件系統(tǒng)理解得更多

19、。查找文件linux系統(tǒng)通常包含數(shù)i萬個文件??赡苣浅>髂芨桑瑥奈磥G失它們屮的任何一個,但是更可能的是, 您偶爾在查找一個文件時需耍幫助。linux上有兒個不同的工具用丁査找文件。下而的演示將向您介紹它 們,并幫助您選擇適合您的工作的工具。path 當(dāng)您在命令行上運行程序時,bash實際上搜索目錄列衣來查找您所請求的程序。例如,當(dāng)您輸入is, bash實質(zhì)上不知道is程序位于/usr/bin.但是,bash引用一個名為path的環(huán)境變量,它是一個 用冒號分隔的目錄列表。我們可以檢查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指派元素來擴充它:$ path=$path:/bin$ echo $path/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/xhr6/bin:/home/agriffis/b in您也可以除去path上的元索,盡管這不是那么容易,因為您不能小用現(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中給定程序的所冇實例:$ which -a is/usr/bin/ls/bin/lsw h ereis如果您不只對程序位置感興趣,而且想要找到更多信息,那么可以嘗試where is程序:$ whereis isis: /bin/ls /usr/bin/ls /usr/share/man/manl/ls.l.gz這里我們看到is出現(xiàn)在兩個常見二進制位置/bin和/usr/bin中。另外,

23、我們被告知手冊頁定位在 /usr/share/man。如果您要輸入man is,那么這就是您將看到的手冊頁。whereis程序還具冇搜索源代碼、指定備用搜索路徑和搜索不尋常項的能力。冇關(guān)進一步信息,請參考 whereis手冊頁。findfind命令是您工具箱中的另一個工具。使用find,您不會受限于程序;通過使用多種搜索標(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通配符,詢捉條件是您用雙引號引用了它們或用反 斜杠進行了轉(zhuǎn)義(這樣它們就能被完整地傳遞到find而不是被bash擴展)。例如,我們 可能想要搜索帶有擴展名的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來進行不區(qū)分大小寫的搜索。find和正則表達式如果您熟悉正則表達式,那么使用regex選項將把輸出限制成匹配某一模式的文件名。與-iname選 項類似,它

27、有一個相應(yīng)的-iregex選項,該選項忽略模式中的大小寫。例如:$ 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請注懣:不象許多程序,find耍求指定的正則表達式與整個路徑匹配,而不只是該路徑的一部分。為此, 指定前導(dǎo)和尾隨的.*是必要的;只使用xt是不夠的。find和類型type選項允許您查找某一類和的文件系統(tǒng)對

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

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

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

31、n屮查找小于50個字節(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選項,find具冇對 它找到的文件進行操作的能力。這個選項接受命令行作為它的參數(shù)來執(zhí)行,它以;中斷, 并用文件名來替換任何出現(xiàn)的。下面這個示例可以幫助您完全理解它:$ 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是一個功能非常強大的命令。在unix和linux開發(fā)的兒年中,它 獲得了發(fā)展。find中還有許多其它有用的選項。您可以在find手冊頁屮學(xué)習(xí)它們。定位我們已經(jīng)學(xué)習(xí)了 which、where is和

33、find。您可能已經(jīng)注意到執(zhí)行find要花一些時間, i大i為它需耍讀取它止在搜索的每個h錄。事實表明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)包含-個周期性的進程來更新這個數(shù)據(jù)庫。如果您的系統(tǒng)在運行上述命令時返回如下 錯誤,那么您需要運行updatedb來生成搜索數(shù)據(jù)庫:

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

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

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

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

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

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

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

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

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

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

44、互關(guān)聯(lián)的。為一個進程啟動一個新進程時,那個新進程被稱為 、'子進程。在一forest列表中,父進程出現(xiàn)在左側(cè),而子進程作為分支出現(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選項、'u 或7選項也可以被添加到''&和''x 的任何組合中以包含關(guā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ù)多次運行ps,并嘗試觀察p"的變化,那么您可能想要用top。top顯示了持續(xù)更新的 進程列表,以及一些冇用的摘要信息

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每個進程都有個優(yōu)先級設(shè)置,linux用它來確疋:該進程相對丁與系統(tǒng)上其它進程的運行速度。通過使 用nice命令來啟動進程您能設(shè)登進程的優(yōu)先級:$ nice -n 10

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

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

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

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

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

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

溫馨提示

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

最新文檔

評論

0/150

提交評論