第7章 Linux中的进程管理.pptx_第1页
第7章 Linux中的进程管理.pptx_第2页
第7章 Linux中的进程管理.pptx_第3页
第7章 Linux中的进程管理.pptx_第4页
第7章 Linux中的进程管理.pptx_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

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

文档简介

1、第7章 Linux中的进程管理17.1 Linux的进程概述Linux操作系统进程的分类:交互进程:由一个shell启动的进程,交互进程既可以在前台运行,也可以在后台运行;批处理进程:这种进程和终端没有联系,是一个进程序列,它被提交到一个队列中以便顺序执行 。 守护进程(也称监控进程或服务):Linux系统启动时启动的进程,并在后台运行。 Linux操作系统包括的三种进程都有自己的特点和属性。27.2 Linux进程原理7.2.1 Linux进程的状态运行态:正在运行或准备运行(就绪态);等待态:停止态(终止态);僵死态:由于某种原因被终止的进程,但该进程的控制结构task_struct仍然保

2、留着。37.2 Linux进程原理7.2.2 Linux进程的工作模式在Linux系统中,进程的工作模式(执行模式)划分为用户模式和内核模式。用户模式:用户程序、应用程序及内核之外的系统程序对应的进程在此模式下运行。内核模式:系统调用和中断事件要运行操作系统(即内核)程序,进程则在内核模式下运行。47.2 Linux进程原理7.2.2 Linux进程的工作模式按照进程的功能和运行的程序分类,进程可划分为系统进程和用户进程。系统进程:只运行在内核模式,执行操作系统代码,完成一些管理性的工作。用户进程:通常在用户模式中执行。也可以在内核模式下运行(通过系统调用或中断、异常)。57.3 Linux守

3、护进程7.3.1 守护进程简介守护进程也称为精灵进程。Linux服务器在启动时需要启动很多系统服务,它们向本地和网络用户提供了Linux的系统功能接口,直接面向应用程序和用户。提供这些服务的程序是由运行在后台的守护进程(daemons)来执行的。守护进程是生存期长的一种进程。它们独立于控制终端并且周期性的执行某种任务或等待处理某些发生的事件。他们常常在系统引导装入时启动,在系统关闭时终止。linux系统有很多守护进程,大多数服务器都是用守护进程实现的。同时,守护进程完成许多系统任务,有些书籍和资料也把守护进程称作:“服务”。选择运行哪些守护进程,要根据具体需求决定。67.3 Linux守护进程

4、查看系统可以提供的守护进程对应的服务,使用下面方法,以root权限运行: #ntsysv 7守护进程有如下几种启动方法:在引导系统时启动:由init程序根据配置文件/etc/inittab文件启动相应的守护进程。这些守护进程通常存放在/etc/rc.d/init.d目录下;人工手动从shell提示符启动:例如,#service crond start(restart) 使用crond守护进程启动:该守护进程根据/var/spllo/cron/crontab文件执行相应的任务;执行at命令启动:在规定的时间执行一个程序。87.3 Linux守护进程7.3.2 重要守护进程介绍(P120页表7-1

5、 Linux重要守护进程列表)例如,httpd:Web服务器;xinetd:网络守护进程服务程序,管理启动守护进程的管理服务器;crond:Linux下计划任务;lpd:打印服务器;named:DNS服务器;smb:Samba文件共享/打印器。97.4 启动Linux进程启动进程有两种方法:手工启动和调度启动。7.4.1 手工启动:由用户输入命令,直接启动一个进程便是手工启动进程。 1、前台启动手工启动一个进程的最常用的方式。一般地,用户键入一个命令“ls l”,这就已经启动了一个进程,而且是一个前台的进程。实际上有许多运行在后台的、系统启动时就已经自动启动的进程正在悄悄运行着。因此这时候系统

6、其实已经处于一个多进程状态。107.4 启动Linux进程2、后台启动:直接从后台手工启动一个进程用得比较少一些,除非是该进程时常耗时间,且用户也不急着要看到处理结果的时候。假设用户要启动一个需要长时间运行的格式化文本文件的进程。为了不使整个shell在格式化过程中都处于“瘫痪”状态(长时间看不到任何运行结果),因此这个时候选择从后台启动这个进程是明智的选择。下面是一个后台启动进程的例子:117.4 启动Linux进程#./calculate &1 2116无论前台启动还是后台启动,新进程都是当前shell这个进程产生的,因此shell是父进程,而新进程是子进程。例如,#nroff man p

