版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、父进程和子进程子进程是父进程的复制品Unix/linux系统中的进程创建是这样的,理解起来有点绕。父进程先执行fork。系统调用,这个调用的结果是系统中多出了一个跟父 进程内容完全一样的进程,这个新进程被称为于进程,当然该进程的PCB 中父进程指针是指向第一个进程的。前后两个进程各自有自己的地址空间,形式上有点像把一个文件拷贝了一 个副本。虽然资源也相互独立,但拷贝时父进程执行过程巳生成的数据, 于进程也拷了一份。说简单点像一个执行到半路的程序突然在系统中多出 了一个挛生兄弟,什么都跟自己一样,但要管自己叫老爸。当然这样的简单复制本身是没什么用处的。要让它发挥作用,还需要再执 行cxcc(B)
2、系统调用,这个调用可以让当前进程转而执行另一个可执行代 码(一个新的程序)。简单的说进程本来在执行A程序,一旦执行到这个 调用,就转而开始执行B程序。至此,父子两进程就变的不一样了,但不管它们各自执行的什么代码,其 父子关系不会改变,在父进程中可以使用于进程的进程1D (在执行fork。时的返回值中得到)来中止于进程的执行。当然于进程也可以因为自己的执行程序结束而终止执行父进程和于进程先后执行的问题,是这样的,在fork之后,是父进程先执 行,然后一个时间片到达之后就是于进程再执行了。每一个进程都有一个父进程,当进程终止或者结束的时候,都会给父进程 发送一个S1GCHLD信号,系统默认是父进程
3、忽略这个信号,如果父进程 希望被告知其子进程的这种状态改变,则应该捕获这个信号,捕捉函数一 般是wait函数来取得于进程1D和子进程状态。对于键盘上的CH+按键的操作,一般是产生一个信号,然后进程捕捉这个 信号。另外当然我们可以直接使用这些信号,通过kill命令,把信号发给 相应的其他进程。wait函数是父进程等待于进程结束,也就是说当于进程结束的时候会发送给父进程一个信号S1GCH1D,这时候父进程通过wait函数接收到这个信 号,这时候父进程就知道于进程结束了。这个正好用在shell解析器的编写 里面,shell解析器作为父进程,而命令行命令作为于进程,当于进程结束 的时候就会告诉父进程,
4、这时候父进程就可以提示输入下一个命令了。一个进程只能为他自己或者他的子进程设置进程组1D,在他的子进程调用 了 exec函数之后,就不能再改变该子进程的进程组1D 了 oLinux进程管理对于电脑使用的玩家的常用软件,然后我就学习及深入的 研究Linux进程管理,在这里和大家一起探讨Linux进程管理的使用方法, 希望对大家有用。程序是为了完成某种任务而设计的软件,比如OpenOffice 是程序。什么是进程呢?进程就是运行中的程序。一个运行着的程序,可能有 多个进程。比如LiimxSir.Org所用的WWW服务器是apache服务器,当 管理员启动服务后,可能会有好多人来访问,也就是说许多用
5、户来同时请 求httpd服务,apache服务器将会创建有多个httpd进程来对其进行服务。1、程序和进程;进程分类;进程一般分为交互进程、批处理进程和守护进程三类。值得一提的是 守护进程总是活跃的,一般是后台运行,守护进程一般是由系统在开机时 通过脚本自动激活启动或超级管理用户mot来启动。比如在Fedora或Rudhat中,我们可以定义httpd服务器的启动脚本的 运行级别,此文件位于/etc/init.d目录下,文件名是httpd, /etc/init.d/httpd 就是httpd服务器的守护程序,当把它的运行级别设置为3和5时,当系统启动时,它会跟着启动。rootlocalhost
6、chkconfig -level 35 httpd on 由于守护进程是一直运 行着的,所以它所处的状态是等待请求处理任务。比如,我们是不是访问 LinuxSir.Org , LinuxSir.Org的httpd服务器都在运行,等待着用户来访问, 也就是等待着任务处理。1.2 进程的属性;进程1D(P1D):是唯一的数值,用来区分进程;父进程和父进程的 1D(PP1D);启动进程的用户1D(U1D)和所归属的组(G1D);进程状态:状态分 为运行R、休眠S、僵尸Z;进程执行的优先级;进程所连接的终端名;进程资源占用:比如占用资源 大小(内存、CPU占用量);1.3 父进程和于进程;他们的关系是
7、管理和被管理的关系,当父进程终止时,子进程也随之 而终止。但于进程终止,父进程并不一定终止。比如httpd服务器运行时, 我们可以杀掉其子进程,父进程并不会因为于进程的终止而终止。在Linux 进程管理中,当我们发现占用资源过多,或无法控制的进程时,应该杀死 它,以保护系统的稳定安全运行;2、Linux进程管理;对于Linux进程管理,是通过Linux进程管理工具实现的,比如ps、 kill、pgrrp 等工具;ps监视进程工具;ps为我们提供了进程的一次性的查看,它所提供的 查看结果并不动态连续的;如果想对进程时间监控,应该用top工具;ps的 参数说明;ps提供了很多的选项参数,常用的有以
8、下几个;1长格式输出;u按用户名和启动时间的顺序来显示进程;J用任务格式来显示进程;f用树形格式来显示进程;a显示所有用户的所有进程(包括其它用户);x显示无控制终端的进程;r显示运行中的进程;ww避免详细参数被截断;我们常用的选项是组合是aux或lax,还有参数f的应用;ps aux或lax输出的解释;USER进程的属主;P1D进程的ID;PP1D父进程;%CPU进程占用的CPU百分比;%MEM占用内存的百分比;N1进程的NICE值,数值大,表示较少占用CPU时间;VSZ进程虚拟大小;RSS驻留中页的数量;WCHANTTY终端IPSTAT进程状态D Uninterruptible sleep
9、 (usually 1()R正在运行可中在队列中可过行的;S处于休眠状态;T停止或被追踪;W进入内存交换(从内核2.6开始无效);X死掉的进程(从来没见过);Z僵尸进程;N优先级较低的进程L有些页被锁进内存;s进程的领导者(在它之下有于进程);1 is multi-threaded (using CL()NE_THREAD, like NPTL pthreads do)+位于后台的进程组;WCHAN正在等待的进程资源;START启动进程的时间;TIME进程消耗CPU的时间;COMMAND命令的名称和参数;2.1.2 ps 应用举例;实例一:ps aux 最常用rootlocalhost # p
10、s -aux| more可以用|管道和more连接起来分页查看;rootlocalhost -# ps -aux > N 优先级较低的进程L有些页被锁进内存;s进程的领导者(在它之下有子进程);1 is multi-threaded (using CL()NE_THREAf), like NPTL pthreads do)+位于后台的进程组;WCHAN正在等待的进程资源;START启动进程的时间;TIME进程消耗CPU的时间;COMMAND命令的名称和参数;2.1.2 ps 应用举例;实例一:ps aux 最常用rootlocalhost # ps -aux| more可以用|管道和mo
11、re连接起来分页查看;rootlocalhost # ps -aux >ps()()l.txtrootlocalhost more psOOl.txt这里是把所有进程显示出来,并输出到ps001.txt文件,然后再通过 more来分页查看;实例二:和grep结合,提取指定程序的进程;rootlocalhost ps aux | grep httpdroot 4187 ().0 1.3 24236 10272 ? Ss 11:55 0:0() /usr/sbin/httpdapache 4189 0.() 0.6 24368 4940 ?S 11:55 ():0() /usr/sbin/h
12、ttpdapache 4190 0.() 0.6 24368 4932 ?S 11:55 0:0() /usr/sbin/httpdapache 4191 0.() 0.6 24368 4932 ?S 11:55 ():0() /usr/sbin/httpdapache 4192 ().0 0.6 24368 4932 ?S 11:55 ():0() /usr/sbin/httpdapache 4193 ().0 0.6 24368 4932 ?S 11:55 ():0() /usr/sbin/httpdapache 4194 0.() 0.6 24368 4932 ?S 11:55 0:0(
13、) /usr/sbin/httpdapache 4195 0.() 0.6 24368 4932 ?S 11:55 0:0() /usr/sbin/httpdapache 4196 ().0 0.6 24368 4932 ?S 11:55 ():0() /usr/sbin/httpdroot 4480 ().0 ().0 5160 708 pts/3 R+ 12:20 0:0() grep httpd实例二:父进和于进程的关系友好判断的例子rootlocalhost ps auxf | grep httpdroot 4484 0.() 0.0 5160 704 pts/3 S+ 12:21 0
14、:0() _ grep httpdroot 4187 ().0 1.3 24236 10272 ? Ss 11:55 0:0() /usr/sbin/httpdapache 4189 ().0 0.6 24368 4940 ?S 11:55 0:()()_ /usr/sbin/httpdapache 4190 ().0 0.6 24368 4932 ?S 11:55 0:0() _ /usr/sbin/httpdapache 4191 0.0 0.6 24368 4932 ?S 11:55 ():0() _ /usr/sbin/httpdapache 4192 0.00.6 24368 493
15、2 ?S 11:55 ():0() _ /usr/sbin/httpdapache 4193 ().0 ().6 24368 4932 ?S 11:55 0:0() _ /usr/sbin/httpdapache 4194 0.() 0.6 24368 4932 ?S 11:55 0:0() _ /usr/sbin/httpdapache 4195 0.() 0.6 24368 4932 ?S 11:55 ():00 _ /usr/sbin/httpdapache 4196 ().0 0.6 24368 4932 ?S 11:55 ():0() _ /usr/sbin/httpd这里用到丁 f
16、参数;父与子关系一目了然;2.2 pgreppgrep是通过程序的名字来查询进程的工具,一般是用来判断 程序是否正在运行。在服务器的配置和管理中,这个工具常被应用,简单 明了;用法:#ps参数选项 程序名常用参数- 1列出程序名和进程1D;- o进程起始的1P;- n进程终止的1D;举例:rootlocalhost # pgrcp -lo httpd4557 httpdrootlocalhost pgrcp -In httpd4566 httpdrootlocalhost pgrcp -1 httpd4557 httpd4560 httpd4561 httpd4562 httpd4563 ht
17、tpd4564 httpd4565 httpd4566 httpdrootIocalhost pgrcp httpd455745604561456245634564456545663、Linux进程管理终止进程的工具kill、killalK pkilK xkill;终止一个 进程或终止一个正在运行的程序,一般是通过kill、killalK pkilK xkill等 进行。比如一个程序巳经死掉,但又不能退出,这时就应该考虑应用这些 工具。另外应用的场合就是在服务器管理中,在不涉及数据库服务器程序 的父进程的停止运行,也可以用这些工具来终止。为什么数据库服务器的 父进程不能用这些工具杀死呢?原因很
18、简单,这些工具在强行终止数据库 服务器时,会让数据库产生更多的文件碎片,当碎片达到一定程度的时候, 数据库就有崩溃的危险。比如mysql服务器最好是按其正常的程序关闭, 而不是用pkill mysqld或killall mysqld这样危险的动作;当然对于占用资源 过多的数据库于进程,我们应该用kill来杀掉。3.1 killkill的应用是和ps或pgrcp命令结合在一起使用的;kill的用法:kill 信 号代码进程1D注:信号代码可以省略;我们常用的信号代码是-9 ,表示 强制终止;举例:rootlocalhost ps auxf | grep httpdroot 4939 ().0 (
19、).0 5160 708 pts/3 S+ 13:10 0:00 _ grep httpdroot 4830 ().1 1.3 24232 10272 ? Ss 13:02 0:0() /usr/sbin/httpdapache 4833 0.0 0.6 24364 4932 ? S 13:02 ():0() _ /usr/sbin/httpdapache 4834 0.() 0.6 24364 4928 ? S 13:02 0:0() _ /usr/sbin/httpdapache 4835 0.() 0.6 24364 4928 ? S 13:02 ():00 _ /usr/sbin/ht
20、tpdapache 4836 ().0 0.6 24364 4928 ? S 13:02 0:0()_ / usr/sbin/httpdapache 4837 0.0 0.6 24364 4928 ? S 13:02 0:0() _ /usr/sbin/httpdapache 4838 0.0 0.6 24364 4928 ? S 13:02 ():0() _ /usr/sbin/httpdapache 4839 0.() 0.6 24364 4928 ? S 13:02 ():0() _ /usr/sbin/httpdapache 4840 ().0 0.6 24364 4928 ? S 1
21、3:02 ():0() _ /usr/sbin/httpd我们查看httpd服务器的进程;您也可以用pgrep -1 httpd来查看;我们 看上面例子中的第二列,就是进程P1D的列,其中4830是httpd服务器的 父Linux进程管理,从4833-4840的进程都是它4830的子进程;如果我们杀 掉父进程4830的话,其下的子进程也会跟着死掉;rootlocalhost -# kill 4840 注:杀掉 4840 这个进程;rootlocalhost # ps -auxf Igrcp httpd 注:查看一下会有什么结果? 是不是httpd服务器仍在运行?rootlocalhost -#
22、 kill 483()注:杀掉 httpd 的父进程;rootlocalhost # ps -aux | grep httpd 注:查看 httpd 的其它子进程是 否存在,httpd服务器是否仍在运行?对于僵尸进程,可以用kill -9来强制终止退出;比如一个程序巳经彻底 死掉,如果kin不加信号强度是没有办法退出,最好的办法就是加信号强 度-9 ,后面要接杀父进程;比如;rootlocalhost # ps aux | grep gaimbcinan 5031 9.0 2.3 104996 17484 ? S 13:23 ():01 gaimroot 5036 ().0 ().0 5160
23、 724 pts/3 S+ 13:24 0:0() grep gaimnjj rootlocalhost # pgrep -1 gaim5031 gaimrootlocalhost kill -9 50313.2 killallkillall通过程序的名字,直接杀死所有进程,咱们简单说一下 就行了。用法:killall正在运行的程序名killall也和ps或pgrcp结合使用, 比较方便;通过ps或pgrcp来查看哪些程序在运行;举例:rootlocalhost bcinan# pgrcp -1 gaim2979 gaimrootlocalhost bcinan# killall gaim3.
24、3 pkillpkill和killall应用方法差不多,也是直接杀死运行中的程序; 如果您想杀掉单个进程,请用kill来杀掉。应用方法:#pkill正在运行的 程序各举例:rootlocalhost bcinan# pgrcp -1 gaim2979 gaimrootlocalhost bcinan# pkill gaim3.4 xkillxkill是在桌面用的杀死图形界面的程序。比如当firefox出现 崩溃不能退出时,点鼠标就能杀死firefox o当xkill运行时出来和个人脑 骨的图标,哪个图形程序崩溃一点就QK 了。如果您想终止xkill ,就按右 键取消;xkill 调用方法:ro
25、Qtlocalhost xkill4、top监视系统任务的工具;和ps相比,top是动态监视系统任务的工具,top输出的结果是连续的;4.1 top命令用法及参数;top调用方法top选择参数参数:- b以批量模式运行,但不能接受命令行输入;- C显示命令行,而不仅仅是命令名;- d N显示两次刷新时间的间隔,比如-d 5,表示两次刷新间隔为5 秒;- i禁止显示空闲进程或僵尸进程;-n NUM显示更新次数,然后退出。比如-n5,表示top更新5次数据就退出;- p Pin仅监视指定进程的1D;P1D是一个数直- q不经任何延时就刷新;- s安全模式运行,禁用一些效互指令;- S累积模式,输出
26、每个进程的总的CPU时间,包括巳死的于进程;交互式命令键位:space立即更新;C切换到命令名显示,或显示整个命令(包括参数);f,F增加显示字段,或删除显示字段;h,?显示有关安全模式及累积模式的帮助信息;k提示输入要杀死的进程ID,目的是用来杀死该进程(默人信号为15)i禁止空闲进程和僵尸进程;1切换到显法负载平均值和正常运行的时间等信息;m切换到内存信息,并以内存占用大小排序;n提示显示的进程数,比如输入3,就在整屏上显示3个进程;o,()改变显示字段的顺序;r把rsicc应用到一个进程,提示输入P1D和runicc的值;s改变两次刷新时间间隔,以秒为单位;t切换到显示进程和CPU状态的
27、信息;A按进程生命大小进行排序,最新进程显示在最前;M按内存占用大小排序,由大到小;N以进程1D大小排序,由大到小;P按CPU占用情况排序,由大到小S切换到累积时间模式;T按时间/累积时间对任务排序;W把当前的配置写到/.tcprc中;4.2 top应用举例;rootlQcalhost # top然后根据前面所说交互命令 按个尝试一下就明白了,比如按M,就按内存占用大小排序;这个例子举不 举都没有必要了。呵。当然您可以把top的输出传到一个文件 中;rootlocalhost top >mytop.txt 然后我们就可以查看 mytop 文件, 以慢慢的分析系统进程状态;5、Linux进
28、程管理的优先级:nice和rcnicc;在Linux操作系统中,进程之间是竞争资源(比如CPU和内存的占用) 关系。这个竞争优劣是通过一个数值来实现的,也就是谦让度。高谦让度 表示Linux进程管理优化级别最低。负值或。表示对高优点级,对其它进 程不嫌让,也就是拥有优先占用系统资源的权利。谦让度的值从-20至IJ 19。目前硬件技术发展极速,在大多情况下,不必设置进程的优先级,除 非在进程失控而疯狂占用资源的情况下,我们有可能来设置一下优先级,但我个人感觉没有太大的必要,在迫不得巳的情况下,我们可以杀掉失控 进程。nice可以在创建进程时,为Linux进程管理指定谦让度的值,进程的 优先级的值
29、是父进程SHELL的优先级的值与我们所指定谦让度的相加和。 所以我们在用nice设置程序的优先级时,所指定数值是一个增量,并不是 优先级的绝对值;nice的应用举例:rootlocalhost *# nice -n 5 gaim &注: 运行gaim程序,并为它指定谦让度增量为5;所以nice的最常用的应用就是:nice -n谦让度的增量值程序reniec是通过进程1D(P1D)来改变谦让度,进而达到更改Linux进程管理的优先级。rcnicc谦让度P1Drenicc所设置的谦让度就是进程的绝对值;看下面的例子;rootlocalhost ps lax | grep gaim4 0 44
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年厦门华厦学院单招职业适应性考试题库含答案详解(b卷)
- 2026年包头职业技术学院单招职业倾向性测试题库及1套完整答案详解
- 2026年内江卫生与健康职业学院单招职业倾向性考试题库及答案详解(夺冠)
- 2026年兰州外语职业学院单招职业适应性考试题库含答案详解(b卷)
- 2026年南阳农业职业学院单招职业适应性考试题库含答案详解(精练)
- 2026年心理健康咨询师资格认证模拟试题
- 2026年船舶驾驶操作证书考试题集含航道与气象因素分析
- 2026年机械工程师考试材料力学及模拟试题集
- 2026年市场营销专业考试题库消费者行为与市场分析题集
- 济南市一中2025-2026学年高二1月学情检测语文试题含答案
- 对青少年使用AI辅助学习情况的调查研究报告
- 核酸标本采集技术课件
- 生物(全国新高考Ⅰ卷)2024年普通高等学校招生全国统一考试生物真题试卷及答案
- T/ZHCA 603-2021化妆品生产企业消毒技术规范
- 鼻眼相关解剖结构
- 触电急救知识培训
- A类业余无线电操作技术能力验证题目题库
- 专题02 20天搞定中考必背1600词(二)-中考英语一轮复习知识清单
- 材料成型工艺基础课件:焊接成形工艺基础
- 银行询证函生成器-正式版2.0
- HG+20231-2014化学工业建设项目试车规范
评论
0/150
提交评论