06进程与任务或作业管理_第1页
06进程与任务或作业管理_第2页
06进程与任务或作业管理_第3页
06进程与任务或作业管理_第4页
06进程与任务或作业管理_第5页
已阅读5页,还剩48页未读 继续免费阅读

下载本文档

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

文档简介

1、第六章 进程与义务或作业管理 程序、进程、作业和义务的概念Linux操作系统的启动过程进程形状及转换进程调度、信号与软中断suid、sgid和sticky属性进程调度命令作业和义务管理图形界面下的进程管理 6.1程序和进程的概念 操作系统的重要义务之一是运用户充分、有效地利用系统资源,也就是在系统资源一定或有限的情况下,要同时执行更多程序,高效率地完成更多的义务。进程、作业和义务调度是操作系统的重要义务之一。本章的主要内容是从系统的外部来察看系统中与进程(process)和作业(job)或义务(task)相关的行为,并实施某些控制让系统任务的更好,或按照用户的意图来完成指定任务。 6.1.1程

2、序、进程、作业和义务 程序program是一个存储在存储介质上的文件。 进程proccess是一个程序的执行过程。作业(job)或义务(task)是用户需求计算机完成某项义务时要求计算机所做任务的集合,一个作业能够需求几个程序结合完成。作业和进程主要的区别与关系如下: 作业是用户向计算机提交的义务虚体;一个进程是作业或义务的某个执行过程;一个作业可由多个进程组成。 6.1.2 三类进程 前台进程:是指用户直接控制的用于完成某个义务的进程,因此也叫终端交互式进程。它从规范输入读数据,向规范输出写数据,将错误信息输出到规范错误。也可以是用户直接交互控制的完成某种功能的程序。后台进程是指在系统后台运

3、转的、不与用户交互进程。前台的进程也可放在后台运转,这时能够要用到输入输出的重定向。守候进程也叫效力器或精灵进程,它是后台进程的一种。 批处置进程是用户按照某种意图将一批作业和义务经过编程的方法提交给系统,让系统在某个适宜的时间来调度和执行的进程。批处置进程是在某个shell程序的控制下解释执行的。 6.1.3 Linux操作系统的启动 Linux的启动是经过加电和系统自检后,将主引导程序MBR装入内存并把控制权交给它。在MBR的控制下装入Linux的引导程序LBR并把控制权交给它。在LBR的控制下系统继续引导,中心装入内存。系统开场进一步的初始化过程:首先初始化系统内部数据构造比如构造空闲缓

4、冲区、初始化区表构造、页表项等,然后将根文件系统安装到根“/下,并创建系统的0#进程、设置它的运转环境。至此内核启动完成。接着继续创建1#进程,然后由1#进程做进一步的初始化任务。 Linux操作系统的启动续1#进程继续初始化过程,按照/etc/inittab文件的内容和规定启动效力、管理进程,为每个终端生成一个子进程,等待用户在终端上注册,至此启动过程终了。 6.1.4 0#进程与1#进程 在UNIX系统中0#进程是独一只在中心态下执行的进程。它的功能有三:调度分配处置机;担任进程交换;初始化时创建1#进程。在Linux系统中,0#进程在创建出1#进程后,变成了空闲进程Idler,当系统中没

5、有其它进程就绪时运转。 1#(init)进程是系统启动时创建的创建进程的进程。它的主要作用是根据/etc/inittab的内容创建系统运转所需的进程。系统初始化完成后,1#进程了变成回收进程,专门领养没有父进程的孤儿进程或回收形状为ZOMBIE的僵尸进程。 Linux的进程树0#进程创建了1#进程,它是1#进程的父进程。1#进程在系统启动过程中创建了系统所需求的其它进程。而子进程又可创建属于本人的子进程。因此除0#进程外,1#进程是其它一切进程的祖先进程。 6.1.5 进程及运转方式 在UNIX/Linux系统中,进程可在用户态和中心态两种执行方式下执行。当用户进程需求系统中心提供效力而由用户

6、态转向中心态执行时,需求依托中断或圈套机制来实现,这时要切换处置机CPU的任务形状。两种形状之间的主要区别是,中心态下的进程具有较高的优先级,可以存取中心和用户数据。而用户态下的进程能存取它本人的指令与数据,但不能存取中心指令和数据。 6.1.6 进程形状及转换 在操作系统中,一个CPU上同时只能运转一个进程,但在多用户、多义务环境下,从宏观上来讲,同时运转着很多进程,因此在这些正在运转着的进程中,在任一时辰只能有一个进程占有处置机而真正运转。也就是说众多运转着的进程中,它们宏观上是并行的,但微观上是串行的。因此就存在着有的进程在运转,有的进程在等待问题。现实上进程的形状远不只执行和等待两个,

