Linux中的进程管理.ppt

上传人:小飞机 文档编号:6511162 上传时间:2023-11-08 格式:PPT 页数:22 大小:210.49KB
返回 下载 相关 举报
Linux中的进程管理.ppt_第1页
第1页 / 共22页
Linux中的进程管理.ppt_第2页
第2页 / 共22页
Linux中的进程管理.ppt_第3页
第3页 / 共22页
Linux中的进程管理.ppt_第4页
第4页 / 共22页
Linux中的进程管理.ppt_第5页
第5页 / 共22页
点击查看更多>>
资源描述

《Linux中的进程管理.ppt》由会员分享,可在线阅读,更多相关《Linux中的进程管理.ppt(22页珍藏版)》请在三一办公上搜索。

1、第13章 Linux中的进程管理,Linux是一个多用户、多任务的操作系统。在这样的系统中,各种计算机资源(如文件、内存、CPU等)的分配和管理都以进程为单位。为了协调多个进程对这些共享资源的访问,操作系统要跟踪所有进程的活动,以及它们对系统资源的使用情况,从而实施对进程和资源的动态管理。本章将对Linux的进程管理做详细的介绍。,13.1 Linux进程概述,程序是存储在磁盘上包含可执行机器指令和数据的静态实体,而进程是在操作系统中执行的特定任务的动态实体。Linux系统中每个运行中的程序至少由一个进程组成。每个进程与其他进程都是彼此独立的,都有自己独立的权限与职责。一个用户的应用程序不会干

2、扰到其他用户的程序或者操作系统本身。Linux操作系统包括如下三种不同类型的进程,每种进程都有其自己的特点和属性:交互进程:由一个shell启动的进程。交互进程既可以在前台运行,也可以在后台运行。批处理进程:这种进程和终端没有联系,是一个进程序列。守护进程:Linux系统启动时启动的进程,并在后台运行。上述三种进程各有各的作用,使用场合也有所不同。,13.2 Linux进程原理,为了更好地对Linux系统的进程进行高效、有针对性地管理,需要对进程的基本原理有所了解,本节将介绍Linux系统中进程的状态以及基本的工作模式。,13.2.1 Linux进程的状态,通常在操作系统中,进程至少要有三种基

3、本状态,分别为:运行态、就绪态和封锁态(或阻塞态)。在Linux系统中,进程主要有以下几个状态:运行态(TASK_RUNNING):此时,进程正在运行(即系统的当前进程)或者准备运行(即就绪态)等待态:此时进程在等待一个事件的发生或某种系统资源。Linux系统分为两种等待进程:可中断的(TASK_INTERRUPTIBLE)和不可中断的(TASK_UNINTERRUPTIBLE)。可中断的等待进程可以被某一信号(Signal)中断;而不可中断的等待进程不受信号的打扰,将一直等待硬件状态的改变。停止态(TASK_STOPPED):进程被停止,通常是通过接收一个信号。正在被调试的进程可能处于停止状

4、态。僵死态(TASK_ZOMBIE):由于某些原因被终止的进程,但是该进程的控制结构task_struct仍然保留着。,13.2.2 Linux进程工作模式,在Linux系统中,进程的执行模式划分为用户模式和内核模式。如果当前运行的是用户程序、应用程序或者内核之外的系统程序,那么对应进程就在用户模式下运行;如果在用户程序执行过程中出现系统调用或者发生中断事件,就要运行操作系统(即核心)程序,进程模式就变成内核模式。在内核模式下运行的进程可以执行机器的特权指令;而且,此时该进程的运行不受用户的干预,即使是root用户也不能干预内核模式下进程的运行。按照进程的功能和运行的程序分类,进程可划分为两大

5、类:一类是系统进程,只运行在内核模式,执行操作系统代码,完成一些管理性的工作,例如内存分配和进程切换;另外一类是用户进程,通常在用户模式中执行,并通过系统调用或在出现中断、异常时进入内核模式。用户进程既可以在用户模式下运行,也可以在内核模式下运行。,13.3 Linux守护进程介绍,如上所述,守护进程是Linux系统三大进程之一,而且是系统中比较重要的一种,该进程可以完成很多工作,包括系统管理以及网络服务等,下面就对这些守护进程进行介绍。,13.3.1 守护进程简介,守护进程(Daemon,也称为精灵进程)是指在后台运行而又没有终端或登录shell与之结合在一起的进程。守护进程经常在程序启动时

