Linux进程管理(补充)课件_第1页
Linux进程管理(补充)课件_第2页
Linux进程管理(补充)课件_第3页
Linux进程管理(补充)课件_第4页
Linux进程管理(补充)课件_第5页
已阅读5页,还剩80页未读 继续免费阅读

下载本文档

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

文档简介

Linux进程管理Linux进程管理(补充)1进程和作业的概念2进程控制块3进程状态4进程的控制5有关进程控制系统调用

Linux进程管理(补充)1进程和作业的概念Linux是一个多用户多任务的操作系统。多用户是指多个用户可以在同一时间使用计算机系统;多任务是指Linux可以同时执行几个任务,它可以在还未执行完一个任务时又执行另一项任务。Linux进程管理(补充)什么是进程?Linux系统上所有运行的东西都可以称之为一个进程。每个用户任务、每个系统管理守护进程,都可以称之为进程。进程的一个比较正式的定义是:在自身的虚拟地址空间运行的一个单独的程序。Linux用分时管理方法使所有的任务共同分享系统资源。我们讨论进程的时候,不会去关心这些进程究竟是如何分配的,或者是内核如何管理分配时间片的,我们所关心的是如何去控制这些进程,让它们能够很好地为用户服务。Linux进程管理(补充)作业、作业控制的概念进程和作业的概念也有区别,作业可以包含一个或多个进程,尤其是当使用了管道和重定向命令。例如“manps.1|grepkill|more”这个作业就同时启动了三个进程。作业控制指的是控制正在运行的进程的行为。比如,用户可以挂起一个进程,等一会儿再继续执行该进程。shell将记录所有启动的进程情况,在每个进程过程中,用户可以任意地挂起进程或重新启动进程。作业控制是许多shell(包括bash和tcsh)的一个特性,使用户能在多个独立作业间进行切换。Linux进程管理(补充)一般而言,进程与作业控制相关联时,才被称为作业。在大多数情况下,用户在同一时间只运行一个作业,即它们最后向shell键入的命令。但是使用作业控制,用户可以同时运行多个作业,并在需要时在这些作业间进行切换。这会有什么用途呢?例如,当用户编辑一个文本文件,并需要中止编辑做其他事情时,利用作业控制,用户可以让编辑器暂时挂起,返回shell提示符开始做其他的事情。其他事情做完以后,用户可以重新启动挂起的编辑器,返回到刚才中止的地方,就象用户从来没有离开编辑器一样。这只是一个例子,作业控制还有许多其他实际的用途。Linux进程管理(补充)进程的类型Linux操作系统包括三种不同类型的进程,每种进程都有自己的特点和属性。三种进程各有各的作用,使用场合也有所不同。交互进程——由一个shell启动的进程。交互进程既可以在前台运行,也可以在后台运行。批处理进程——这种进程和终端没有联系,是一个进程序列。监控进程(也称守护进程daemon)——Linux系统启动时启动的进程,并在后台运行。Linux进程管理(补充)2进程控制块

进程组成正文段存放进程要运行的程序,描述了进程要完成的功能用户数据段存放正文段在执行时所需要的数据和工作区系统数据段——进程控制块存放了进程的控制信息,其中最重要的数据结构是task_struct。Linux进程管理(补充)进程控制块

进程控制块是Linux系统最复杂的数据结构之一。

Linux在内存空间中开辟了一个专门区域存放所有进程的进程控制块。系统初始化后,建立第一个task_struct数据结构INIT_TASK。新进程创建时,系统从内存分配新task_struct,占据1680个字节。Linux进程管理(补充)进程状态和标志进程标识进程控制块Linux进程管理(补充)进程的族亲关系进程控制块Linux进程管理(补充)进程间链接信息进程调度信息进程控制块Linux进程管理(补充)进程的时间信息

进程的虚存信息进程控制块Linux进程管理(补充)进程的文件信息

