




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、在木教程中,我们将向您演示如何使用正则表达式在文件中搜索文木模式。 接着,我们将向您介绍文件系统层次结构标准(filesystem hierarchy standard,或者称为fhs),并向您演示如何在您的系统上定位文件。然后,我 们将通过在后台运行linux进程、列出进程清单、从终端上拆离进程以及更多 内容,向您演示如何完全控制linux进程。最后,我们将向您简要介绍shell管 道、重定向和文本处理命令。在结束本教程的学习后,您将牢固掌握linux管 理的基本知识并可以开始学习一些更高级的linux系统管理技能。-o关于本教程本教程涉及哪些内容?在本教程屮,我们将向您演示如何使用正则表达
2、式在文件屮搜索文本模式。接着, 我们将向您介绍文件系统层次结构标准(f订esystem hierarchy standard,或 者称为fhs),并向您演示如何在您的系统上定位文件。然后,我们将通过在后 台运行linux进程、列出进程清单、从终端上拆离进程以及更多内容,向您演 示如何完全控制linux进程。最后,我们将向您简耍介绍shell管道、重定向 和文本处理命令。在结束木教程的学习后,您将牢固掌握linux管理的基木知识并可以开始学习 一些更高级的linux系统管理技能。在本系刃教程(共8部分)结束时,您将具备成为linux系统管理员所必需的 知识,并且如杲您选择参加lpi考试,那么您将
3、能够获得linux professional institute 颁发的 lp1c level 1 证书。lpi 徽标是 linux professional institute 的商标。我应该学习本教程吗?木教程(也是木系列的第2部分)非常适合于那些具备良好bash基木知识, 并想获得基本linux管理任务详尽介绍的人员。如果您是linux新手,那么我 们建议您在继续学习之前先完成本教程系列的第1部分。对于某些人来说,本 教程屮的许多内容都很新,而更有经验的linux用户可能会发现木教程是使他 们的基本linux管理技能“炉火纯青”的途径。木系列中还有三篇其它教程: part 1: linu
4、x 基础 part 3:中级管理 part 4:高级管理关于作者有关木教程内容的技术问题,请与这些作者联系: daniel robbins, drobbinsgentoo. org chri s houser, chousergentoo. org aron griffis, daniel robbins住在新墨西哥州阿尔伯克基,是gentoo technologies, inc. 的总裁兼首席执行官,他主创了 gentoo linux,这是一种用于pc的高级 linux,以及portage系统,是一种用于linux的下一代移植系统。他还是几 本 macmi
5、llem 出版的书籍 caldera open linux unleashed、suse linux unleashed和samba unleashed的投稿人。daniel cl二年级起就和计算机结卜 不解z缘,那时他最先接触的是logo编程语言,并沉溺于pac man游戏屮。 这也许就是他至今担任sony electronic publishing/psygnosis首席图形设计 师的原因所在。daniel喜欢和他的妻子mary以及他们的女儿hadassah 一起 共度时光。chris houser在他的许多朋友屮以“欺骗专家”而闻名,自1994年加入印第 安纳州泰勒大学计算机科学网络管理
6、团队以来,一直是unix的拥护者,在那里, 他获得了计算机科学和数学学士学位。口那以后,他一直致力于web应用程序 编程、用户界面设计、专业视频软件支持,并且目前在compaq从事tru64 unix 设备驱动程序编程。他还参与了各种自由软件项目,最近的项目是gentoo linuxo他和他的妻子以及两只猫住在新汉普郡。aron gr辻fis毕业于泰勒大学,获得计算机科学学位并被授予“理想unix公 社的未来创立者”荣誉称号。为实现那个目标,aron在compaq工作,从事编 写tru64 unix网络驱动程序的工作,并在业余吋间弹弹钢琴或者开发gentoo linuxo他和他的妻子amy (
7、也是unix工程师)住在新罕布什尔州的纳舒尼。-o正则表达式什么是正则表达式?正则表达式(也称为“regex”或"regexp”)是一种用來描述文本模式的特殊 语法。在linux系统上,止则表达式通常被用來查找文本的模式,以及对文本 流执行“搜索-替换”操作以及其它功能。与glob的比较 当我们看到正则表达式时,您可能发现正则表达式的语法看起来与我们上一篇教 程(请参阅本教程最后的“参考资料” 一节中列出的“笫1部分”)中研究的“文件名匹配替换”语法相类似。但是,不要让它欺骗您;它们的类似性只是表 面的。虽然正则表达式和文件名匹配替换模式可能看上去相类似,但是它们是根 木不同的两种类
8、型。简单子串记住那个警告,让我们看一下最基本的正则表达式,简单子串。为了这样做,我 们要使用grep,它是一个扫描文件内容来查找适合特定正则表达式的命令°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的第一个参数是一个正则表达式;第二个参数是一个文 件名。grep读取/etc/passwd中的每一行并对它应用简
9、单了串止则表达式bash 来查找匹配项。如果找到一个匹配项,那么grep打印出整行;否则,忽略该行。一般來说,如果您正在搜索一个子串,那么您町以不提供任何“特殊”字符,而 只是逐字地指定文木。只有在了串包含+、.、*、或(在这样的悄况下,这些字符需要用引号括起来并在它们的前面使用反斜杠)才需耍做特殊 的事情。下面是简单了串止则表达式几个其它示例:/imp (扫描查找文字串/imp) box (扫描查找文字串box) "*funny*"(扫描查找文字串*funny*) "id. so"(扫描查找文字串id. so)元字符使川止则表达式,町以利川元/你执行比
10、我们至今已研究过的示例复杂得多的搜索。这些 元字符中的一个是(点),它与任何单个字符匹配:$ 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没有出现在/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文件名扩展屮的相同。同样,这是学习正则表达式的难点之一 -这个语法与''glob 文件名扩展语法於似,但乂不尽相同,它经常给学习正则
12、表达式的人带来闲惑。使用八通过使后面紧跟一个“,您可以使方括号中的意思相反。在木例屮,方括号将与未列在方 括号内的任意字符匹配。同样,请注意我们在正则表达式中使用,而在glob中使用!:$ grep dev.hdaa12 /etc/fstab/dev/hda3/reiserfsnoatime,ro 1 1#/dev/hda4/mnt/extra reiserfsnoatime,rw 1 1区别语法注意卜面一点很重耍:方括号内紳语法根本不同f正则表达式其它部分中的语法。例如, 如果在方括号内放置一个.,那么它允许方括号与文字匹配,就象上面示例屮的1和 2。比较起来,除非有作为前缀,否则方括号外而
13、的文字被解释为一个元字符。通过输 入如下命令,我们可以利用这一事实来打印/etc/fstab屮包含文字串dev. hda的所有行 的列表:$ grep devhda /etc/fstab或者,我们也可以输入:$ grep ndev.hdah /etc/fstab这两个正则表达式都不可能与您的/etc/fstab文件中的任何行相匹配。某些元字符本身不匹配任何字符,但却修改前-个字符的含义。个这样的元字符是*(星号),它用来与前一个字符的零次或者多次重复出现相匹配。这里是些示例: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)出现零次。请注意解 释*正则表达式元字符所用的方法与解释*glob字符的方法根本不同。行的开始和结束我们在这里要详细描述的最后几个元字符是八和$元字符,它们用来分别与行的开始和结 束相匹配。通过在正则表达式开始处使川一个-,您町以将您的模式
15、''锚定在行的开始。 在下面的示例中,我们使用 鼻正则表达式来与以#字符开始的任何行相匹配:$ grep a# /etc/fstab# /etc/fstab: static file system information.完整行正则表达式 可以组合八和$来少完整的行相匹配。例如,下面的止则表达式将与以#字符开始并以. 字符结束的行相匹配,在其中间可以有任意多个英它字符:$ grep “#*$, /etc/fstab# /etc/fstab: static file system information.在上面的示例屮,我们用单引号将我们的正则表达式括起来以阻止shell解释$。
16、在不 使用单引号的情况下,grep甚至没有机会查看$, $就从我们的正则表达式上消失了。三。fhs和查找文件文件系统层次结构标准filesystem hierarchy standard是指定linux系统上目录布局的文档。fhs被 设计來捉供一个通用布局以简化与分布无关的软件开发。fhs指定下列f1录(直接來自 fhs规范): /(根冃录) /boot (引导装入程序的静态文件) /dev (设备文件) /etc (主机特定的系统配置) /lib (基本共亨库和核心模块) /mnt (临时挂装文件系统的挂装点) /opt (附加的应用程序软件包) /sbin (基木系统二进制文件) /tmp
17、 (临时文件) /usr (辅助层次结构) /var (可变数据)两个独立的fhs类别fhs的布局规范里丁存在两个独立的文件类别:町共亨与不町共亨以及町变与静态这思想。可 共亨数据飽在主机z间被共享;不“共声数菇特定丁给定主机(例如配置文件)。町变数据 可以被修改;靜,态麹那不可以被修改(除了在系统安装和维护阶段)。下面的表格概述了四种可能的组合,并列出了与那些类别相符的日录示例。这个表还是肓接 取自fhs规范:卜1x-+1可共享1+不可共享111静态11-1 /usr|1 /opti/etc1/boot|1可变1卜-+71 /var/mail1 /var/spool/news+十i /var
18、/run|1 /var/lock i+/usr中的辅助层次结构在/usr下,您会发现一个看上去与根文件系统非常相似的辅助层次结构。当机器打开并运行时,/usr的 存在并不匝要,所以能在网络上共亨它(、'可共享),或者从cd-rom上挂装它(''静态)。大多数linux 设置不利用/usr的共享,但是理解根ii录中主层次结构和/usr中辅助层次结构z间的区别的用处是 冇价值的。这就是我们要说的有关filesystem hierarchy standard的所有内容。该文档木身非常具有町读性, 所以您应该去看一下。我们承诺如果您读了它,那么您将对linux文件系统理解得更多
19、。查找文件linux系统通常包含数i万个文件。可能您非常精明能干,从未丢失它们屮的任何一个,但是更可能的是, 您偶尔在查找一个文件时需耍帮助。linux上有儿个不同的工具用丁査找文件。下而的演示将向您介绍它 们,并帮助您选择适合您的工作的工具。path 当您在命令行上运行程序时,bash实际上搜索目录列衣來查找您所请求的程序。例如,当您输入is, bash实质上不知道is程序位于/usr/bin.但是,bash引用一个名为path的环境变量,它是一个 用冒号分隔的目录列表。我们可以检查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内,所以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上的元索,尽管这不是那么容易,因为您不能小用现有的$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关于“which”的一切通过使用which,您能杳看path屮是否有给定程序。例如,我们通过下面的命令发现 linux系统没有(普通的)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最后,您应该知道a标志,它使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出现在两个常见二进制位置/bin和/usr/bin中。另外,
23、我们被告知手册页定位在 /usr/share/man。如果您要输入man is,那么这就是您将看到的手册页。whereis程序还具冇搜索源代码、指定备用搜索路径和搜索不寻常项的能力。冇关进一步信息,请参考 whereis手册页。findfind命令是您工具箱中的另一个工具。使用find,您不会受限于程序;通过使用多种搜索标准,您能 搜索您想要的任何文件。例如,要搜索/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的参数中使用、'glob通配符,询捉条件是您用双引号引用了它们或用反 斜杠进行了转义(这样它们就能被完整地传递到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中忽略大小写当然,您可能想要在搜索中忽略大小写:$ find /usr/share/doc -name 1rreeaaddmmee*f或者,更简单:$ find /usr/share/doc -iname readme*正如您看到的,您能使用-inane來进行不区分大小写的搜索。find和正则表达式如果您熟悉正则表达式,那么使用regex选项将把输出限制成匹配某一模式的文件名。与-iname选 项类似,它
27、有一个相应的-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耍求指定的正则表达式与整个路径匹配,而不只是该路径的一部分。为此, 指定前导和尾随的.*是必要的;只使用xt是不够的。find和类型type选项允许您查找某一类和的文件系统对
28、象。可能的type参数是b (块设备)、c (字符设备)、 d (目录)、p (命名管道)、f (常规文件)、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选项允许您根据最近一次的修改时间來选择文件。mtime的参数以24小时为单位,当输入时 带加号(表示、'z后)或者减号(表示前)时,它最冇用。例如,考虑如下情
29、形:$ is -1 ?-rw 1rootroot0jan718:00arootroot0jan618:00brw丄rootroot0jan518:00w1c-rw 1rootroot0jan418:00d$ datemon jan 7 18:14:52 est 2002您町以搜索力过去的24小时z内创建的文件:$ find . -name ? -mtime -1 /a或者您可以搜索在当前24小时周期之前创建的文件:$ find . -name ? -mtime +0./b/c /d-daystart 选项 如果您另外指定了 -daystart选项,那么时间周期以今天的开始时为开始,而不是24小
30、时z前。例如, 这是昨天和前天创建的一组文件:$ find -name ? -daystart -mtime +0 -mtime-3 /b./c$ is -1b crootroot0 jan618:00brw1-rw- 1rootroot0 jan518:00c-size选项-size选项允许您根据文件的大小來查找它们。缺省情况下,-si刁e的参数是512个字节 的块,但是添加后缀可以使操作更简便。可用的后缀是b (512字节的块)、c (字节)、 k (千字节)和w (2字节的字)。另外,您可以在前放置加号('、人于)或者减号(''小 于)o 例如,要在/usr/bi
31、n屮查找小于50个字节的常规文件:$ find /usr/bin 一type f -size -50c/usr/bin/krdb/usr/bin/run-nautilus/usr/bin/sgmlwhich/usr/bin/muttbug处理找到的文件您可能在想如何处理所冇这些找到的文件!不用担心,通过使用-exec选项,find具冇对 它找到的文件进行操作的能力。这个选项接受命令行作为它的参数来执行,它以;中断, 并用文件名来替换任何出现的。下面这个示例可以帮助您完全理解它:$ 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开发的儿年中,它 获得了发展。find中还有许多其它有用的选项。您可以在find手册页屮学习它们。定位我们已经学习了 which、where is和
33、find。您可能已经注意到执行find要花一些时间, i大i为它需耍读取它止在搜索的每个h录。事实表明locate命令町以通过依靠外部数据库来 加速操作。locate命令与路径名的任何部分相匹配,而不只是文件本身。例如:$ locate bin/ls/var/ftp/bin/ls/bin/ls/sbin/lsmod/sbin/lspci/usr/bin/lsattr/usr/bin/lspgpot/usr/sbin/lsof使用 updatedb大多数linux系统包含-个周期性的进程来更新这个数据库。如果您的系统在运行上述命令时返回如下 错误,那么您需要运行updatedb来生成搜索数据库:
34、$ locate bin/lslocate: /var/spool/locate/locatedb: no such file or directory$ supassword:# updatedb运行updatedb命令可能要花很长时间。如果您硕盘的噪音很人,那么将听到许多吵闹声,因为这正在 为整个文件系统建立索引。:)slocate在linux的许多分发版(distribution)中,locate命令已经被slocato所替代。通常有-个至 ''locate"的符号链接,这样您不需要记住拥有的是哪一个。slocate代表''安全定位(secure
35、 locate) 。它将许可权信息存储在数拯库中,这样普通用户不能以别的方式窥探他们不能读取的目录。 slocate的用法信息在本质上与locate的信息相同,尽管输出可能不同(取决于正在运行命令的用户)。四。进程控制启动xeyes为了学习进程控制,我们首先需耍启动个进程:$ xeyes -center red您将注意到弹出一个xeyes窗口,红色眼球跟随您的鼠标在屏幕i.移动。您还可能注意到在终端上没冇 新的提示符。停止进程为了恢复提示符,您可以输入control-c (通常写为ctrl-c或 v):ac$您获得了一个新的bash提示符,但xeyes 口消失了。窃实上,整个进程已被杀死。如果
36、不通过 control-c来杀死它,我们还可以使用control-z来使它只是停止:$ xeyes -center red人z1 + stoppedxeyes -center red$这次您获得了一个新的bash提示符,并且xeyes窗口依然保稱着。但是,如果您试图稍微移动这个窗 口,那么将注意到眼球在某一位置被冻结了。如果xeyes窗口被另一个窗口遮盖,然后又出现,那么您 将看到它根本不会重绘眼睹。进程没有做任何操冷;事实上,它是''被停止了。fg 和 bg为了使进程''重新活动并再次运行,我们能用bash内置的fg使它在前台运行:$ fgxeyes 刃/xe
37、yesazxeyes -center red1 + stopped$现在川bash内置的bg来继续在后台运行它:$ bg1+ xeyes -center red &$好极了!现在xeyes进程在后台运行,并ii出现了新的正在工作的bash提示符。使用“ & ”如果我们一开始想要在后台启动xeyes (而不是使用control-z和bg),那么我们只须在xeyes命 令行的最后添加一个沌:$ xeyes -center blue &2 16224多个后台进程现在红色和蓝色xeyes都在后台运行。我们nj以川bash内置的jobs列出这些作业:$ jobs -11 - 16
38、217 runningxeyes -center red &2 + 16224 runningxeyes center blue &左列中的号码是当作业被启动时,bash指定给它们的作业号码。作业2有一个+(加号), 这表示它是''当前作业,这意味着输入fg将把它带到前台。您也可以通过指定作业号码 将指定的作业带到前台,换句话说,fgl使红色xeyes成为前台任务。下一列是包含在列 表中的进程标识或者是pid,由于jobs的-1选项可得到该列表。最后,这两个作业当前 都是''running并r它们的命令行都列在右边。介绍信号为了杀死、停止或者继续
39、运行进程,linux使用了 -种称为''信号的特殊通讯方式。通过 将某一信号发送给进程,您可以使它中断、停止或执行其它操作。这就是当您输入 control-cx control-z或使用bg或fg内置命令时真正执行的操作-您正使用 bash将一个特殊信号发送给进程。还可以通过使用kill命令并在命令行上指定pid (进 程标识)来发送这些信号:$ kill -s sigstop 16224$ jobs -1xeyes -center red &xeyes -center blue1 - 16217 running2 + 16224 stopped (signal)正如您
40、看到的,kill不一定、杀死进程,尽管它能这样做。通过使用''-s选项,kill能 将任何信号发送给进程。当分别将sigint> sigstop或sigcont信号发送给进程时, linux就杀死、停止或继续运行这些进程。您还町以将具它信号发送给进程;这些信号屮 的一些对能是用与应用程序相关的方法来解释的。通过査看信号的手册页并搜索signals 一节,您能学习某一特定进程能识别哪些信号。si gterm 和 sigint如果您惣杀死进程,那么有几种选择。缺省情况下,kill发送sigterm,它与control-c 著名的sigint不同,但是通常具冇相同的结果:$ 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 您启动作业的终端被称为这个作业的控制终端。当您注销时, 池shell (缺省情况卜不是bash)将向 这些后台作业传送sighup信号,从而导致这些进程退出。为了保护进程以免产生这种行为,当您启动进 程时,请使用nohup:$ nohup make &$ exit使用ps来列出进程我们较早使用的jobs命令只列出了从您bash会话上启动的进程。为了查看您系统上所有的进程,请 使用同时带冇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我们只列出了开始的几个进程,因为通常它是一个罪常长的列表。这捉供给您整台机器正在执行的进程的 一个快照,但您可能要筛选掉一些信息。如果您要省略ax,那么将只看到您拥有的并具有控制终端的进 程。命令ps x将显示您所有的进程,甚至那些没有控制终端的进程。如果您要使用ps a,那么可以获 取附加在终端上的每人的进程列表。查看森林(层次结构)和树您也对以列出冇关每个进程的不同信息的列表。使用forest选项叮以很容易地杳看进程的层次结构, 它将向您显示系统上的各种进程是如何相
44、互关联的。为一个进程启动一个新进程时,那个新进程被称为 、'子进程。在一forest列表中,父进程出现在左侧,而子进程作为分支出现在右侧:$ 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 的任何组合中以包含关于每个进程的更多信息
45、:$ ps auuserpid%cpu务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”如果您正在连续多次运行ps,并尝试观察p"的变化,那么您可能想要用top。top显示了持续更新的 进程列表,以及一些冇用的摘要信息
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每个进程都有个优先级设置,linux用它来确疋:该进程相对丁与系统上其它进程的运行速度。通过使 用nice命令来启动进程您能设登进程的优先级:$ nice -n 10
49、oggenc /tmp/song.wav 因为优先级设豐称为nice,所以很容易记住一个更大的值对于其它进程是非常友好的,从而允许它们获 取对cpu的优先访问权。缺省情况下,用0设宣來启动进程,所以上而的10设置意味着oggenc将 欣然放弃对cpu的访问权,而把它交给其它进稈。一般來说,这意味着oggenc将允许其它进程以它们 正常的速度运行,而不管oggenc突然多么迫切地需要访问cpu。您可以在上而的ps和top列农的 ni列下看到这些nice值(niceness)的级别。ren ice只有在您启动进程时,nice命令才改变它的优先级。如果您想要更改正在运行的进程nice值设置,那 么使
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字符用来将左侧命令的输出连接到右侧命令的输入。在上面的示例中,echo命令打卬出 后而跟有换行符的字符串hi therco那个输出通常出现在终端上,但是管道将它重定向到 wc命令,该命令显示它输入屮的行、字和字符的数量。管道示例这里是另一个简单示例:$ is -s i sort -n 在木例ip, 1s-s通常打印终端上当前1=1录的列表,并在每
52、个文件前面打印它的人小。但是 我们己通过管道将输出传递给sort -n,它根据文件大小对输出排序。这是在您的主目录中 查找大型文件的一个实际有用的方法!卜冽的示例更复杂,但是它们演不了通过可以使用管道实现的强人功能。我们将抛弃我们还 未讨论的一些命令,但不要让它使您放慢脚步。请集中精力理解管道的工作原理,这样您才 能将它们应用到日常linux任务中。解压缩管道通常为了解压缩并解包文件,您可以执行以下操作:$ bzip2 -d linux-2 <4.16 tar.bz2$ tar xvf linux-2.416.tar这个方法的缺点是需要在您的磁盘上创建一个中间的未压缩文件。山于tar具备
53、从其输入 上直接读的能力(而不是指定一个文件),所以我们可以使用管道来产生相同的最终结果:$ bzip2 -de linux-24.16.tarbz2 | tar xvf -哇!我们压缩的tarball已经被解压缩了,而且不需要中间文件。更长的管道这是另一个管道示例:$ cat myfile.txt | sort | uniq | we -1我们使用cat将myfi le. txt的内容传递给sort命令。当sort命令接收到这个输入 时,它対所有的输入行排序,以便它们按字母次序排列,然后它将输出发送到uniq°uniq除 去任何重复行,将筛选后的输出发送到wc-lo我们在前而就已经
54、看到we命令了,但它没 有带命令行选项。当给定-1选项时,它只打印它输入屮的行数,而不包括字和字符。用您 肖爱的文木编辑器尝试创建两个测试文件,然后使用这个管道来査看您获得什么样的结 果。马上开始文本处理现在我们着于快速杏看标准linux文木处理命令。因为我们正在木教程屮讨论许多内容, 所以没冇足够的篇幅来提供每个命令的示例。因此,鼓励您阅读每个命令的手册页(例如, 通过输入man echo),并花些时间使用每个命令来学习它们及其选项的工作原理。通常, 这些命令将任何文本处理的结果打印到终端,而不是修改任何指定文件。在快速查看了标准linux文本处理命令之后,我们将详细讨论输出和输入重定向。那么, 是的,隧道的尽头就是光明。:)echoecho将它的参数打印到终端。如果您想要嵌入反斜杠转义序列,那么使用-e选项;例如 echo-e "foonfoo"将打印foo,然后打印一个换彳亍,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025分布式光伏发电屋顶租赁合同
- 2025年度空调设备供应合同
- 2025存量房买卖合同附件样本
- 阴茎癌的临床护理
- 《中医诊断学题》课件
- 《公共卫生法规与传染病管理》课件
- 《深度解析医疗制度》课件
- 2025年陕西货运从业资格证模拟考试下载
- 塔里木职业技术学院《教学统计软件》2023-2024学年第二学期期末试卷
- 上海市长宁区高级中学2025届初三年级第一次质量检测试题化学试题含解析
- GB/T 4326-2006非本征半导体单晶霍尔迁移率和霍尔系数测量方法
- 酒水购销合同范本(3篇)
- GCP培训考试题库及参考答案(完整版)
- 乒乓球社团活动记录
- 新时代中小学教师职业行为十项准则考核试题及答案
- 数据结构-第6章-图课件
- 《变态心理学与健康心理学》考试复习题库150题(含答案)
- DB15T 489-2019 石油化学工业建设工程技术资料管理规范
- 皮内针讲课课件
- 村卫生室静脉输液准入申请审批表
- 提高钢柱安装垂直度合格率QC成果PPT
评论
0/150
提交评论