6、开始运行,在系统结束时停止。这些进程没有控制终端,所以称为在后台运行。Linux系统有许多标准的守护进程,其中一些周期性地运行来完成特定的任务(例如crond),而其余的则连续地运行,等待处理系统中发生的某些特定的事件(例如xinetd和lpd)。启动守护进程有如下几种方法:在引导系统时启动:此种情况下的守护进程通常在系统启动script的执行期间被启动,这些script一般存放在/etc/rc.d中。人工手动从shell提示符启动:任何具有相应的执行权限的用户都可以使用这种方法启动守护进程。使用crond守护进程启动:这个守护进程查询存放在/var/spool/cron/crontabs目录

7、中的一组文件,这些文件规定了需要周期性执行的任务。执行at命令启动:在规定的日期和执行一个程序。,13.3.2 重要守护进程介绍,13.4 启动Linux进程,在系统中,键入需要运行的程序的程序名,执行一个程序,其实也就是启动了一个进程。在Linux系统中每个进程都具有一个进程号,用于系统识别和调度进程。启动一个进程有两个主要途径:手工启动和调度启动。与前者不同的是:后者是事先进行设置,根据用户要求自行启动。,13.4.1 手工启动,1前台启动这是手工启动一个进程的最常用的方式。一般地,用户键入一个命令“ls l”,这就已经启动了一个进程,而且是一个前台的进程。这时候系统其实已经处于一个多进程

8、状态。在通常情况下,用户在启动进程时,系统中已经存在了许多运行在后台的、系统启动时就已经自动启动的进程。2后台启动直接从后台手工启动一个进程用得比较少一些,除非是该进程甚为耗时,且用户也不急着要看到处理结果的时候。假设用户要启动一个要长时间运行的格式化文本文件的进程,为了不使整个shell在格式化过程中都处于“瘫痪”状态(长时间看不到任何运行结果),因此这个时候选择从后台启动进程是明智的选择,下面是一个后台启动进程的例子:#./calculate&/启动一个后台计算进程1 2116/分配给的该后台进程的ID号,13.4.2 在指定时刻执行命令序列at命令,有时候须要对系统进行一些比较费时而且占

9、用资源的维护工作,这些工作适合在深夜进行,这时候用户就可以事先进行调度安排,指定任务运行的时间或者场合,到时候系统会自动完成这一切工作。用户使用at命令在指定时刻执行指定的命令序列at命令可以只指定时间,也可以时间和日期一起指定。需要注意的是,指定时间有个系统判别问题。比如说:用户现在指定了一个执行时间:凌晨3:20,而发出at命令的时间是头天晚上的20:00,那么这将会产生两种执行情况:如果用户在3:20以前仍然在工作,那么该命令将在这个时候完成;如果用户3:20以前就退出了工作状态,那么该命令将在第二天凌晨才得到执行。,13.4.3 在资源比较空闲的时候执行命令batch命令,batch命

10、令用低优先级运行作业,该命令几乎和at命令的功能完全相同,惟一的区别在于:at命令是在指定时间,很精确的时刻执行指定命令;而batch却是在系统负载较低,资源比较空闲的时候执行命令,这个主要是由系统来决定执行的,因而用户的干预权力很小。该命令适合于执行占用资源较多的命令。batch命令的语法格式也和at命令十分相似,如下所示:batch-V-q queue-f file-mv 时间具体的参数解释与at命令相似,这里不再赘述,请参看at命令。一般地说,不用为batch命令指定时间参数,因为batch本身的特点就是由系统决定执行任务的时间,如果用户再指定一个时间,就失去了该命令本来的意义。下面给出