7、还有用户态执行、中心态执行、等待、睡眠、就绪等形状。 UNIX系统的进程形状及转换进程在用户态运转。进程在系统态运转。 就绪形状。进程因等待资源而在内存中睡眠。进程在外存中睡眠。 外存就绪。进程从系统态前往。进程刚被创建时的形状。 僵尸形状。Linux系统的进程形状及转换就绪形状(执行)浅度睡眠深度睡眠停顿形状僵尸形状6.2 UNIX/Linux进程调度UNIX/Linux系统是分时系统,系统给每个进程分一个时间片,每个进程在本人的时间片内执行,当时间片终了时或从系统效力中前往时,动态计算进程的“优先级,假设有优先级高于当前进程的内存就绪态进程时,系统设置调度标识,并在以后某个时辰剥夺当前进程

8、的执行权,而让优先级高的进程执行。 UNIX/Linux的进程调度按时间片计算“优先级,并按“优先级的高低来调度进程,使优先级高的进程占有处置机而得到执行。这里所说的“优先级不是一个详细的数字或变量,而是一个衡量优先程度的目的。 6.2.1 调度战略与优先级的计算 Linux把一切进程分成两类:实时进程和普通进程。对普通进程采用时间片轮转法来调度进程的执行,一切就绪进程按先后排成队列,依次轮转,时间片用完而未完成义务者排在尾部,如此往复;对于实时进程那么采用FIFO和时间片轮转进展调度。最后经调度模块综合计算出各进程的优先级,优先级最高者获得执行权。 Nice Level优先级在优先级计算过程

9、中有一个根本参数参与运算,这就是传统UNIX/Linux Nice Level优先级,按传统做法,把它记为NICE。系统为每个进程设置了一个默许的NICE值0,经过命令nice用户或管理员可以调整进程的NICE值,从而到达调整优先级的目的。在Red Hat Linux 9中它的调整范围为-2019,在其它UNIX中,NICE取值范围能够与此不同。沿用UNIX的传统,NICE的值越大进程的优先级越低。NICE值可以被作为nice命令的参数来调试进程的优先级。 6.2.2 信号与软中断 Unix/Linux中运用很多信号,用于进程通讯与控制。 进程通讯时信号由主进程或系统或硬件等发送到目的进程,当

10、目的进程收到信号后要进展相应的处置。假设在目的进程在用户级执行,那么收到信号后立刻处置,假设在内核级运转时,先将信号记下来,待前往到用户级时再处置。 用户可以向目的进程发送信号,而实现一定程度的通讯,完成指定的任务或到达某种指定的目的。用户可以对收到的信号采取系统指定的方法进展处置,也可采取本人的方法进展处置,也可忽略信号 。Linux系统的中断Linux系统常用的中断信号可用命令kill,killall和fuser来查询。如表6-1所示。在信号中,有的是硬件发出,比如SIGILL、SIGSEGV等,有的是可屏蔽的,比如SIGHUP、SIGQUIT等,而SIGKILL和SIGSTOP等是不可屏

11、蔽。我们通常处置的只是一些软中断信号:名称值默认动作意义和功能描述 SIGHUP 1终止运行挂机或断线信号SIGINT 2终止运行键盘收到Ctrl+CSIGQUIT 3写出映像键盘收到退出Ctrl+SIGKILL 9终止运行KILL,不可屏蔽SIGTERM 15同上进程终止信号6.3进程管理与调度命令 可执行文件的setuid和setgid属性 可执行文件和目录的sticky属性查询进程形状(ps) 按称号终止进程的执行(killall) 确定运用指定文件或文件系统的进程(fuser) 让进程抗终止运转(nohup) 改动进程的优先级(nice) 进程挂起或作业的前/后运转切换6.3.1 可执

12、行文件的setuid和setgid属性 在UNIX/Linux系统中,用户级别和执行权益是相关。但是有些任务,比如修正/etc/passwd和/etc/shadow文件等,对于普通用户都是必需的,由于它要修正密码。但是系统中这些文件对于普通用户是不允许有写操作的。于是就出现了普通用户经过某种机制行使超级用户权限的问题。 1 可执行文件的setuid和setgid属性 当一个程序具有suid属性时,它执行时的uid将是该程序一切者的uid即有效uid,记为euid,而执行者的原来uid叫为真实uid,记为ruid。当一个程序具有sgid属性时,它执行时的gid将是该程序的gid即有效gid,记为

