Ub操作基础系统及教程 4_第1页
Ub操作基础系统及教程 4_第2页
Ub操作基础系统及教程 4_第3页
Ub操作基础系统及教程 4_第4页
Ub操作基础系统及教程 4_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第6章

进程管理

目前运维人员最开始要做的工作就是进程管理,也就是监视系统后台的一些运行状况。大概很多读者最熟悉的就是Windows系统的“任务管理器”,这里也是显示后台运行情况,和Linux下的进程类似。本章会介绍进程的概念,然后在Shell中完成一些进程的操作。本章将介绍:● 进程● 进程的属性● 进程监控● 调整进程优先级6.1进程概述

在讲解进程之前,我们必须了解进程的概念,本节向读者介绍进程的定义和进程的分类,读者可以对比一下和Windows中进程的区别。6.1.1什么是进程

进程是操作系统的一种抽象概念,用来表示正在运行的程序。其实,读者可以简单地把进程理解为正在运行的程序。在Linux系统中,触发任何一个事件,系统都会将它定义成为一个进程,并且给它一个ID,称为PID。Linux是一种多用户、多进程的操作系统。在Linux的内核中,维护着一张表。这张表记录了当前系统中运行的所有进程的各种信息。Linux内核会自动完成对进程的控制和调度。当然,这是所有操作系统都必须拥有的基本功能。内核中一些重要的进程信息如下。进程的内存地址。进程当前的状态。进程正在使用的资源。进程的优先级(谦让度)。进程的属主。Linux提供了让用户可以对进程进行监视和控制的工具。在这方面,Linux对系统进程和用户进程一视同仁,使用户能够用一套工具控制这两种进程。6.1.2进程分类

终止一个失控的应用程序或许是用户最常使用的“进程管理”任务,尽管没有人愿意经常执行这样的“管理”。为了模拟这个情况,本节手动构建了一个程序。这个“恶作剧”程序在Shell中不停的创建目录和文件。如果不赶快终止,那么它将在系统中创建一棵很深的目录树。6.2进程的属性

一个进程包含有多个属性参数。这些参数决定了进程被处理的先后顺序、能够访问的资源等。这些信息对于系统管理员和程序员都非常重要。下面讨论几个常用的参数,其中的一些参数,读者可能已经有所接触了。6.2.1进程标识PID

系统为每个用户都分配了用于标识其身份的ID号(UID)。同样的,进程也有这样一个ID号,被称作PID。用ID确定进程的方法是非常有好处的—对于计算机而言,认识数字永远比认识一串字符方便得多,Linux没有必要去理解那些对人类非常“有意义”的进程名。Linux不仅自己使用PID来确定进程,还要求用户在管理进程时也提供相应的PID号。几乎所有的进程管理工具都接受PID号,而不是进程名。6.2.2父进程标识PPID

在Linux中,所有的进程都必须由另一个进程创建—除了在系统引导时,由内核自主创建并安装的那几个进程。当一个进程被创建时,创建它的那个进程被称作父进程,而这个进程则相应地被称作子进程。子进程使用PPID指出谁是其“父亲”,很容易理解,PPID就等于其父进程的PID。

在刚才的叙述中,多次用到了“创建”这个词,这是出于表述和理解上的方便。事实上在Linux中,进程是不能被“凭空”创建的。也就是说,Linux并没有提供一种系统调用让应用程序“创建”一个进程。应用程序只能通过克隆自己来产生新进程。因此,子进程应该是其父进程的克隆体。6.2.3群组标识GID

类似的,进程的GID是其创建者所属组的ID号。对应于EUID,进程同样拥有一个EGID号,可以通过setgid程序来设置。坦率地讲,进程的GID号确实没有什么用处。一个进程可以同时属于多个组,如果要考虑权限的话,那么UID就足够了。相比较而言,EGID在确定访问权限方面还发挥了一定的作用。当然,进程的GID号也不是一无是处。当进程需要创建一个新文件的时候,这个文件将采用该进程的GID。6.2.4优先级

