Linux中的进程管理

上传人:tia****g98 文档编号:246128665 上传时间:2024-10-12 格式:PPT 页数:22 大小:210.49KB
返回 下载 相关 举报
Linux中的进程管理_第1页
第1页 / 共22页
Linux中的进程管理_第2页
第2页 / 共22页
Linux中的进程管理_第3页
第3页 / 共22页
点击查看更多>>
资源描述
,Click to edit Master title style,Click to edit Master text styles,第,13,章,Linux,中的进程管理,Linux是一个多用户、多任务的操作系统。在这样的系统中,各种计算机资源(如文件、内存、CPU等)的分配和管理都以进程为单位。为了协调多个进程对这些共享资源的访问,操作系统要跟踪所有进程的活动,以及它们对系统资源的使用情况,从而实施对进程和资源的动态管理。本章将对Linux的进程管理做详细的介绍。,13.1 Linux进程概述,程序是存储在磁盘上包含可执行机器指令和数据的静态实体,而进程是在操作系统中执行的特定任务的动态实体。Linux系统中每个运行中的程序至少由一个进程组成。每个进程与其他进程都是彼此独立的,都有自己独立的权限与职责。一个用户的应用程序不会干扰到其他用户的程序或者操作系统本身。,Linux操作系统包括如下三种不同类型的进程,每种进程都有其自己的特点和属性:,交互进程:由一个shell启动的进程。交互进程既可以在前台运行,也可以在后台运行。,批处理进程:这种进程和终端没有联系,是一个进程序列。,守护进程:Linux系统启动时启动的进程,并在后台运行。,上述三种进程各有各的作用,使用场合也有所不同。,13.2 Linux进程原理,为了更好地对Linux系统的进程进行高效、有针对性地管理,需要对进程的基本原理有所了解,本节将介绍Linux系统中进程的状态以及基本的工作模式。,13.2.1 Linux进程的状态,通常在操作系统中,进程至少要有三种基本状态,分别为:运行态、就绪态和封锁态(或阻塞态)。,在Linux系统中,进程主要有以下几个状态:,运行态(TASK_RUNNING):此时,进程正在运行(即系统的当前进程)或者准备运行(即就绪态),等待态:此时进程在等待一个事件的发生或某种系统资源。Linux系统分为两种等待进程:可中断的(TASK_INTERRUPTIBLE)和不可中断的(TASK_UNINTERRUPTIBLE)。可中断的等待进程可以被某一信号(Signal)中断;而不可中断的等待进程不受信号的打扰,将一直等待硬件状态的改变。,停止态(TASK_STOPPED):进程被停止,通常是通过接收一个信号。正在被调试的进程可能处于停止状态。,僵死态(TASK_ZOMBIE):由于某些原因被终止的进程,但是该进程的控制结构task_struct仍然保留着。,13.2.2 Linux进程工作模式,在Linux系统中,进程的执行模式划分为用户模式和内核模式。如果当前运行的是用户程序、应用程序或者内核之外的系统程序,那么对应进程就在用户模式下运行;如果在用户程序执行过程中出现系统调用或者发生中断事件,就要运行操作系统(即核心)程序,进程模式就变成内核模式。在内核模式下运行的进程可以执行机器的特权指令;而且,此时该进程的运行不受用户的干预,即使是root用户也不能干预内核模式下进程的运行。,按照进程的功能和运行的程序分类,进程可划分为两大类:一类是系统进程,只运行在内核模式,执行操作系统代码,完成一些管理性的工作,例如内存分配和进程切换;另外一类是用户进程,通常在用户模式中执行,并通过系统调用或在出现中断、异常时进入内核模式。用户进程既可以在用户模式下运行,也可以在内核模式下运行。,13.3 Linux守护进程介绍,如上所述,守护进程是Linux系统三大进程之一,而且是系统中比较重要的一种,该进程可以完成很多工作,包括系统管理以及网络服务等,下面就对这些守护进程进行介绍。,13.3.1 守护进程简介,守护进程(Daemon,也称为精灵进程)是指在后台运行而又没有终端或登录shell与之结合在一起的进程。守护进程经常在程序启动时开始运行,在系统结束时停止。这些进程没有控制终端,所以称为在后台运行。Linux系统有许多标准的守护进程,其中一些周期性地运行来完成特定的任务(例如crond),而其余的则连续地运行,等待处理系统中发生的某些特定的事件(例如xinetd和lpd)。启动守护进程有如下几种方法:,在引导系统时启动:此种情况下的守护进程通常在系统启动script的执行期间被启动,这些script一般存放在/etc/rc.d中。,人工手动从shell提示符启动:任何具有相应的执行权限的用户都可以使用这种方法启动守护进程。,使用crond守护进程启动:这个守护进程查询存放在/var/spool/cron/crontabs目录中的一组文件,这些文件规定了需要周期性执行的任务。,执行at命令启动:在规定的日期和执行一个程序。,13.3.2 重要守护进程介绍,守护进程,功能说明,amd,自动安装NFS(网络文件系统),apmd,高级电源管理,httpd,Web服务器,xinetd,支持多种网络服务的核心守候程序,arpwatch,记录日志并构建一个在LAN接口上看到的以太网地址和IP地址对数据库,autofs,自动安装管理进程automount,与NFS相关,依赖于NIS,bootparamd,引导参数服务器,为LAN上的无盘工作站提供引导所需的相关信息,crond,Linux下的计划任务,dhcpd,启动一个DHCP(动态IP地址分配)服务器,gated,网关路由守候进程,使用动态的OSPF路由选择协议,innd,Usenet新闻服务器,linuxconf,允许使用本地WEB服务器作为用户接口来配置机器,lpd,打印服务器,named,DNS服务器,netfs,安装NFS、Samba和NetWare网络文件系统,network,激活已配置网络接口的脚本程序,nfsd,NFS服务器,portmap,RPC portmap管理器,管理基于RPC服务的连接,postgresql,一种SQL数据库服务器,routed,路由守候进程,使用动态RIP路由选择协议,sendmail,邮件服务器sendmail,smb,Samba文件共享/打印服务,snmpd,本地简单网络管理守候进程,squid,激活代理服务器squid,syslog,一个让系统引导时起动syslog和klogd系统日志守候进程的脚本,xfs,X Window字型服务器,为本地和远程X服务器提供字型集,xntpd,网络时间服务器,identd,认证服务,在提供用户信息方面与finger类似,13.4 启动Linux进程,在系统中,键入需要运行的程序的程序名,执行一个程序,其实也就是启动了一个进程。在Linux系统中每个进程都具有一个进程号,用于系统识别和调度进程。启动一个进程有两个主要途径:手工启动和调度启动。与前者不同的是:后者是事先进行设置,根据用户要求自行启动。,13.4.1 手工启动,1前台启动,这是手工启动一个进程的最常用的方式。一般地,用户键入一个命令“ls l”,这就已经启动了一个进程,而且是一个前台的进程。这时候系统其实已经处于一个多进程状态。在通常情况下,用户在启动进程时,系统中已经存在了许多运行在后台的、系统启动时就已经自动启动的进程。,2后台启动,直接从后台手工启动一个进程用得比较少一些,除非是该进程甚为耗时,且用户也不急着要看到处理结果的时候。假设用户要启动一个要长时间运行的格式化文本文件的进程,为了不使整个shell在格式化过程中都处于“瘫痪”状态(长时间看不到任何运行结果),因此这个时候选择从后台启动进程是明智的选择,下面是一个后台启动进程的例子:,#./calculate&/启动一个后台计算进程,1 2116/分配给的该后台进程的ID号,13.4.2 在指定时刻执行命令序列at命令,有时候须要对系统进行一些比较费时而且占用资源的维护工作,这些工作适合在深夜进行,这时候用户就可以事先进行调度安排,指定任务运行的时间或者场合,到时候系统会自动完成这一切工作。用户使用at命令在指定时刻执行指定的命令序列at命令可以只指定时间,也可以时间和日期一起指定。需要注意的是,指定时间有个系统判别问题。比如说:用户现在指定了一个执行时间:凌晨3:20,而发出at命令的时间是头天晚上的20:00,那么这将会产生两种执行情况:如果用户在3:20以前仍然在工作,那么该命令将在这个时候完成;如果用户3:20以前就退出了工作状态,那么该命令将在第二天凌晨才得到执行。,13.4.3 在资源比较空闲的时候执行命令batch命令,batch命令用低优先级运行作业,该命令几乎和at命令的功能完全相同,惟一的区别在于:at命令是在指定时间,很精确的时刻执行指定命令;而batch却是在系统负载较低,资源比较空闲的时候执行命令,这个主要是由系统来决定执行的,因而用户的干预权力很小。该命令适合于执行占用资源较多的命令。,batch命令的语法格式也和at命令十分相似,如下所示:,batch-V-q queue-f file-mv 时间,具体的参数解释与at命令相似,这里不再赘述,请参看at命令。一般地说,不用为batch命令指定时间参数,因为batch本身的特点就是由系统决定执行任务的时间,如果用户再指定一个时间,就失去了该命令本来的意义。,下面给出使用该命令的例子:,/使用batch命令执行在根目录下查询文本文件的功能,#batch,at find/-name*.txt,at,job 14 at 2005-06-11 22:59,注意:batch和at命令都将自动转入后台,所以启动的时候并不需要手工添加&符号。,13.4.4 不断重复执行某些命令cron命令,前面介绍的两条命令都会在一定时间内完成一定任务,但是注意它们都只能执行一次。,当系统在指定时间完成任务后,一切就结束了。但是在很多时候需要不断重复一些命令,比如:某公司每周一自动向员工报告头一周公司的活动情况,这时候就需要使用cron命令来完成任务了。,实际上,cron命令是不应该手工启动的。cron命令在系统启动时就由一个shell脚本自动启动,进入后台(所以不需要使用“&”符号)。一般的用户没有运行该命令的权限,虽然超级用户可以手工启动cron,不过还是建议将其放到shell脚本中由系统自行启动。,首先cron命令会搜索/var/spool/cron目录,寻找以/etc/passwd文件中的用户名命名的crontab文件,被找到的这种文件将载入内存。cron启动以后,将首先检查是否有用户设置了crontab文件,如果没有就转入“休眠”状态,释放系统资源。所以该后台进程占用资源极少。它每分钟“醒”过来一次,查看当前是否有需要运行的命令。命令执行结束后,任何输出都将作为邮件发送给crontab的所有者,或者是/etc/crontab文件中MAILTO环境变量中指定的用户。,13.4.5 操作cron后台进程的表格crontab命令,crontab命令用于安装、删除或者列出用于驱动cron后台进程的表格。用户把要执行的命令序列放到crontab文件中以获得执行。每个用户都可以有自己的crontab文件。,在/var/spool/cron下的crontab文件不可以直接创建或者直接修改。crontab文件是通过crontab命令得到的。该文件中每行都包括六个域,其中前五个域是指定命令被执行的时间,最后一个域是要被执行的命令。每个域之间使用空格或者制表符分隔。格式如下(此处用空格符分隔):,minute hour day-of-month month-of-year day-of-week commands,第一项是分钟,第二项是小时,第三项是一个月的第几天,第四项是一年的第几个月,第五项是一周的星期几,第六项是要执行的命令。这些项都不能为空,必须填入。如果用户不需要指定其中的几项,那么可以使用“*”代替。因为“*”是统配符,可以代替任何字符,所以就可以认为是任何时间,也就是该项被忽略了。在表13.2中给出了每项的合法范围。,13.5 进程的挂起及恢复,作业控制允许将进程挂起并可以在需要时恢复进程的运行,被挂起的作业恢复后将从中止处开始继续运行。只要
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!