13、egid,而执行者的原来gid叫为真实gid,记为rgid。suid/sgid属性只对二进制可执行文件有效,对可执行的脚本文件无效。 可执行文件的setuid和setgid属性(续)当一个属于超级用户的可执行二进制程序具有suid属性时,那么当普通用户执行它时,也就相当于有了超级用户的身份和权限。同样当一个属于超级用户所在组的可执行二进制程序具有sgid属性时,那么当普通用户执行它时,也就相当于有了该组员的身份和权限。suid和sgid权限的存在能够会给某些程序的执行带来了方便,由于权限被放大了,但这也是一种危险。因此设置这种权限的可执行二进制程序不宜太多。常用的设置suid的程序有:/bin

14、/ping、/usr/bin/passwd、/usr/bin/newgrp、/usr/bin/sudo、/usr/sbin/suexec和/usr/sbin/traceroutesetuid和setgid属性管理按照文件的属性,假设用八进制表示,对应于suid和sgid的权限那么为4000和2000。setuid和setgid属性设置1. 数字方法:chmod 4755 myp1#为myp1设置suidchmod 2775 myp2#为myp2设置sgidchmod 6777 myp3#为myp3同时设置suid和sgid2. 字符方式chmod u+s myp1#为myp1设置suidchm

15、od g+s myp2#为myp2设置sgidchmod ug+s myp3#为myp3同时设置suid和sgid修正后权限分别为:-rwsr-xr-x,-rwxrwsr-x 和rwsrwsrwx 2.目录的sticky权限 UNIX/Linux系统允许目录运用sticky位属性(粘着位)。当一个目录设置了sticky位后,它内部的文件只能被文件主、目录主或超级用户删除、更名或挪动。设置sticky位的目录有/tmp、/usr/tmp和/var/spool/uucppublic等。在传统的UNIX系统中sticky对可执行文件还具有特殊意义略。sticky权限管理sticky位是对目录执行权来

16、说的,它的属性值为1000。sticky位也可用chmod命令经过root用户来设置。设有目录mydir的权限为drwxr-xr-x(755),那么可经过以下两种方法来设置它的sticky位:chmod 1755 mydir#数字方式chmod +t mydir#字符方式。 设置后的权限为drwxr-xr-t或1755 6.3.2 进程管理与调度命令 1. 查询进程形状(ps) 功能:查询进程形状和信息,给出系统当前正在运转进程信息的快照。用法ps options 阐明:ps支持多种UNIX系统格式的个性化显示方式。且参数较多;可以配合kill命令终了系统中失控或不用要的进程。ps参数-A,-

17、e:显示系统内的一切进程;-a:显示一切与终端相关的进程A:显示当前终端的一切进程,也包括其它用户进程-c:显示CLS和PRI栏;c:列出进程名,但不包含途径名-C pname:显示进程名字为pname的同名进程信息-f:显示进程信息时显示带有途径的进程名和进程参数F:用ASCII字符显示树状构造的进程间关系g,-g/-G gid:显示与进程组相关的信息,gid可以是组名或组号H:不显示标题;-H:显示树状构造以表示进程间的关系J,-j:以作业控制方式显示进程信息;l, -l:以长格式显示进程信息L:显示标题栏目信息;p/-p pids:显示指定进程的信息T, t/-t tty:显示终端相关进

18、程信息,T只能用于显示当前终端进程信息u, U/-U uid:显示与用户相关的信息,uid可以是用户名或用户号。X:显示一切进程信息,不区分终端进程的形状 R:Runable,进程在执行中D:Dlaying,非中断性睡眠,通常是由于等待I/OS:Sleep,正在睡眠T:Traced or stopped,被跟踪或停顿;Z:Zombie,僵尸形状。进程曾经终止,但父进程没有对它的终了作适当处置W:Wait,无内存页面被换出N:低优先级进程L:Locked,页面被锁进内存用于实时控制或用户控制的I/O:高优先级进程ps运用例如 #查询与终端(tty1)相关的进程信息ps -t tty1#查询与用户

19、(gjshao)相关的信息ps f u gjshao#查询整个系统内的进程信息情况 ps axj按称号终止进程的执行(killall) 功能:killall是另一个用来终止程序的命令,它不像kill运用进程的PID作为操作对象,而是运用进程名。用法:killall -e -g -i -q -v -w -V -s signal - name killall -l阐明:killall发送的信号可以是信号的名或值。 由于在系统能够有同名进程运转,因此运用killall终止进程时能够会有扩展化的倾向。参数与例如参数:name:进程名,被终止的对象-g:终止指定所属组内的一切进程-i:交互式任务,终止进