11、使用该命令的例子:/使用batch命令执行在根目录下查询文本文件的功能#batchat find/-name*.txtat job 14 at 2005-06-11 22:59注意:batch和at命令都将自动转入后台,所以启动的时候并不需要手工添加&符号。,13.4.4 不断重复执行某些命令cron命令,前面介绍的两条命令都会在一定时间内完成一定任务,但是注意它们都只能执行一次。,当系统在指定时间完成任务后,一切就结束了。但是在很多时候需要不断重复一些命令,比如:某公司每周一自动向员工报告头一周公司的活动情况,这时候就需要使用cron命令来完成任务了。实际上,cron命令是不应该手工启动的。

12、cron命令在系统启动时就由一个shell脚本自动启动,进入后台(所以不需要使用“&”符号)。一般的用户没有运行该命令的权限,虽然超级用户可以手工启动cron,不过还是建议将其放到shell脚本中由系统自行启动。首先cron命令会搜索/var/spool/cron目录,寻找以/etc/passwd文件中的用户名命名的crontab文件,被找到的这种文件将载入内存。cron启动以后,将首先检查是否有用户设置了crontab文件,如果没有就转入“休眠”状态,释放系统资源。所以该后台进程占用资源极少。它每分钟“醒”过来一次,查看当前是否有需要运行的命令。命令执行结束后,任何输出都将作为邮件发送给cr

13、ontab的所有者,或者是/etc/crontab文件中MAILTO环境变量中指定的用户。,13.4.5 操作cron后台进程的表格crontab命令,crontab命令用于安装、删除或者列出用于驱动cron后台进程的表格。用户把要执行的命令序列放到crontab文件中以获得执行。每个用户都可以有自己的crontab文件。在/var/spool/cron下的crontab文件不可以直接创建或者直接修改。crontab文件是通过crontab命令得到的。该文件中每行都包括六个域,其中前五个域是指定命令被执行的时间,最后一个域是要被执行的命令。每个域之间使用空格或者制表符分隔。格式如下(此处用空格

14、符分隔):minute hour day-of-month month-of-year day-of-week commands第一项是分钟,第二项是小时,第三项是一个月的第几天,第四项是一年的第几个月,第五项是一周的星期几,第六项是要执行的命令。这些项都不能为空,必须填入。如果用户不需要指定其中的几项,那么可以使用“*”代替。因为“*”是统配符,可以代替任何字符,所以就可以认为是任何时间,也就是该项被忽略了。在表13.2中给出了每项的合法范围。,13.5 进程的挂起及恢复,作业控制允许将进程挂起并可以在需要时恢复进程的运行,被挂起的作业恢复后将从中止处开始继续运行。只要在键盘上使用组合键Ct

15、rl+Z,即可挂起当前的前台作业。#cat text.file1+stopped cat text.file#jobs1+stopped cat text.file在键盘上按组合键Ctrl+Z后,将挂起当前执行的命令cat。使用jobs命令可以显示shell的作业清单,包括具体的作业、作业号以及作业当前所处的状态。恢复进程执行时,有两种选择:用fg命令将挂起的作业放回到前台执行;用bg命令将挂起的作业放到后台执行。假设用户正在执行消耗资源较多的calculate程序,现在希望查看该程序所消耗的CPU资源以及内存的情况。那么就要首先使用组合键Ctrl+Z将calculate进程挂起,然后使用bg

16、命令将其在后台启动,这样就得到了前台的操作控制权,接着键入“psx”查看进程情况。查看完毕后,使用fg命令将该进程带回前台运行即可。其操作命令步骤如下:#./calculate/执行程序Ctrl+Z/使用组合键挂起进程1+Stopped./calculate/表示进程已经挂起#bg./calculate/将该进程转为后台执行1+./calculate&/表示进程转为后台执行成功#fg./calculate/将该进程转为前台执行./calculate/程序恢复前台运行在默认情况下,fg和bg命令对最近停止的作业进行操作。如果希望恢复其他作业的运行,可以在命令中指定要恢复作业的作业号来恢复该作业。