与进程间通信有关的信息进程控制块Linux进程管理(补充)其它信息进程控制块Linux进程管理(补充)3进程状态R:处于可运行状态;S:处于休眠状态;T:处于终止运行状态;D:设备IO;Z:处于僵尸状态;Linux进程管理(补充)进程状态——R运行态该状态实际包含了执行和就绪两种状态。进程到底是正在运行还是处于就绪状态准备运行,要靠当前是否占有CPU资源来区分。每一个CPU都有一个current指针,指向当前运行于这个CPU的进程,系统就依靠这个指针来区分进程的正在运行和运行就绪状态。所有处于运行状态的进程组成可运行队列,调度程序每次选择适当的时机,按照某种规则,从这个队列中选中一个进程投入执行。这个队列中的进程总是动态变化的,在其中的进程会由于某种原因(比如等待某种事件的发生)而退出可运行队列,而其他进程也会在拥有除CPU之外的全部资源之后进入这个队列。Linux进程管理(补充)进程状态——S休眠态(等待态)linux系统把休眠态进一步细化为:可中断的等待态、不可中断的等待态、独占态。可中断的等待态可以被某个信息唤醒而进入就绪状态等待调度;不可中断等待状态的进程是因为硬件资源无法满足,不能被信号唤醒,必须等待所等待的资源得到之后由特定的方式唤醒;独占状态位于等待队列中,当等待的事件发生时,只有处于这种状态的进程被唤醒,其他处于可中断或不可中断等待状态的进程则继续等待。Linux进程管理(补充)进程状态——T暂停态处于暂停态的进程一般都是由运行状态转换而来,等待某种特殊的处理。比如处于调试跟踪的程序,每执行到一个断点,就转入暂停状态,等待新的输入信号。Linux进程管理(补充)进程状态——Z僵尸态由于某种原因进程被终止,这个进程所拥有的内存、文件等资源全部释放之后,还保存着PCB信息,这种占有PCB但已无法运行的进程就处于僵尸态。一个处于执行状态的进程调用退出函数exit之后,进程就会进入僵尸状态。僵态进程的父进程通过PCB了解到该进程所处的状态后,采取相应的处理措施,回收PCB,这个进程就完成了它的使命,从僵死走向彻底消亡。一直处于僵态的进程通常是由挂起或出现故障的父进程引起的。我们应尽量通过发送SIGHUP信号或其他信号确保不挂起任何父进程。如果父进程已被挂起,应尽量终止它。如果父进程在清理完子进程之前即被终止的话,init程序将成为其父进程,并将对其进行适当的处理,以便将其从进程表中清除。Linux进程管理(补充)进程状态——D不可中断的休眠状态常用于设备I/O,内核程序正忙于该进程的某些I/O操作,不能被中断。唯一出现该状态的情况也许是运行NFSmount命令时出现网络故障时。Linux进程管理(补充)进程状态之间的转换就绪暂停休眠执行僵尸事件发生,唤醒时间片耗尽调度跟踪等待事件,睡眠跟踪结束exit回收PCB进程消亡分配资源创建进程Linux进程管理(补充)4进程的控制4.1进程的创建4.2进程的启动4.3进程的监视4.4进程优先级设置4.5进程挂起和激活4.6信号控制进程4.7终止进程Linux进程管理(补充)4.1进程的创建初始进程创建系统启动时创建第一个进程(0号进程),此时,系统只有这一个进程:初始化进程,运行在核心态初始化结束时,初始进程启动一个核心进程:init进程,也称为1号进程,然后执行空闲循环。系统空闲时,调度程序运行这个空闲进程。这个空闲进程的task_struct是唯一一个不是动态分配而是在核心连接时静态定义的,为了不至于混淆,叫做init_task。Linux进程管理(补充)

子进程创建过程为新进程分配任务结构体内存空间把父进程任务结构体拷贝到子进程任务结构体为新进程在其虚拟内存建立内核堆栈对子进程任务结构体中部分进行初始化设置把父进程有关信息拷贝给子进程,建立共享关系把子进程的counter设为父进程counter值的一半把子进程加入到可运行队列中结束do_fork()函数返回PID值Linux进程管理(补充)进程由do_fork()函数创建