顾名思义,进程的优先级决定了其受到CPU“优待”的程度。优先级高的进程能够更早地被处理,并获得更多的处理器时间。Linux内核会综合考虑一个进程的各种因素来决定其优先级。这些因素包括进程已经消耗的CPU时间、进程已经等待的时间等。在绝大多数情况下,决定进程何时被处理是内核的事情,不需要用户插手。

用户可以通过设置进程的“谦让度”来影响内核的想法。“谦让度”和“优先级”刚好是一对相反的概念,高“谦让度”意味着低“优先级”,反之亦然。需要注意的是,进程管理工具让用户设置的总是“谦让度”,而不是“优先级”。如果希望让一个进程更早地被处理,那么应该把它的谦让度设置得低一些,使其变得不那么“谦让”。6.3进程监控

在了解了进程的属性和分类之后,我们就要能够监视和控制进程,这样才能运维系统。本节主要介绍监控进程的方法。6.3.1静态监控:ps

ps是最常用的监视进程的命令。这个命令给出了有关进程的所有有用信息。ps命令有多种不同的使用方法,这常常给初学者带来困惑。在各种Linux论坛上,询问ps命令语法的帖子屡见不鲜。之所以会出现这样的情况,只能归咎于Unix“悠久”的历史和庞杂的派系。在不同的Unix变体上,ps命令的语法各不相同。Linux为此采取了一个折中的处理方式,即融合各种不同的风格,目的只是兼顾那些已经习惯了其他系统上ps命令的用户。6.3.2动态监控:top

ps命令可以一次性给出当前系统中进程信息的快照,但这样的信息往往缺乏时效性。当管理员需要实时监视进程运行情况时,就必须不停地执行ps命令—这显然是缺乏效率的。为此,Linux提供了top命令用于即时跟踪当前系统中进程的情况。6.4向进程发送信号:kill

看起来,kill命令总是用来“杀死”一个进程。但事实上,这个名字或多或少带有一定的误导性。从本质上讲,kill命令只是用来向进程发送一个信号,至于这个信号是什么,则是由用户指定的。kill命令的标准语法如下:

kill[-signal]pid6.5调整进程优先级:nice和renice

nice命令可以在启动程序时设置其谦让度。高谦让度意味着低优先级,因为程序会表现得很“谦让”;反过来,低谦让度(特别是那些谦让度为负)的程序能够占用更多的CPU时间,拥有更高的优先级。谦让度的值应该在–20~+19之间浮动。nice命令通过接受一个-n参数增加程序的谦让度值。下面以不同的谦让度启动bc程序,并使用pslax命令观察其谦让度(NI)的值(注意这里pslax命令的输出只选取了有用的行)。6.6读懂/PROC文件系统

/PROC是一个非常特殊的文件系统,或者说,它根本不是什么文件系统。Linux内核提供了一种在运行时访问内核内部数据结构、改变内核设置的机制,这通过/PROC完成。/PROC是一个伪文件系统,它只存在于内存当中,而不占用外存空间。它以文件系统的方式为访问系统内核数据的操作提供接口。用户和应用程序可以通过/PROC得到系统的信息,并可以改变内核的某些参数。

由于系统的信息是动态改变的(如进程),所以用户或应用程序读取/PROC文件时,/PROC文件系统是动态地从系统内核读出所需信息并提交的。下面列出的这些文件或子文件夹,并不是都是在系统中存在,这取决于内核配置和装载的模块。另外,在/PROC下还有三个很重要的目录:net、scsi和sys。sys目录是只读的,可以通过“sysctl”命令来访问或修改内核的参数,而net和scsi则依赖于内核配置。使用“sysctl”命令修改的参数,重新启动系统后将失效。如果想要配置永久生效,可以修改/etc/sysctl.conf文件。另外,如果系统不

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论