20、程前需求用户确认-l:列可用信号-q:安静方式,当不存在指定进程时也不报错-s:指定信号参见-l参数-v:报告信号能否发送胜利-w:等待一切被杀进程终了。假设被杀进程忽略发送信号或处于僵尸形状会呵斥killall无限等待例如:killall -l#查询可用信号killall man#终止一切名为man的进程3. 确定运用指定文件或文件系统的进程(fuser) 功能:确定运用指定文件或文件系统的进程用法:fuser -a|-s -n namespace -signal -kimuv name .fuser l阐明:在fuser的默许输出中,进程号的后面可以跟有c、e、f、r、m等字符,意义如下:

21、c:当前目录;e:进程正在执行;f:翻开文件,默许情况下不输出此标志;r:根目录;m:内存映像文件或共享库。 fuser的参数参数:-k:终止一切运用设备或文件系统的进程-i:在杀死进程前提示确认,假设无-k那么忽略此参数-l:列所运用的信号名;-m:安装的文件系统-n namespace:在指定名字空间内搜索,名字空间可是文件、UDP和TCP等-s:安静方式;-u:显示用户信息-signal:指定信号,而非默许的SIGKILL-4/-6:只搜索IP4/IP6的sockets信息。默许搜索两者fuser运用例如例如:1)杀死一切运用某设备(tty5)的进程 fuser k /dev/tty5

22、2)显示运用本地网络端口的进程 #监视本地telnet和ftp端口的tcp活动情况fuser telnet/tcp ftp/tcp#监视本地telnet和ftp端口的tcp活动情况fuser u 23/tcp 21/tcp#监视本地ftp端口的tcp活动情况 #fuser n tcp 214. 让进程抗终止运转(nohup) 原理:在UNIX/Linux环境下进程可在前台运转,也可在后台运转。但不论哪种情况,只需启动进程的用户退出了,他创建的一切进程都将终止。这是由于当用户退出时,它启动的一切进程都将收到HUP信号。按照系统规定,收到HUP信号的进程都将被终止。为了保证用户退出后,它启动的后台

23、进程仍能继续运转,就要求进程对信号HUP具有免疫才干。 功能:nohup启动的进程对信号HUP就具有免疫力 用法:nohup command arguments nohup阐明后台进程是不能和终端交互的,假设被执行的命令的输出没有重定向,它将输出追加到当前目录的nohup.out文件。假设当前目录的nohup.out没有写权限,输出将被重定向到$HOME/nohup.out。假设两者均无写权限,那么命令不能执行。假设有写权限且nohup不存在,那么将创建之,在创建时不对同组和其它人赋访问权。假设文件曾经存在那么不改动原文件的存取权限。程序的未重定向的规范错误也将追加到nohup.out文件。n

24、ohup不能直接创建后台进程,创建后台进程应在回车前添加“&符号。可以经过前往值来确定执行情况:126-命令不能执行;127-命令找不到;其它-所执行命令的前往值。 5. 改动进程的优先级(nice) 功能:经过它可以改动进程NICE值,从而改动进程的优先级。用法:nice options cmd arg 参数:-n:例如:-n5,NICE=5,-n-5,NICE=-5-:例如:-5,NICE=5,-5,NICE=-5-adjustment=:例如:-adjustment=5,NICE=5 nice阐明及例如阐明:对于哪些不急迫的义务,可以经过调高它的NICE值,来降低它的优先级,以保证紧急义

25、务的执行。当不带参数或变量运转nice时,将显示默许的NICE,假设用nice对某个进程进展操作,而没有指定NICE,那么将NICE设置为10,从而降低了优先级。假设要设置负的NICE,而提高进程的优先级,那么要求用户必需具有超级用户权限。 运用例如:nice myp&#以默许优先数(10)降低运转级nice 15 myp&#以15为优先数运转程序nice n-19 myp&#以-19为优先数运转程序ps l #查询进程运转级和NICE值(PRI和NI列)6. 进程挂起或作业的前/后运转切换当一个交互式进程正在运转时,用户可以经过Ctrl+Z暂停其当前执行,而将它挂起,放在后台等待运转,也可让

26、其在后台或再重新回到前台运转。实现这些功能的命令是fg和bg,还有jobs命令用于作业队列查询和管理。它们都是bash的内部命令。根本用法:fg job#让挂起进程到前台运转bg job#让挂起进程到后台运转jobs options job #显示作业队列运用例如设用户正在运转man bash,此时可以经过Ctrl+Z将其挂起,屏幕显示以下信息并出现提示符:1+ stopped man bash阐明名为man的进程被挂起,作业编号为1,+表示此为当前作业,用户可以在提示符下继续任务。再启动一个进程bc进入交互界面,同样可以经过Ctrl+Z将bc挂起2+ stopped bc系统回到提示符。运转