intdo_fork(unsignedlongclone_flags,unsignedlongusp,structpt_regs*regs){

为新进程申请PCB空间; if(申请不到)返回错误,退出;

为新进程申请核心堆栈; if(核心堆栈申请不到) 返回错误,退出;

为新进程在Task向量表中找到空闲位置;/*复制父进程currentPCB中的信息,继承资源*/;

p=current;Linux进程管理(补充)/*为防止信号、定时中断误唤醒未创建完毕的进程,将子进程的状态设成不可中断的*/

p->state=TASK_UNINTERRUPTIBLE;/*跟踪状态和超级用户特权是没有继承性的,因为在root用户为普通用户创建进程时,出于安全考虑这个普通用户的进程不允许拥有超级用户特权。*/

p->flags&=~(PF_PTRACED|PF_TRACESYS|PF_SUPERPRIV);

/*将进程标志设成初建,但暂时不能运行,在进程第一次获得CPU时,内核将根据此标志进行一定操作*/

p->flags|=PF_FORKNOEXEC;Linux进程管理(补充)开始Task_struct的初始化工作,如初始化进程时钟、信号、时间等数据;继承父进程所有资源:

拷贝父进程当前打开的文件;

拷贝父进程在VFS的位置;

拷贝父进程的信号量;

拷贝父进程运行的内存;

拷贝父进程的线程; 初始化工作结束,父进程将其将其唤醒,挂入running队列中,返回子进程的pid;}Linux进程管理(补充)Linux进程管理(补充)4.2进程的启动键入需要运行的程序的程序名,执行一个程序,其实也就是启动了一个进程。在Linux系统中每个进程都具有一个进程号,用于系统识别和调度进程。启动一个进程有两个主要途径:手工启动调度启动:事先进行设置,根据用户要求自行启动。主要介绍手工启动。Linux进程管理(补充)手工启动——前台启动这是手工启动一个进程的常用方式。例如:用户键入一个命令“ls–l”,这就已经启动了一个进程,而且是一个前台的进程。这时候系统其实已经处于一个多进程状态。问题1:用户在键入“ls–l”命令以后,使用“ps–x”查看,能不能看到ls进程?问题2:如何才能看到一个前台进程?Linux进程管理(补充)手工启动——后台启动直接从后台手工启动一个进程用得比较少一些,除非是该进程甚为耗时,且用户也不急着需要结果的时候。假设用户要启动一个需要长时间运行的格式化文本文件的进程。为了不使整个shell在格式化过程中都处于“瘫痪”状态,从后台启动这个进程是明智的选择。[例1]$find/-namefox.jpg&[1]4513$键入命令以后,出现一个数字,这个数字就是该进程的编号,也称为PID,然后就出现了提示符。用户可以继续其他工作。Linux进程管理(补充)多个进程同时启动的例子例如:manps.1|grepkill|more这时候实际上是同时启动了三个进程。请注意是同时启动的,所有放在管道两边的进程都将被同时启动,它们都是当前shell的子程序,互相之间可以称为兄弟进程。Linux进程管理(补充)4.3进程的监视如果我们能够在任何给定时间查看系统正在干什么,我们就能够判断出自己运行的进程对系统性能产生的影响,也能发现其它用户是否给系统造成了严重的负担。Linux系统具有高度的透明性,是一个多进程系统,系统管理员能操控每个进程。如果某个进程占用了过多的系统资源,可将其杀死,如果系统的负荷状态看上去很好,就可以启动更多的进程。经常需要对这些进程进行一些调配和管理;而要进行管理,首先就要知道现在的进程情况:究竟有哪些进程?进程情况如何?等等。所以需要进程查看方面的工作。对任何一位系统管理员,在其日常使用的所有命令中,ps可能是其中功能使用最广的命令。Linux进程管理(补充)ps命令ps简介要对进程进行监测和控制,首先必须了解当前进程的情况,也就是需要查看当前进程,而ps命令就是最基本同时也是非常强大的进程查看命令。使用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵死、哪些进程占用了过多的资源等等。总之,该命令的输出结果相当于在发出命令的那一刻对系统所作的快照,大部分信息都是可以通过执行该命令得到的。Linux进程管理(补充)ps命令及其参数ps命令最常用的还是用于监控后台进程的工作情况,因为后台进程是不和屏幕键盘这些标准输入/输出设备进行通信的,所以如果需要检测其情况,便可以使用ps命令了。该命令语法格式如下:ps[-][选项]Linux进程管理(补充)ps的参数说明ps提供了很多的选项参数,常用的有以下几个:l:长格式输出;u:按用户名和启动时间的顺序来显示进程;j:用任务格式来显示进程;f:用树形格式来显示进程;a:显示所有用户的所有进程(包括其它用户);x:显示无控制终端的进程;r:显示运行中的进程;我们常用的选项是组合是aux或lax,还有参数f的应用;Linux进程管理(补充)常用ps命令参数一般的用户只需掌握一些最常用的命令参数就可以了。最常用的三个参数是u、a、x,下面将通过例子来说明其具体用法。Linux进程管理(补充)[例]以root身份登录系统,查看当前进程状况$psPIDTTYTIMECOMMAND5800ttyp000:00:00bash5835ttyp000:00:00ps可以看到,显示的项目共分为四项,依次为PID(进程ID)、TTY(终端名称)、TIME(进程执行时间)、COMMAND(该进程的命令行输入)。PID(进程ID):是用来跟踪进程的唯一整型数,按数字次序分配,系统最先执行的进程是init,它的PID总是1。PID的上限是32767,之后的进程PID为1。Linux进程管理(补充)u选项来查看所有控制终端进程的所有者及其他一些详细信息$psuUSERPID%CPU%MEMVSZRSSTTYSTATSTARTTIMECOMMANDroot50000.00.011480tty1SAug170:00logintest58000.00.418921040tty1S14:130:00-bashtest58360.00.32528856pts/7R14:140:00psuLinux进程管理(补充)输出的解释USER:进程的属主;PID:进程的ID;%CPU:进程占用的CPU百分比;%MEM:占用内存的百分比;VSZ:进程虚拟大小;RSS:驻留中页的数量;TTY:终端IDLinux进程管理(补充)STAT:进程状态R:处于可运行状态;S:处于休眠状态;T:处于终止运行状态;D:设备IO;Z:处于僵尸状态;START:启动进程的时间;TIME:进程消耗CPU的时间;COMMAND:命令的名称和参数;Linux进程管理(补充)test58000.00.418921040tty1S14:130:00-bash