7、s.1|grep kill|more 同时创建了三个子进程。127.4 启动Linux进程调度启动:事先进行设置,根据用户要求自行启动有时候需要对系统进行一些比较费时而且占用资源的维护工作,这些工作适合在深夜进行,这时候用户就可以事先进行调度安排,指定任务运行的时间或者场合,到时候系统会自动完成这一切工作。 要使用自动启动进程的功能,就需要掌握以下几个启动命令。at命令bath命令 cron命令137.4.2 在指定时刻执行命令序列at命令用户使用at命令在指定时刻执行指定的命令序列。 at命令从标准输入或一个指定的文件读取命令,这些命令在以后某个时间用 /bin/sh 执行。 at命令格式:

8、 p122at -V -q 队列 -f 文档名 -mldbv 时间注:在任何情况下,root用户都能够使用这个命令。对于其他用户来说,是否能够使用就取决于两个文档:/etc/at.allow和/etc/at.deny。假如/etc/at.allow文档存在的话,那么只有在其中列出的用户才能够使用linux at命令;假如该文档不存在,那么将检查/etc/at.deny文档是否存在,在这个文档中列出的用户均不能使用该命令。假如两个文档都不存在,那么只有root用户能够使用该命令;空的/etc/at.deny文档意味着所有的用户都能够使用该命令,这也是默认状态。14at命令中的常用参数说明。-m:

9、作业结束后发送邮件给执行linux at命令的用户。-f file:使用该选项将使命令从指定的file读取,而不是从标准输入读取。-l:atq命令的一个别名。该命令用于查看安排的作业序列,他将列出用户排在队列中的作业,假如是root用户,则列出队列中的任何工作。-d:atrm 命令的一个别名。该命令用于删除指定要执行的命令序列,-v:显示作业的执行时间-c:将命令行上所列的作业送到标准输出。15一、at命令设置计划任务例如,指定在今天下午6:35执行某命令。假设现在时间是中午12:35,2008年6月11日,其命令的时间格式如下:#at 6:35pm#at 18:35#at 18:35 tod

10、ay#at now +6 hours#at now +360 minutes#at 18:35 11.6.08#at 18:35 6/11/08# at 18:35 Jul 1116练习:1、要在三天以后的下午 4 点执行任务#at 4pm + 3 days2、要在明天上午1点执行任务#at 1am tomorrow 3、任务在5分钟后运行#at now + 5 minutes4、任务在1小时后运行#at now + 1 hour 5、任务在3天后运行# at now + 3 days6、任务在两周后运行#at at now + 2 weeks7、任务在2008年12月20日凌晨1点开始#at

11、 1:00 12/20/0817在使用at命令时,键入了linux at命令和它的时间参数后,at 提示就会出现。键入要执行的命令,按 Enter 键,然后键入 ctrl+d。例如,5天后的下午 5 点钟执行 /bin/ls#at 5pm +5 daysat/bin/ls(如何知道该命令的位置?)at(ctrl+d)job 11 at 2009-07-25 17:00执行结果以文件的形式发送至/var/spool/mail/文件(与用户同名)中;如果希望将at的命令的执行结果送至其它文件中,可使用重向符“”或“”。18例如,上面的例题的结果想保存至当前目录下的text.out文件中。#at 5

12、pm +5 daysat/bin/lstest.out(或test.out)at(ctrl+d)job 12 at 2009-07-25 17:00例如,明天的 17:20 执行 /bin/date #at 17:20 tomorrowat/bin/dateatjob 13 at 2009-07-26 17:2019例如,2008-8-7晚上最后一分钟提醒奥运开始# at 23:59 08/07/08at echo 奥运会开始 /root/hello.txtat job 14 at 2008-08-07 23:59例如,找出系统中任何以c为后缀名的文档,指定时间为2008年12月25凌晨两点。

13、#at 2:00 12/25/08at find / -name *.cat job 15 at 2008-12-25 02:0020也可以将命令序列写到一个文档中,然后将文档作为linux at命令的输入来处理。这样不容易出错。例如,对上例修改,将命令序列写入到文档/tmp/findjob。语句为:#at -f /tmp/findjob 2:00 12/25/08job 16 at 2008-12-25 02:00例如,用at命令实现今晚21:00定时关机#at 21:00 todayatshutdown h 21:00 t30at job 17 at 2009-01-25 21:00该命令