17、例如:#fg 1,13.6 Linux进程管理,下面将要详细介绍几个进程管理的命令。使用这些命令,用户可以实时、全面、准确地了解系统中运行进程的相关信息,从而对这些进程进行相应的挂起、中止等操作。13.6.1 使用ps命令查看进程状态ps命令是查看进程状态的最常用的命令,可以提供关于进程的许多信息。根据显示的信息可以确定哪个进程正在运行、哪个进程被挂起、进程已运行了多久、进程正在使用的资源、进程的相对优先级,以及进程的标识号(PID)等信息。ps命令的一般格式是:ps 选项。以下是ps命令常用的选项及其含义:-a:显示系统中与tty相关的(除会话组长之外)所有进程的信息。-e:显示所有进程的信

18、息。-f:显示进程的所有信息。-l:以长格式显示进程信息。r:只显示正在运行的进程。u:显示面向用户的格式(包括用户名、CPU及内存使用情况等信息)。x:显示所有非控制终端上的进程信息。-pid:显示由进程ID指定的进程的信息。-tty:显示指定终端上的进程的信息。,13.6.2 使用top命令查看进程状态,top命令和ps命令的基本作用是相同的,显示系统当前的进程及其状态,但是top是一个动态显示过程,可以通过用户按键来不断刷新当前状态。如果在前台执行,该命令将独占前台,直到用户终止该程序为止。top命令的一般格式是:top bciqsSd n。其命令参数的含义如下:b:使用批处理模式。c:

19、列出程序时,显示每个程序的完整指令,包括指令名称、路径和参数等相关信息。i:执行top指令时,忽略闲置或是已成为Zombie的程序。q:持续监控程序执行的状况。s:使用保密模式,消除互动模式下的潜在危机。S:使用累计模式。d:设置top监控程序执行状况的间隔时间,单位以秒计算。n:设置监控信息的更新次数。,13.6.3 使用kill命令终止进程,通常终止一个前台进程可以使用Ctrl+C组合键。但是,对于一个后台进程就须用kill命令来终止。kill命令是通过向进程发送指定的信号来结束相应进程。在默认情况下,采用编号为15的TERM信号。TERM信号将终止所有不能捕获该信号的进程。对于那些可以捕

20、获该信号的进程就要用编号为9的KILL信号,强行杀掉该进程。kill命令的一般格式是:kill-s 信号|-p 进程号或者kill-l 信号。其中选项各选项的含义如下:-s:指定要发送的信号,既可以是信号名(如kill),也可以是对应信号的号码(如9)。-p:指定kill命令只是显示进程的pid(进程标识号),并不真正发出结束信号。-l:显示信号名称列表,这也可以在/usr/include/linux/signal.h文件中找到。,13.6.4 使用sleep命令暂停进程,sleep命令的功能是使进程暂停执行一段时间。其一般格式是:sleep 时间值。其中,“时间值”参数以秒为单位,即使进程暂

21、停由时间值所指定的秒数。此命令大多用于shell程序设计中,是两条命令执行之间停顿指定的时间。最基本的用法是直接在shell下,使用该命令,使得shell的工作状态暂时睡眠。下面的命令使shell进程先暂停100秒,然后查看/etc/passwd文件的属性:#sleep 100;ls l/etc/passwd,13.7 进程文件系统PROC,顾名思义,PROC文件系统是一个虚拟的文件系统,通过文件系统的接口实现,用于输出系统的运行状态。它以文件系统的形式,为操作系统本身和应用进程之间的通信提供了一个界面,使应用程序能够安全、方便地获得系统当前的运行状况和内核的内部数据信息,并可以修改某些系统的配置信息。另外,由于PROC以文件系统的接口实现,因此用户可以像访问普通文件一样对其进行访问,但它只存在于内存之中,并不存在于真正的物理磁盘当中。所以,当系统重启和电源关闭的时候,该系统中的数据和信息将全部消失。,13.8 本章小结,本章主要介绍了Linux中近程管理的相关问题,首先简要介绍了Linux进程原理,然后介绍了守护进程,并详细介绍了启动、挂起进程的方法、命令以及使用一些常用的命令来进行进程管理,最后介绍了一个十分有用的进程文件系统PROC。,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号