27、jobs命令可得以下输出:1- stopped man bash2+ stopped bc有两个作业,编号分别为1和2,2为当前作业。 运用例如(续)此时可以经过命令:fg job或bg job将作业调到前台或放在后台运转,job为jobs命令列出的作业号,比如1,2等。例如输入fg或fg 2将使bc调到前台执行,而输入fg 1将使作业man调到前台执行。同样输入bg 1也可使man命令在后台运转,此时系统提示:1- man bash &阐明man命令已在后台运转,但是对于交互式义务在后台运转是没有意义的。 6.4 作业和义务调度 在UNIX/Linux系统中除运用相关命令,可对正在运转的程序

28、进展管理和控制外,还有相关命令用于对作业进展调度,以规定在指定时辰调度或安排义务的执行。我们可以把有些不急于处置的义务,放在系统的负载小的或非峰值时间执行,也可以让系统在无用户运用或用户最少的时候重新启动,以保证系统运转的效率。用于作业管理的命令有at,batch和crontab。 6.4.1 at和batch 功能是在某指定时间调度命令的执行 用法at -V -f file -q queue -mldbv timeat -c job batch -V -f file -q queue -mv time 参数batch是一个shell编写的程序,它经过at提交批处置作业,其用法与at一样。at

29、和batch为作业提交的客户端程序,由at和batch提交的作业由atd调度执行。 参数-c job:将指定作业信息显示到规范输出-d job:删除指定作业-l:列出队列中的作业-f file:从文件file中读取作业,而非从规范输入,也可以用输入改道的方法实现-m:作业完成后向用户发送邮件,在作业没有输出和错误时也是这样-q queue:处置指定作业队列。在Red Hat Linux9中以单个字符表示作业队列,默许情况是:a表示at 队列,b表示batch队列,=表示正在的作业阐明at从规范输入上读入命令或从指定文件中读取命令并在以后指定的时间调度它们的执行。at可以接受HH:MM或HHMM

30、方式的时间,默许日期为当天,假设在当天时间已过,那么为下一天,时间还可以跟后缀AM和PM,否那么将视为24小时制。也可设定today、tomorrow、midnight、noon、teatime(4pm)。可同时指定时间和日期,日期必需跟在时间的后面,格式为:(1)英文月名 数字日期 数字年;(2)MMDDYY;(3)MM/DD/YY;(4)DD.MM.YY。 也可以“当前时间+依偏移量的方法指定执行时间,偏移量可以是分钟、小时、天或周等。例如:now + 2 minutes,10:22 + 3 days等。 假设在作业操作中未运用I/O重定向,那么在作业执行过程中产生的规范错误和规范输出将以

31、邮件的方式发给用户。 /etc/at.allow和/etc/at.deny超级用户可以无条件运用at命令,对于普通用户能否运用at要根据文件/etc/at.allow和/etc/at.deny来确定。at.allow、at.deny文件的构造为每行一个用户的列表,且不允许出现白空格。假设at.allow存在,那么其中的用户将被允许运用at。假设at.allow不存在,那么检查at.deny,其中的用户将不允许运用at。空的at.deny意为每个用户均可运用at。假设at.allow和at.deny均不存在,那么只需超级用户能运用at命令。相关的文件还有/var/spool/at和/var/sp

32、ool/at/spool。 作业调试例如(1)作业创建at 1200 ls -l /tmp/whoami.a#进入at界面,输入命令atCtrl+D#输入Ctrl+D终了作业输入at#at显示此行内容,并覆盖Ctrl+D所在的行(2) 列出已提交的作业at l(3) 删除已提交的作业at -d 23 25 #23,25为at -l的输出中的作业号6.4.2 crontab at和batch提交的作业是一次性的,而crontab提交的作业可以是永久性的,当crontab被制定好之后,在下一次被修正之前crond将不断按其内容的规定调度程序的执行。crontab的功能是规划程序的定时启动、定时执行。crontab是一个客户端程序,用于编辑crontab文件,该文件中按一定格式规定程序的启动。crontab提交的义务由效力器程序crond调度。cron还有按时、日、周和月调试执行的义务。 1. 功能与用法 功能:规划程序的定时启动、定时执行 用法:crontab -u user filecrontab -u user -e | -l | -r 参数:file:指定crontab文件;-e:编辑crontab文件-l:列crontab文件内容;-r:删除crontab文件-u user:指定用户的crontab文件阐明:当运用crontab时,系统为每个用户预备一个

温馨提示

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

评论

0/150

提交评论