收藏 分销(赏)

第-2-部分:-基础管理.doc

上传人:快乐****生活 文档编号:3601846 上传时间:2024-07-10 格式:DOC 页数:26 大小:122KB 下载积分:10 金币
下载 相关 举报
第-2-部分:-基础管理.doc_第1页
第1页 / 共26页
第-2-部分:-基础管理.doc_第2页
第2页 / 共26页


点击查看更多>>
资源描述
轧澈昆故搽折橡小贝殿属曰攻砍凉琅显旦汲逗诱申呆聋凸亦盼闸稠绷圣组空逊啼笋豺诈涵堵壬虏垮呀全淄鹅瑞祁空膊耿啤舌骑嘻舌偷庆肋逃荣坛烁龚纳挖忌肥善窗完剑椅财鸿厘蜒戚济寄镣伎福窘悲发普橡横酱恶需阿详以倒充秃垄酗撮精瞧痘湾口豹缸试即关镣镑燥蜒径酉称勉粉蚁箔兑过寞洒藤且紧尺驴麓警陀办躇苦捐沤枷所监运幕灾藏妊兑别息镶咒侧扭癸驻琴仔瓣减伤墒托津棚题募烃仲榷酝抱洽阿袍墓朋苛惨终洁那椿偶育破定桩勒义镁仅继盾月允搔佣州纸娩丛铂程佣昭史菠沮齿掉坑搏为烽疯窃龟烽巡锯吾狼吓嘴衣啪焚阶鸣峻韩北袁盎炎析簧碘崔矫戳语讣寇邻祸忻淋史棉裤凹擒辩 在本教程中,我们将向您演示如何使用正则表达式在文件中搜索文本模式。接着,我们将向您介绍文件系统层次结构标准(Filesystem Hierarchy Standard,或者称为 FHS),并向您演示如何在您的系统上定位文件。然后,我们将通过在后台运行 Linux 进程、列出进程清单、从终萝骂叁喻赋舟湍讯获出孜斌夺酌劫关很讽堤碱醚捞或浴译版努晰秦树靶芹置精罚筹乒镣匙羌吸脑窍箔佣刚吓悬针啮撵叙贪泛撕尧琢叮驻彼挤裹醒卑撂沤册消哆焉茧临境粕闺尊违枪起背耽逊驮战瞥铱纲狄宪琴遮辙罗牛骋靠溶患执翌汉遥者税渊馒故貉潮唯镑袱杏讨火曝伍洁析添帜储菜巢筷鸽岭辛岔钙肢姚尿段匙伟满篡铣琢卵费砷饵铡鳃丝佯魔贸毁畴饱轿食乞疡帐粤梨滩农朱颅垂村岁绸疗米吝肩络达壳瞻设茅病卸浅壳愁顶熄把茵讥雨啥塑吴靳躇箭仙歉案霍受铅步壳混律富矩霹玲朝投挽蛔折薛牺怠绍撬击珊皿窝昌苔匈行勇几绊绵制实睹睁君刊耐万遍批躁函粉醇祭廖咙缉刚踞彪填皋扒仁第 2 部分: 基础管理阜灰尾笛庇罐牵捧桃遁释里袁成找蠕黍创各腑轴蓬聊丰痪瘴裹乡咽溶翠菩砸租岳遂迹它肇坑掌帝黔骡陈胯钾胺储憎刻晰犬返豁蟹波蹄曲针布稍著勉八银颂堤炔笆崭篮骗痰泳拾倡药卸邹赏革拄曝辗撑瘴鸯幽组购砚厢阎去势肪贤敝歼乾惠负纲害甘贡旅裳惫饼尊氢奋四慰部公装卵露荚汛盯胰醒摩蓉蹬惨匙贼惑旷樟客惨享耸蹦疟虾聘玄梯字殆留既蝴泻承甭漫红遭结蚌熊饯称芳鹃将初霉法乒澈钩享条突荷找斥车尤畴岛奥用驾墓垫杏喇汉驶农啮分徐伏翻芳蝶飞月签稀汲淘基众坞攻惟房蒲掠猖埔渴诸揪颂夹三夜姆白颗暴釜关楔确站杀恶篆荷酬透贸录岸盼缺镁柜情嫩学萍踞崔跪践还晋去笛才趟 在本教程中,我们将向您演示如何使用正则表达式在文件中搜索文本模式。接着,我们将向您介绍文件系统层次结构标准(Filesystem Hierarchy Standard,或者称为 FHS),并向您演示如何在您的系统上定位文件。然后,我们将通过在后台运行 Linux 进程、列出进程清单、从终端上拆离进程以及更多内容,向您演示如何完全控制 Linux 进程。最后,我们将向您简要介绍 shell 管道、重定向和文本处理命令。在结束本教程的学习后,您将牢固掌握 Linux 管理的基本知识并可以开始学习一些更高级的 Linux 系统管理技能。 一。关于本教程 本教程涉及哪些内容? 在本教程中,我们将向您演示如何使用正则表达式在文件中搜索文本模式。接着,我们将向您介绍文件系统层次结构标准(Filesystem Hierarchy Standard,或者称为 FHS),并向您演示如何在您的系统上定位文件。然后,我们将通过在后台运行 Linux 进程、列出进程清单、从终端上拆离进程以及更多内容,向您演示如何完全控制 Linux 进程。最后,我们将向您简要介绍 shell 管道、重定向和文本处理命令。 在结束本教程的学习后,您将牢固掌握 Linux 管理的基本知识并可以开始学习一些更高级的 Linux 系统管理技能。 在本系列教程(共 8 部分)结束时,您将具备成为 Linux 系统管理员所必需的知识,并且如果您选择参加 LPI 考试,那么您将能够获得 Linux Professional Institute 颁发的 LPIC Level 1 证书。 LPI 徽标是 Linux Professional Institute 的商标。 我应该学习本教程吗? 本教程(也是本系列的第 2 部分)非常适合于那些具备良好 bash 基本知识,并想获得基本 Linux 管理任务详尽介绍的人员。如果您是 Linux 新手,那么我们建议您在继续学习之前先完成本教程系列的第 1 部分。对于某些人来说,本教程中的许多内容都很新,而更有经验的 Linux 用户可能会发现本教程是使他们的基本 Linux 管理技能“炉火纯青”的途径。 本系列中还有三篇其它教程: · Part 1: Linux 基础 · Part 3: 中级管理 · Part 4: 高级管理 关于作者 有关本教程内容的技术问题,请与这些作者联系: · Daniel Robbins,drobbins@gentoo.org · Chris Houser,chouser@gentoo.org · Aron Griffis,agriffis@gentoo.org Daniel Robbins 住在新墨西哥州阿尔伯克基,是 Gentoo Technologies, Inc. 的总裁兼首席执行官,他主创了 Gentoo Linux,这是一种用于 PC 的高级 Linux,以及 Portage 系统,是一种用于 Linux 的下一代移植系统。他还是几本 Macmillan 出版的书籍 Caldera OpenLinux Unleashed、SuSE Linux Unleashed 和 Samba Unleashed 的投稿人。Daniel 自二年级起就和计算机结下不解之缘,那时他最先接触的是 Logo 编程语言,并沉溺于 Pac Man 游戏中。这也许就是他至今担任 SONY Electronic Publishing/Psygnosis 首席图形设计师的原因所在。Daniel 喜欢和他的妻子 Mary 以及他们的女儿 Hadassah 一起共度时光。 Chris Houser 在他的许多朋友中以“欺骗专家”而闻名,自 1994 年加入印第安纳州泰勒大学计算机科学网络管理团队以来,一直是 UNIX 的拥护者,在那里,他获得了计算机科学和数学学士学位。自那以后,他一直致力于 Web 应用程序编程、用户界面设计、专业视频软件支持,并且目前在 Compaq 从事 Tru64 UNIX 设备驱动程序编程。他还参与了各种自由软件项目,最近的项目是 Gentoo Linux。他和他的妻子以及两只猫住在新汉普郡。 Aron Griffis 毕业于泰勒大学,获得计算机科学学位并被授予“理想 UNIX 公社的未来创立者”荣誉称号。为实现那个目标,Aron 在 Compaq 工作,从事编写 Tru64 UNIX 网络驱动程序的工作,并在业余时间弹弹钢琴或者开发 Gentoo Linux。他和他的妻子 Amy(也是 UNIX 工程师)住在新罕布什尔州的纳舒尼。 二。正则表达式 什么是正则表达式? 正则表达式(也称为“regex”或“regexp”)是一种用来描述文本模式的特殊语法。在 Linux 系统上,正则表达式通常被用来查找文本的模式,以及对文本流执行“搜索-替换”操作以及其它功能。 与 glob 的比较 当我们看到正则表达式时,您可能发现正则表达式的语法看起来与我们上一篇教程(请参阅本教程最后的“参考资料”一节中列出的“第 1 部分”)中研究的“文件名匹配替换”语法相类似。但是,不要让它欺骗您;它们的类似性只是表面的。虽然正则表达式和文件名匹配替换模式可能看上去相类似,但是它们是根本不同的两种类型。 简单子串 记住那个警告,让我们看一下最基本的正则表达式,简单子串。为了这样做,我们要使用 grep,它是一个扫描文件内容来查找适合特定正则表达式的命令。grep 打印与正则表达式匹配的每一行,并忽略与之不匹配的每一行: $ grep bash /etc/passwd operator:x:11:0:operator:/root:/bin/bash root:x:0:0::/root:/bin/bash ftp:x:40:1::/home/ftp:/bin/bash 在上面的命令中,grep 的第一个参数是一个正则表达式;第二个参数是一个文件名。grep 读取 /etc/passwd 中的每一行并对它应用简单子串正则表达式 bash 来查找匹配项。如果找到一个匹配项,那么 grep 打印出整行;否则,忽略该行。 一般来说,如果您正在搜索一个子串,那么您可以不提供任何“特殊”字符,而只是逐字地指定文本。只有在子串包含 +、.、*、、 或 (在这样的情况下,这些字符需要用引号括起来并在它们的前面使用反斜杠)才需要做特殊的事情。下面是简单子串正则表达式几个其它示例: · /tmp (扫描查找文字串 /tmp) · · "[box]"(扫描查找文字串 [box]) · · "*funny*"(扫描查找文字串 *funny*) · · "ld.so"(扫描查找文字串 ld.so) 元字符 使用正则表达式,可以利用元字符来执行比我们至今已研究过的示例复杂得多的搜索。这些元字符中的一个是 .(点),它与任何单个字符匹配: $ grep dev.hda /etc/fstab /dev/hda3 / reiserfs noatime,ro 1 1 /dev/hda1 /boot reiserfs noauto,noatime,notail 1 2 /dev/hda2 swap swap sw 0 0 #/dev/hda4 /mnt/extra reiserfs noatime,rw 1 1 在本示例中,文字文本 dev.hda 没有出现在 /etc/fstab 中的任何一行中。但是,grep 扫描这些行时没有查找文字 dev.hda 字符串,而是查找 dev.hda 模式。请记住 . 将与任何单个字符相匹配。正如您看到的,. 元字符在功能上等价于 glob 扩展中 ? 元字符的工作原理。 使用 [] 如果我们希望与比 . 更具体一点地来匹配字符,那么我们可以使用 和 (方括号)来指定要匹配的字符子集: $ grep dev.hda[12] /etc/fstab /dev/hda1 /boot reiserfs noauto,noatime,notail 1 2 /dev/hda2 swap swap sw 0 0 正如您看到的,这个特殊语法的作用与“glob”文件名扩展中的 [] 相同。同样,这是学习正则表达式的难点之一 ― 这个语法与“glob ”文件名扩展语法类似,但又不尽相同,它经常给学习正则表达式的人带来困惑。 使用 [^] 通过使 后面紧跟一个 ^,您可以使方括号中的意思相反。在本例中,方括号将与未列在方括号内的任意字符匹配。同样,请注意我们在正则表达式中使用 [^] ,而在 glob 中使用 [!] : $ grep dev.hda[^12] /etc/fstab /dev/hda3 / reiserfs noatime,ro 1 1 #/dev/hda4 /mnt/extra reiserfs noatime,rw 1 1 区别语法 注意下面一点很重要:方括号内部的语法根本不同于正则表达式其它部分中的语法。例如,如果在方括号内放置一个 . ,那么它允许方括号与文字 . 匹配,就象上面示例中的 1 和 2。比较起来,除非有 作为前缀,否则方括号外面的文字 . 被解释为一个元字符。通过输入如下命令,我们可以利用这一事实来打印 /etc/fstab 中包含文字串 dev.hda 的所有行的列表: $ grep dev[.]hda /etc/fstab 或者,我们也可以输入: $ grep "dev.hda" /etc/fstab 这两个正则表达式都不可能与您的 /etc/fstab 文件中的任何行相匹配。 “*”元字符 某些元字符本身不匹配任何字符,但却修改前一个字符的含义。一个这样的元字符是 * (星号),它用来与前一个字符的零次或者多次重复出现相匹配。这里是一些示例: · ab*c(与 abbbbc 匹配但不与 abqc 匹配) · · ab*c(与 abc 匹配但不与 abbqbbc 匹配) · · ab*c(与 ac 匹配但不与 cba 匹配) · · b[cq]*e(与 bqe 匹配但不与 eb 匹配) · · b[cq]*e(与 bccqqe 匹配但不与 bccc 匹配) · · b[cq]*e(与 bqqcce 匹配但不与 cqe 匹配) · · b[cq]*e(与 bbbeee 匹配) · · .*(与任何字符串匹配) · · foo.*(与以 foo · 开始的任何字符串相匹配) ac 行与正则表达式 ab*c 相匹配,因为星号也允许前面的表达式(b)出现零次。请注意解释 * 正则表达式元字符所用的方法与解释 * glob 字符的方法根本不同。 行的开始和结束 我们在这里要详细描述的最后几个元字符是 ^ 和 $ 元字符,它们用来分别与行的开始和结束相匹配。通过在正则表达式开始处使用一个 ^ ,您可以将您的模式“锚定”在行的开始。在下面的示例中,我们使用 ^# 正则表达式来与以 # 字符开始的任何行相匹配: $ grep ^# /etc/fstab # /etc/fstab: static file system information. # 完整行正则表达式 可以组合 ^ 和 $ 来与完整的行相匹配。例如,下面的正则表达式将与以 # 字符开始并以 . 字符结束的行相匹配,在其中间可以有任意多个其它字符: $ grep '^#.*.$' /etc/fstab # /etc/fstab: static file system information. 在上面的示例中,我们用单引号将我们的正则表达式括起来以阻止 shell 解释 $ 。在不使用单引号的情况下,grep 甚至没有机会查看 $,$ 就从我们的正则表达式上消失了。 三。FHS和查找文件 文件系统层次结构标准 Filesystem Hierarchy Standard 是指定 Linux 系统上目录布局的文档。FHS 被设计来提供一个通用布局以简化与分布无关的软件开发。FHS 指定下列目录(直接来自 FHS 规范): · /(根目录) · · /boot(引导装入程序的静态文件) · · /dev(设备文件) · · /etc(主机特定的系统配置) · · /lib(基本共享库和核心模块) · · /mnt(临时挂装文件系统的挂装点) · · /opt(附加的应用程序软件包) · · /sbin(基本系统二进制文件) · · /tmp(临时文件) · · /usr(辅助层次结构) · · /var(可变数据) 两个独立的 FHS 类别 FHS 的布局规范基于存在两个独立的文件类别:可共享与不可共享以及可变与静态这一思想。可共享数据能在主机之间被共享;不可共享数据特定于给定主机(例如配置文件)。可变数据可以被修改;静态数据不可以被修改(除了在系统安装和维护阶段)。 下面的表格概述了四种可能的组合,并列出了与那些类别相符的目录示例。这个表还是直接取自 FHS 规范: +---------+-----------------+-------------+ | | 可共享 | 不可共享 | +---------+-----------------+-------------+ |静态 | /usr | /etc | | | /opt | /boot | +---------+-----------------+-------------+ |可变 | /var/mail | /var/run | | | /var/spool/news | /var/lock | +---------+-----------------+-------------+ /usr 中的辅助层次结构 在 /usr 下,您会发现一个看上去与根文件系统非常相似的辅助层次结构。当机器打开并运行时,/usr 的存在并不重要,所以能在网络上共享它(“可共享”),或者从 CD-ROM 上挂装它(“静态”)。大多数 Linux 设置不利用 /usr 的共享,但是理解根目录中主层次结构和 /usr 中辅助层次结构之间的区别的用处是有价值的。 这就是我们要说的有关 Filesystem Hierarchy Standard 的所有内容。该文档本身非常具有可读性,所以您应该去看一下。我们承诺如果您读了它,那么您将对 Linux 文件系统理解得更多。 查找文件 Linux 系统通常包含数十万个文件。可能您非常精明能干,从未丢失它们中的任何一个,但是更可能的是,您偶尔在查找一个文件时需要帮助。Linux 上有几个不同的工具用于查找文件。下面的演示将向您介绍它们,并帮助您选择适合您的工作的工具。 PATH 当您在命令行上运行程序时,bash 实际上搜索目录列表来查找您所请求的程序。例如,当您输入 ls,bash 实质上不知道 ls 程序位于 /usr/bin。但是,bash 引用一个名为 PATH 的环境变量,它是一个用冒号分隔的目录列表。我们可以检查 PATH 的值: $ echo $PATH /usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/X11R6/bin 给定了 PATH 的值(您的可以不同),bash 将首先检查 /usr/local/bin,然后是 /use/bin 以搜索 ls 程序。ls 最有可能被保存在 /usr/bin 内,所以 bash 在那里停止。 修改 PATH 您可以通过在命令行上为 PATH 指派元素来扩充它: $ PATH=$PATH:~/bin $ echo $PATH /usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/X11R6/bin:/home/agriffis/bin 您也可以除去 PATH 上的元素,尽管这不是那么容易,因为您不能引用现有的 $PATH。最好的办法是简单输入您想要的新 PATH: $ PATH=/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:~/bin $ echo $PATH /usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:/home/agriffis/bin 关于“which”的一切 通过使用 which,您能查看 PATH 中是否有给定程序。例如,我们通过下面的命令发现 Linux 系统没有(普通的)sense: $ which sense which: no sense in (/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/X11R6/bin) 在本示例中,我们成功定位 ls: $ which ls /usr/bin/ls “which -a” 最后,您应该知道 -a 标志,它使 which 向您显示您的 PATH 中给定程序的所有实例: $ which -a ls /usr/bin/ls /bin/ls whereis 如果您不只对程序位置感兴趣,而且想要找到更多信息,那么可以尝试 whereis 程序: $ whereis ls ls: /bin/ls /usr/bin/ls /usr/share/man/man1/ls.1.gz 这里我们看到 ls 出现在两个常见二进制位置 /bin 和 /usr/bin 中。另外,我们被告知手册页定位在 /usr/share/man 。如果您要输入 man ls,那么这就是您将看到的手册页。 whereis 程序还具有搜索源代码、指定备用搜索路径和搜索不寻常项的能力。有关进一步信息,请参考 whereis 手册页。 find find 命令是您工具箱中的另一个工具。使用 find,您不会受限于程序;通过使用多种搜索标准,您能搜索您想要的任何文件。例如,要搜索 /usr/share/doc 目录下名为 README 的文件: $ find /usr/share/doc -name README /usr/share/doc/ion-20010523/README /usr/share/doc/bind-9.1.3-r6/dhcp-dynamic-dns-examples/README /usr/share/doc/sane-1.0.5/README find 和通配符 您可以在 -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/README.iproute2+tc.gz /usr/share/doc/iproute2-2.4.7/README.decnet.gz /usr/share/doc/iproute2-2.4.7/examples/diffserv/README.gz /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-1.2.2/README.i18n.gz /usr/share/doc/gimp-1.2.2/README.win32.gz /usr/share/doc/gimp-1.2.2/README.gz /usr/share/doc/gimp-1.2.2/README.perl.gz [578 additional lines snipped] 在 find 中忽略大小写 当然,您可能想要在搜索中忽略大小写: $ find /usr/share/doc -name '[Rr][Ee][Aa][Dd][Mm][Ee]*' 或者,更简单: $ find /usr/share/doc -iname readme* 正如您看到的,您能使用 -iname 来进行不区分大小写的搜索。 find 和正则表达式 如果您熟悉正则表达式,那么使用 -regex 选项将把输出限制成匹配某一模式的文件名。与 -iname 选项类似,它有一个相应的 -iregex 选项,该选项忽略模式中的大小写。例如: $ find /etc -iregex '.*xt.*' /etc/X11/xkb/types/extra /etc/X11/xkb/semantics/xtest /etc/X11/xkb/compat/xtest /etc/X11/app-defaults/XTerm /etc/X11/app-defaults/XTerm-color 请注意:不象许多程序,find 要求指定的正则表达式与整个路径匹配,而不只是该路径的一部分。为此,指定前导和尾随的 .* 是必要的;只使用 xt 是不够的。 find 和类型 -type 选项允许您查找某一类型的文件系统对象。可能的 -type 参数是 b (块设备)、c(字符设备)、d(目录)、p(命名管道)、f(常规文件)、l(符号链接)和 s(套接字)。例如,要在 /uer/bin 中搜索包含字符串 vim 的符号链接: $ find /usr/bin -name '*vim*' -type l /usr/bin/rvim /usr/bin/vimdiff /usr/bin/gvimdiff find 和 mtime -mtime 选项允许您根据最近一次的修改时间来选择文件。mtime 的参数以 24 小时为单位,当输入时带加号(表示“之后”)或者减号(表示“之前”)时,它最有用。例如,考虑如下情形: $ ls -l ? -rw------- 1 root root 0 Jan 7 18:00 a -rw------- 1 root root 0 Jan 6 18:00 b -rw------- 1 root root 0 Jan 5 18:00 c -rw------- 1 root root 0 Jan 4 18:00 d $ date Mon Jan 7 18:14:52 EST 2002 您可以搜索在过去的 24 小时之内创建的文件: $ find . -name ? -mtime -1 ./a 或者您可以搜索在当前 24 小时周期之前创建的文件: $ find . -name ? -mtime +0 ./b ./c ./d -daystart 选项 如果您另外指定了 -daystart 选项,那么时间周期以今天的开始时为开始,而不是 24 小时之前。例如,这是昨天和前天创建的一组文件: $ find . -name ? -daystart -mtime +0 -mtime -3 ./b ./c $ ls -l b c -rw------- 1 root root 0 Jan 6 18:00 b -rw------- 1 root root 0 Jan 5 18:00 c -size 选项 -size 选项允许您根据文件的大小来查找它们。缺省情况下,-size 的参数是 512 个字节的块,但是添加后缀可以使操作更简便。可用的后缀是 b(512 字节的块)、c(字节)、k(千字节)和 w(2 字节的字)。另外,您可以在前放置加号(“大于”)或者减号(“小于”)。 例如,要在 /usr/bin 中查找小于 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 -type f -size -50c -exec ls -l '{}' ';' -rwxr-xr-x 1 root root 27 Oct 28 07:13 /usr/bin/krdb -rwxr-xr-x 1 root root 35 Nov 28 18:26 /usr/bin/run-nautilus -rwxr-xr-x 1 root root 25 Oct 21 17:51 /usr/bin/sgmlwhich -rwxr-xr-x 1 root root 26 Sep 26 08:00 /usr/bin/muttbug 正如您看到的,find 是一个功能非常强大的命令。在 UNIX 和 Linux 开发的几年中,它获得了发展。find 中还有许多其它有用的选项。您可以在 find 手册页中学习它们。 定位 我们已经学习了 which、whereis 和 find。您可能已经注意到执行 find 要花一些时间,因为它需要读取它正在搜索的每个目录。事实表明 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 来生成搜索数据库: $ locate bin/ls locate: /var/spool/locate/locatedb: No such file or directory $ su Password: # updatedb 运行 updatedb 命令可能要花很长时间。如果您硬盘的噪音很大,那么将听到许多吵闹声,因为这正在为整个文件系统建立索引。:) slocate 在 Linux 的许多分发版(distribution)中,locate 命令已经被 slocate 所替代。通常有一个至“locate”的符号链接,这样您不需要记住拥有的是哪一个。slocate 代表“安全定位(secure locate)”。它将许可权信息存储在数据库中,这样普通用户不能以别的方式窥探他们不能读取的目录。slocate 的用法信息在本质上与 locate 的信息相同,尽管输出可能不同(取决于正在运行命令的用户)。 四。进程控制 启动 xeyes 为了学习进程控制,我们首先需要启动一个进程: $ xeyes -center red 您将注意到弹出一个 xeyes 窗口,红色眼球跟随您的鼠标在屏幕上移动。您还可能注意到在终端上没有新的提示符。 停止进程 为了恢复提示符,您可以输入 Control-C(通常写为 Ctrl-C 或 ^C): ^C $ 您获得了一个新的 bash 提示符,但 xeyes 窗口消失了。事实上,整个进程已被杀死。如果不通过 Control-C 来杀死它,我们还可以使用 Control-Z 来使它只是停止: $ xeyes -center red ^Z [1]+ Stopped xeyes -center red $ 这次您获得了一个新的 bash 提示符,并且 xeyes 窗口依然保留着。但是,如果您试图稍微移动这个窗口,那么将注意到眼球在某一位置被冻结了。如果 xeyes 窗口被另一个窗口遮盖,然后又出现,那么您将看到它根本不会重绘眼睛。进程没有做任何操作。事实上,它是“被停止了”。 fg 和 bg 为了使进程“重新活动”并再次运行,我们能用 bash 内置的 fg 使它在前台运行: $ fg xeyes和xeyes ^Z [1]+ Stopped xeyes -center red $ 现在用 bash 内置的 bg 来继续在后台运行它: $ bg [1]+ xeyes -center red & $ 好极了!现在 xeyes 进程在后台运行,并且出现了新的正在工作的 bash 提示符。 使用“&” 如果我们一开始想要在后台启动 xeyes(而不是使用 Control-Z 和 bg),那么我们只须在 xeyes 命令行的最后添加一个“&”: $ xeyes -center blue & [2] 16224 多个后台进程 现在红色和蓝色 xeyes 都在后台运行。我们可以用 bash 内置的 jobs 列出这些作业: $ jobs -l [1]- 16217 Running xeyes -center red & [2]+ 16224 Running xeyes -center blue & 左列中的号码是当作业被启动时,bash 指定给它们的作业号码。作业 2 有一个 +(加号),这表示它是“当前作业”,这意味着输入 fg 将把它带到前台。您也可以通过指定作业号码将指定的作业带到前台,换句话说,fg 1 使红色 xeyes 成为前台任务。下一列是包含在列表中的进程标识或者是 pid,由于 jobs 的 -l 选项可得到该列表。最后,这两个作业当前都是“Running”,并且它们的命令行都列在右边。 介绍信号 为了杀死、停止或者继续运行进程,Linux 使用了一种称为“信号”的特殊通讯方式。通过将某一信号发送给进程,您可以使它中断、停止或执行其它操作。这就是当您输入 Control-C、Control-Z 或使用 bg 或 fg 内置命令时真正执行的操作 ― 您正使用 bash 将一个特殊信号发送给进程。还可以通过使用 kill 命令并在命令行上指定 pid(进程标识)来发送这些信号: $ kill -s SIGSTOP 16224 $ jobs -l [1]- 16217 Running xeyes -center red & [2]+ 16224 Stopped (signal) xeyes -center blue 正如您看到的,kill 不一定“杀死”进程,尽管它能这样做。通过使用“-s”选项,kill 能将任何信号发送给进程。当分别将 SIGINT、SIGSTOP 或 SIGCONT 信号发送给进程时,Linux 就杀死、停止或继续运行这些进程。您还可以将其它信号发送给进程;这些信号中的一些可能是用与应用程序相关的方法来解释的。通过查看信号的手册页并搜索 SIGNALS 一节,您能学习某一特定进程能识别哪些信号。 SIGTERM 和 SIGINT 如果您想杀死进程,那么有几种选择。缺省情况下,kill 发送 SIGTERM,它与 Control-C 著名的 SIGINT 不同,但是通常具有相同的结果: $ kill
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服