解释在bash进程前面有条横线,意味着该进程便是用户的登录shell,所以对于一个登录用户来说带短横线的进程只有一个。Linux进程管理(补充)test58360.00.32528856pts/7R14:140:00psu

解释最后一行最后一个字段上可以见到命令:“psu”,正是该命令请求的进程产生的输出。从中可以看出:该进程由用户test执行,PID号为5836,占用的CPU时间百分比为0,物理内存百分比为0.3%,虚拟大小是2528千字节,驻留集大小(或使用的物理内存数量)为856;该命令是从另一台计算机上的伪终端处发出的,该伪终端的标识符为pts/7;该进程的开始时间是14:14(一旦某个进程的存活时间超过24小时,该输出将简单的列出进程启动的日期)。在快照截取时,该进程占用的CPU时间为0,显然,在此之前已经使用了一些CPU时间,但在“psu”命令执行时,进程已经完成了。Linux进程管理(补充)x选项使用选项u看到了所有控制终端的进程;但是对于其他那些没有控制终端的进程还是没有观察到,所以这时就需要使用x选项。使用x选项可以观察到所有的进程情况。Linux进程管理(补充)[例]使用x选项的例子$psxPIDTTYSTATTIMECOMMAND5800?S0:00-bash5813?S0:00–bash………可以发现突然一下子就多出了许多进程。这些多出来的进程就是没有控制终端(?)的进程。Linux进程管理(补充)a选项前面看到的所有进程都是用户自己的。其实还有许多其他用户在使用着系统,自然也就对应着其他的很多进程。如果想对这些进程有所了解,可以使用a选项来查看当前系统所有用户的所有进程。经常使用的是aux组合选项,这可以显示最详细的进程情况。Linux进程管理(补充)[例]$psauxUSERPID%CPU%MEMVSZRSSTTYSTATSTARTTIMECOMMANDroot10.00.0113664?SNov250:02init[3]root20.00.000?SWNov250:00[kflushd]root30.00.000?SWNov250:03[kupdate]root1730.00.01324200?SNov250:00syslogdroot1810.00.014200?SWNov250:00[klogd]daemon1910.00.11160312?SNov250:00/usr/sbin/atdroot2010.00.11348492?SNov250:00crondroot2120.00.0129268?SNov250:00inetdLinux进程管理(补充)在显示的最前面是其他用户的进程情况,可以看到有root、daemon等用户以及他们所启动的进程。主要系统进程的PID均小于10。W指的是没有驻留页面的进程。Linux进程管理(补充)ps应用举例实例一:psaux最常用$ps-aux|more可以用|管道和more连接起来分页查看;