14、运行后,到了21:00点,电脑会出现“系统关机”对话框,并默认30秒延时自动关机。21shutdown 参数 -t 秒数 时间 警告信息常用参数:-c:取消前一个shutdown命令-h:将系统关机-r:重新启动系统-t :送出警告信息和关机信号之间要延迟多少警告信息:提醒用户保存当前进行等信息时间:参数有hh:mm或+m两种模式。 hh:mm格式表示在几点几分执行shutdown命令 +m表示m分钟后执行shutdown 比较特别的用法是以now表示立即执行例如,指定现在立即关机: # shutdown -h now例如,指定5分钟后关机,同时送出警告信息# shutdown +5 “Sys

15、tem will shutdown after 5 minutes”22二、查看目前在等待执行的任务输入任务后,能使用atq命令能看到目前等待执行的任务,输出提供了任务号、任务执行时间和用户等信息。# atq 33 2009-01-15 02:05 a root34 2009-01-20 11:25 a root其中的a表示是at任务三、 删除linux at命令任务删除一个linux at命令任务比较简单,使用atrm命令就。命令格式:at 任务号例如,删除任务号为33的任务。# atrm 3323练习:1、二天后的上午8点执行job中的作业#at f job 8am +2 days2、7月

16、2号下午5点执行执行job中的作业#at f job 5pm Jul 2 3、找出系统中所有以.txt为后缀的文件,寻找结束后将结果保存在/etc/result文件中,然后向用户liyang发出邮件通知,告知用户已经完成指定时间为2008年6月12日下午3点#at 3pm 06/12/08atfind / -name *.txt/etc/resultatecho “liyang:All code been searched out.You can take them over.Bey!”|mail s “job done” liyangat244、将上述第3题的命令序列写入到/etc/job文

17、件中,由at命令执行#at f /etc/job 3pm 06/12/08257.4.3 在资源比较空闲的时候执行命令bath命令Batch命令用低俦级运行作业,该命令几乎和at命令的功能完全相同,唯一的区别在于:at命令是在指定的时间,很精确的时刻执行指定命令;而batch却是在系统负载较低,资源比较空闲的时候执行命令,这主要是由系统来决定执行的,因而用户的干预权力很小,该命令适合于执行占用资源较多的命令。Batch命令的语法和at命令十分相似,这里不再赘述。通常,不用为batch命令指定时间参数。例如,使用batch命令执行在根目录下查询文件文件的功能#batchatfind / -nam

18、e *.txtat35 2009-02-15 09:36 b root267.4.4 不断重复执行某些命令cron命令前面介绍的两条命令at和batch都会在一定时间内完成一定任务,但是注意它们都只能执行一次。但是在很多时候要不断的重复一些命令,比如,某公司每周一自动向员工报告一周公司的活动情况,这时候就有使用cron命令来完成任务了。首先cron命令会搜索/var/spool/cron目录,寻找和用户名同名的crontab文件是否存在,如果找到这人文件,则被载入内存,将被执行;如果没有找到这样的文件,则cron命令就转入“休眠”状态,释放系统资源,它每分钟“醒”过来一次,查看当前是否有需要运

19、行的命令。命令执行后,任何输出都将作为邮件发送给crontab的所有者,或者是/etc/crontab文件中MAILTO环境变量中指定的用户.277.4.5 操作cron后台进程的表格crontab命令 crontab命令用于安装、删除或者列出用于驱动cron后台进程的表格。用户把要执行的命令序列放到crontab文件中以获得执行。每个用户都有自己的crontab文件。 在/var/spool/cron下的crontab文件不可以直接创建或直接修改。crontab文件是通过crontab命令得到的。该文件中每行都包括六个域,其中前五个域是指定命令被执行的时间,最后一个域是要被执行的命令。每个域

20、之间有空格或制表符分隔。格式如下:minute hour day-of-month month-of-year day-of-week command其中,这些项都不能为空,如果不需要指定某项,可使用“*”,认为是任何时间。28下表给出每项的合法范围。时间合法范围minute0059hour0023,其中00就是12点day-of-month0131month-of-year0112day-of-week06,其中0是周日时间参数范围表29要使用cron服务, 需安装vixie-cron,crontabs,也要确保crond处于运行状态检查是否安装 # rpm -aq |grep croncr