$ps-aux>ps001.txt

$moreps001.txt这里是把所有进程显示出来,并输出到ps001.txt文件,然后再通过more来分页查看;Linux进程管理(补充)实例二:和grep结合,提取指定程序的进程[root@localhost~]#psaux|grephttpd

root41870.01.32423610272?Ss11:550:00/usr/sbin/httpd

apache41890.00.6243684940?S11:550:00/usr/sbin/httpd

apache41900.00.6243684932?S11:550:00/usr/sbin/httpd

apache41910.00.6243684932?S11:550:00/usr/sbin/httpd

apache41920.00.6243684932?S11:550:00/usr/sbin/httpd

apache41930.00.6243684932?S11:550:00/usr/sbin/httpdLinux进程管理(补充)4.4进程优先级设置优先级如果您还记得ps这个指令的话,那么来看一看加入ps-l这个功能所显示出来的信息:[root@test/root]#ps–lFSUIDPIDPPIDCPRINIADDRSZWCHANTTYTIMECMD100S0562456060700-608wait4pts/000:00:00bash000R0694456240760-769-pts/000:00:00psLinux进程管理(补充)FSUIDPIDPPIDCPRINIADDRSZWCHANTTYTIMECMD注意看到上面那些信息:PRI代表这个程序“可被执行的优先级”,越小越早被执行!

NI代表这个程序的nice值。

NI就是nice值,什么是nice值呢?就是“系统可被执行的修正数值”,如前面所说的,由于PRI是越小越快被执行,而由于我们加入nice值之后,将使得PRI变为:PRI(new)=PRI(old)+nice

当nice值为负值的时候,那么该程序将会提前被执行!就是变的优先处理!Linux进程管理(补充)另外,需要注意的是:“只有具有root权限的身份者,可以将程序的nice调为负值”一般而言,我们可以这样说:一般使用者可用nice值:0~19root管理员可用nice值:-20~19Linux进程管理(补充)nice命令——改变优先级nice命令用于指定命令的优先级。nice值是-20到20之间的数,大部分进程的nice值为0。默认情况下,nice命令会使niceness值增加10,但可以指定增量值,只有超级用户有权通过该命令减少进程的niceness。其使用格式是:nice[-<增量值>]<命令>$nicexload&$nice–5top$nice–12find/-name“abc”–print>123#nice–5/usr/local/sbin/checksystemLinux进程管理(补充)renice利用renice命令可以在命令执行时调整其优先权。其格式如下:renice<优先级><PID>注:(1)用户只能对自己所有的进程使用renice命令。(2)root用户可以在任何进程上使用renice命令。(3)只有root用户才能提高进程的优先权。Linux进程管理(补充)nice和renice的区别nice命令要求指定优先级的变化量,而renice命令要求指定进程最终的优先级。nice要求在数值之前用短横连接,负数需要两短横,而renice命令不用短横,除非是负数。Linux进程管理(补充)4.5进程挂起和激活请输入以下命令:$man