21、ontabs-1.10-5vixie-cron-3.0.1-74anacron-2.3-25检查运行状态# service crond statuscrond (pid 3852) 正在运行30例如,每天下午的4点、5点、6点的5min、15min、25min、35min、45min、55min时执行命令df5,15,25,35,45,55 16,17,18 * * * df 例如,每周一,三,五的下午3:00点系统进行维护状态,重新启动系统00 15 * * 1, 3,5 shutdown -r +5例如,每小时的10分,40分执行用户目录/liyang下的calcula这个程序10,40

22、* * * * /liyang/calcula例如,每小时的1分执行用户目录/bin/date这个指令1 * * * * /bin/date31建立crontab文件的步骤:(1)建立文件:用文本编辑器编辑输入crontab文件。例如,有一个用户liyang,用vi编辑器编辑crontab文件,文件名为job.假设存放在/root目录下。#vi job59 20 12 6 0 ls /etc/passwd/在6月12号星期日20:59分执行命令 ls /etc/passwd(2)安装文件:使用crontab命令进行安装,使之生成liyang用户的crontab文件。#crontab /root

23、/job32/var/spool/cron目录下查看,这时发现有一个liyang文件,该文件就是所需的crontab文件。用more命令查看该文件内容。#cat /var/spool/cron/liyang内容如下:#DO NOT EDIT THIS the master and reinstall.#(job installed on Web Oct 8 19:26 2008)#(Cron version -$Id:crontab.c,v 2.13 1994/01/17 03:20:37 vixie Exp $)59 20 12 6 0 ls /etc/passwd33crontab命令的语

24、法格式如下:crontab -u user filecrontab -u user (-l|-r|-e)-u user:指定用户,默认是操作者本身。-l:在标准输出上显示当前的crontab文件-r:删除当前的crontab文件-e:使用VISUAL或EDITOR环境变量所指的编辑器编辑当前的crontab文件,当结束编辑离开时,编辑后的文件将自动安装。例如,查看当前的crontab文件#crontab l59 20 12 6 0 ls /etc/passwd20 * * * * cat /etc/passwd21 * * * 2,4,6 ls/usr/src34例如,删除用户liyang的c

25、rontab文件#crontab u liyang r如果查看是否删除了该用户的crontab文件?35crontab文件的时间应用实例如下表格所示:分小时日月周说明01151,3,5,7,9,11*在 1、3、5、7、9 和 11 月的 15 日的 1 a.m. 运行命令30*3,5只在星期三和星期五每小时的 30 分时执行命令一次0,300-5,17-23*在午夜到 5 a.m. 以及 7 p.m. 到 11 p.m. 之间整点时和 30 分时运行命令 0011*在每年 1 月 1 日午夜执行命令一次00*0在每个星期日午夜运行命令。这相当于每周一次 30010,20,30*每月的 10、

26、20 和 30 日(二月除外)的 12:30 a.m. 运行命令。 36例如,每天下午3点20执行查看日历命令 创建crontab文件,文件名为 carn#vi carn20 15 * * * /usr/bin/cal安装crontab文件#crontab carn以上例题的结果在/var/spool/mail/root文件中。如果希望结果保存在某文件中。例如,将结果保存在当前目录中的ca.txt中。如何修改?37例如,每月的1、11、21、31日是的6:30执行一次ls命令 创建crontab文件,文件名为lsrn#vi lsrn30 6 */10 * * ls安装crontab文件#cro

27、ntab lsrn如何查看结果?例如,13月份的每个星期的每一天每一小时中的每10分钟列表方式查看/home下的信息创建crontab文件,文件名为test.cron#vi test.cron*/10 * * 1-3 * ls -l /home 安装crontab文件#crontab test.cron如何查看结果?38例如,每两个小时向用户发送信息: Have a break now创建crontab文件,文件名为brno#vi brno0 */2 * * * wall Have a break now. 安装crontab文件#crontab brno在终端显示结果:Broadcast message from root(Fir Oct 17 08:00:00 2008 )Have a break now.39例如,每周一至周五3点钟,在目录/home中,查找文件名为*.c,且是4天前的文件,对满足该条件的文件进行删除。 创建crontab文件,文件名为firm#

温馨提示

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

评论

0/150

提交评论