date&[1]586

其中,[1]表示作业号,586是后台进程的PID号。Linux进程管理(补充)进程挂起bash超过其它shell的一个特性就是为你提供了更强的控制进程的能力。这种作业控制特性允许你挂起正在运行的进程,可以把进程从后台移到前台或者反过来—从前台移到后台。一个特殊的字符(〈Ctrl〉z),它可以将当前正在运行的子进程挂起,并且告诉shell不用等待子进程终止。当一个子进程被挂起时,屏幕上就显示出该子进程的作业号和命令名,形式如下所示:[1]+Stoppedcommand

其中,command表示被挂起进程所对应的命令。Linux进程管理(补充)例如,你当前正在运行命令:$manls|more在没有全部显示完之前,按下〈Ctrl〉z键,你在屏幕上会看到:[1]+Stoppedmanls|moreLinux进程管理(补充)后台激活进程一旦你挂起一个进程,你就可以用bg命令在后台运行这个进程:$bg[job_ID...]其中,jod_ID是被挂起进程的作业号。例如:$

bg1Linux进程管理(补充)前台激活进程用fg命令,你可以把一个在后台运行的进程调度到前台运行:$fg[job_ID...]例如:$fg

大多数情况下,只有一项任务在后台运行,所以fg后可以不带任务号。$fg1$fg%1

某些shell要求在任务号前加%,在bash中,这是可选的。Linux进程管理(补充)$fg%grep

用户也可指定命令名,但这种方法只在运行的多个任务命令名各不相同时才可使用。$fg%?dmesg

有多个相同命令名的任务运行时,可以使用?Linux进程管理(补充)jobs命令、sleep命令jobs命令可以让你看到正在运行的所有子进程的状态:$jobs[job_ID]例如:$jobs[1]+stoppedmanls|more你可以使用sleep命令让当前进程睡眠若干秒,该秒数由参数指定。Linux进程管理(补充)[例]用户正在使用Emacs,突然需要查看系统进程情况。首先使用组合键(〈Ctrl〉z),将Emacs进程挂起,然后使用bg命令将其在后台启动,这样就得到了前台的操作控制权,$bgemacs接着键入“ps–x”查看进程情况。

$ps–x查看完毕后,使用fg命令将Emacs带回前台运行即可。

$fgemacsLinux进程管理(补充)练习有三个锁定的程序,运行psux显示如下信息:USERPID%CPU%MEMVSZRSSTTYSTATSTARTTIMECOMMANDcbuchek6920.01.239081636?S08:590:04smbd–Dcbuchek7280.00.71760996pts/1S09:580:00–bashcbuchek8930.00.72664952pts/1R13:160:00psuxbooch1446399.90.7720220p2R19:238:41./a.outbooch144640.00.000p2Z19:230:00(a.out<zombie>)这些进程的PID分别是什么?这些进程的状态如何?Linux进程管理(补充)4.6信号控制进程信号的作用使用信号,可以对系统上正在运行的进程或处于睡眠状态的进程进行控制。使用信号,用户可以通知进程放弃当前从事的任务该作其它事,或重新读取当前正在运行的文件或进程。Linux进程管理(补充)信号的产生信号是进程之间通讯的一种方式,使某个进程挂起或唤醒某个进程。信号可以发给一个或多个进程,可以是:由某个进程发出,并不是系统中每个进程都可以向所有其他进程发送信号,只有核心和超级用户具有此权限。普通进程只能向具有相同uid和gid的进程或者在同一进程组中的进程发送信号。可以由键盘中断产生。可以是由shell程序向其子进程发送任务控制命令时产生。进程在某些系统错误(如对虚拟内存的非法存取、被0除等)环境下也会有信号产生。Linux进程管理(补充)常用的信号及用途可以用命令kill–l来获得信号的名称和序号的完整列表。#kill-l1)SIGHUP2)SIGINT3)SIGQUIT4)SIGILL5)SIGTRAP6)SIGABRT7)SIGBUS8)SIGFPE9)SIGKILL10)SIGUSR111)SIGSEGV12)SIGUSR213)SIGPIPE14)SIGALRM15)SIGTERM17)SIGCHLD18)SIGCONT19)SIGSTOP20)SIGTSTP21)SIGTTIN22)SIGTTOU23)SIGURG24)SIGXCPU25)SIGXFSZ26)SIGVTALRM27)SIGPROF28)SIGWINCH29)SIGIO30)SIGPWR31)SIGSYS32)SIGRTMIN…Linux进程管理(补充)信号的个数受处理器字长的限制。因为内核用一个字代表所有的信号,因此字的位数就是信号种类的数目。32位的平台最多信号种类为32种,64位平台就是64种。Linux进程管理(补充)常见的信号及用途SIGHUP(信号1):挂起信号。当你退出系统时,操作系统就发送hangup(挂起)信号给shell的各子进程;向daemon进程发送SIGHUP将使之重新初始化,例向init发送SIGHUP信号可使其重新读取inittab文件,向internet超级服务进程(inetd)发送SIGHUP信号会使其重新扫描控制器文件/etc/inetd.conf)。SIGINT(信号2):键盘中断信号。〈Del〉或〈Ctrl+C〉键通常被配置为发送中断信号,它终止当前进程。SIGQUIT(信号3):键盘退出信号。〈Ctrl+\〉组合键向进程发送quit(退出)信号,通常它导致进程的终止,并创建一个转储文件。SIGFPE(信号8):浮点溢出信号。Linux进程管理(补充)SIGKILL(信号9):杀死进程信号。SIGALRM(信号14):进程定时器到期,发送的信号。SIGTERM(信号15):终止信号(kill命令默认发出的信号)SIGCHLD(信号17):子进程停止或结束信号。SIGSTOP(信号19):来自键盘或调试程序停止执行的信号。SIGTSTP(信号20):使进程信号挂起,并返回到父shell中。〈Ctrl+Z〉组合键向进程发送挂起信号Linux进程管理(补充)发送信号可以用kill命令向进程发送信号。当接收到特定的信号时,程序可设定一个要执行的处理器。该处理器也称信号陷阱。实际处理过程也称信号捕捉。程序也可以通知内核程序它将忽略某个特定信号。如果某个信号未被捕获或忽略,则该进程接收到它时执行默认操作。Linux进程管理(补充)kill命令的语法格式kill命令的语法格式很简单,大致有以下两种方式:kill[-s信号|-p][-a]进程号...kill-l[信号]-s指定需要送出的信号。既可以是信号名也可以对应数字。-p指定kill命令只是显示进程的pid,并不真正送出信号。-l显示信号名称列表,这也可以在/usr/include/linux/signal.h文件中找到。Linux进程管理(补充)4.7终止进程终止进程的原因很多,或许是该进程占用的CPU时间过多;或许是该进程已经挂死。总之这种情况是经常发生的。当需要中断一个前台进程的时候,通常是使用组合键;但是对于一个后台进程恐怕就不是一个组合键所能解决的了,这时就必须求助于kill命令。该命令可以终止后台进程。kill命令是通过向进程发送指定的信号来结束进程的。如果没有指定发送信号,那么默认值为TERM信号。TE

温馨提示

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

评论

0/150

提交评论