


下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Linux系统管理员工具包进程管理技巧Linux系统管理员工具包:进程管理技巧2010-11-3014:45本文届转载自网络,仅供个人娱乐参考使用,如有转载请标明出处,若有侵权等后果,本人概不负责!本文章如果无意对他人著作权及相关权利构成侵犯一经权利人要求,本人将立即删除。学习如何获取所需的UNIX进程信息。对于所有的系统管理员来说,了解自己的UNIX系统正在运行的进程是最基本的要求之一。标准的进程列表很有用,但是它所提供的信息格式不正确或者没有包含所需的进程或信息。能从进程列表中选择特定类型的数据将使管理任务更加容易。在本文中,您将了解到如何扩展该进程列表以改善信息的可读性,或者提供在其他地
2、方不易获得的摘要和信息。您还将看到如何跨不同的UNIX平台获取进程信息的标准化的方法。关于本系列通常,UNIX管理员都拥有一套他/她经常使用协助管理进程的实用程序、技巧和系统。有一些重要的实用程序、命令行链以及脚本可用来简化各种处理过程。这些工具中有一部分来自于操作系统,而大部分的技巧则来源于长期的经验和简化系统管理员工作的要求。本系列文章主要专注于最大限度地利用各种UNIX环境中可用的工具,包括简化异类环境中的管理任务的方法。使用psps命令行工具歹0出了正在运行的进程。该工具存在于所有的UNIX变种中,并且大体上都按相同的基本方式工作,即向内核请求正在运行的进程列表,然后报告进程列表及其届
3、性,如内存使用情况、运行时间和其他详细信息。ps工具实际上是一个非常强大的工具,尽管许多管理员可能仅使用可用选项中的某一两项来查看所需的信息。可以利用内置命令行选项从命令中获取更多的信息,甚至可以将ps通过管道与其他命令结合起来,以获取所需的准确信息。列出所有进程即使是以root身份登录,ps的标准输出也只列出了您所运行的进程。根据您的UNIX环境是基于BSD或者AT&TSysVUNIX基础部分对用来获取系统中其他进程信息的基本命令行选项做出相应的变动,或者改变所显示的信息。在基于BSD的UNIX环境中,输出包括进程ID、终端、状态、时间(在CPlfr的执行时间,单位为秒,而不是进程开
4、始运行的时间),以及所执行的命令,如活单1所示。活单1列出BSDUNIX变种上的进程$psPIDTTSTATTIMECOMMAND391p5SO00.24/bin/bash9165p5S+0:00.50emacs476p6SO:01.03/bin/bash9299p6SO:00.09xterm9319p6S0:00.07xterm9423p6S0:00.12ftpatuin9513p6R+000.01ps9301p7Ss+0:00.01/usr/X11R6/bin/luit9302p8Ss+000.03bash9321p9Ss+0:00.01/usr/X11R6/bin/luit9322paS
5、s+000.02bash在SVR仰境中,所提供的列较少(您得不到进程状态信息),如下面的活单2所示。活单2.列出SVR4UNIX变种上的进程$psPIDTTYTIMECMD19915pts/300:00:00bash29145pts/300:00:00emacs32256pts/300:00:00emacs26986pts/300:00:00xterm31303pts/300:00:00ftp31358pts/300:00:00ps要获取系统中正在运行的所有进程的列表,需要根据所使用的UNIX变种来使用不同的命令行选项。在BSDUNIX中,-a命令行选项列出了包括您自己在内的所有用户的进程。然
6、而,这个列表并不会包括那些没有控制终端的进程(比如那些在启动时开始执行的进程、守护进程以及那些作为cron工作的一部分的进程)。要获取所有正在运行的进程的列表,必须使用-A命令行选项(请参阅活单3)。活单3.列出BSDS统上的所有进程$ps-APIDTTSTATTIMECOMMAND1?Ss015.47/sbin/launchd23?Ss0:00.02/sbin/dynamic_pager-F/private/var/vm/swapfile27?Ss0:00.95kextd49?Ss0:05.17/usr/sbin/configd50?Ss001.89/usr/sbin/coreaudiod5
7、1?Ss004.40/usr/sbin/diskarbitrationd52?Ss0:00.08/usr/sbin/memberd-x53?Ss0:02.80/usr/sbin/securityd55?Ss1103.59/usr/sbin/notifyd57?Ss001.13/usr/sbin/DirectoryService.8051p2S+0:00.61sshrootbear292p3Ss0:00.02bash372p3S+0:00.42sshadminatuin312p4Ss+0:00.03bash332p5Ss0:00.03bash391p5S0:00.24/bin/bash9165p
8、5S+0:00.50emacs352p6Ss0:00.04bash476p6S0:01.04/bin/bash9299p6S0:00.09xterm9319p6S0:00.07xterm9423p6S0:00.14ftpatuin9520p6R+0:00.01ps-A9301p7Ss+0:00.01/usr/X11R6/bin/luit9302p8Ss+0:00.03bash9321p9Ss+000.01/usr/X11R6/bin/luit9322paSs+000.02bash-A命令行选项与同时使用-a和-x选项等效,其中-a显示拥有控制终端的进程,-x显示没有控制终端的进程。在SVR彼种
9、中,显示所有正在运行的进程(不论它是否拥有控制终端)的命令行选项是-e。从所显示的进程来看,它和BSD的-A选项是等价的。可以在活单4中看到输出的示例。活单4.SVR4环境中的进程列表$ps-ePIDTTYTIMECMD0?15:24sched1?0:00init2?0:00pageout3?0:00fsflush308?0:00devfsadm7?0:06svc.star9?010svc.conf506?0:00htt_serv260?0:00rpcbind259?0:00cron52?000dhcpagen282console0:00ttymon267?0:00lockd264?0:00s
10、tatd90?0:00sysevent.462?0:00smcboot464?0:00smcboot463?0:00smcboot473?0:00htt552?0:00in.telne527?000dmispd548?0:01snmpd输出的区别在于所显示的信息列,但是可以通过指定所需要的列来进行修改。列出指定信息ps工具包含许多标准的显示列集。例如在SVR4中,经常使用ps-ef来获取关于列出进程的更详细的信息,包括父进程ID、处理器利用率、开始时间以及更详细的命令行,如活单5所示。活单5.扩展输出ps-efUIDPIDPPIDCSTIMETTYTIMECMDroot00015:56:26?
11、15:24schedroot10015:56:26?0:00/sbin/initroot2001556:26?0:00pageoutroot30015:56:26?0:00fsflushroot3081015:57:09?0:00devfsadmdroot71015:56:29?0:06/lib/svc/bin/svc.startd.root5621015:5817?000/usr/lib/sendmail-bd-q15mroot576555116:01:47pts/10:00ps-efroot4161015:5714?000/usr/sbin/syslogdsmmsp561101558:17
12、?000/usr/lib/sendmail-Ac-q15m.root552283015:5747?000/usr/sbin/in.telnetdroot5271015:5722?000/usr/lib/dmi/dmispdroot5481015:5724?001/usr/sfw/sbin/snmpd对于BSD环境,通常添加-l选项,它为每个进程产生"长"输出,如活单6所示。活单6.在BSD显示更详细的信息$ps-alUIDPIDPPIDCPUPRINIVSZRSSWCHANSTATTTTIMECOMMAND091653910310578966376-S+p5000.50em
13、acs50135234903102778452-Ssp60:00.04bash0476352031027784600-Sp60:01.05/bin/bash092994760310449881880-Sp60:00.09xterm093194760310449881888-Sp60:00.07xterm09423476031027504488-Sp60:00.15ftpatuin09540476031027384504-R+p60:00.01ps-axl093019299031027332452-Ss+p7000.01/usr/X11R6/bin/luit0930293010310277848
14、88-Ss+p80:00.03bash093219319031027332452-Ss+p90:00.01/usr/X11R6/bin/luit093229321031027784888-Ss+pa0:00.02bash这些选项存在的问题是,尽管它们显示了更多的信息,但这些信息并不总是特别有用,或者在寻找某个特定进程时包含了不希望看到的扰乱显示的信息。幸运的是,所有版本的ps还包括了指定要显示的列的功能。可以广泛地使用这种命令,不管是仅提取所需要的信息,还是在异类环境中使用它来创造标准化的跨不同UNIX环境的输出。要使用这一特性,可使用-o命令行选项,并列出要显示的列,以逗号做列的分隔符。尽管
15、可选择的歹0的范围有一些差别,但在不同的UNIX版本中,大部分列都是标准的。例如,所有变种中都有pid、ppid(父进程ID)、commandRSS0主留集大小或内存使用情况)以及priority。使用时,可以用-o来选择列及其显示顺序。例如,要获取pid、ppid和commond在BSC可以使用-opid,ppid,command,如活单7所示,或者在SVR4中使用-opid,ppid,comm,如活单8所示。活单7.在BSD选择特定的歹U$ps-opid,ppid,commandPIDPPIDCOMMAND391332/bin/bash9165391emacs活单8.在SVRk选择特定的列
16、$ps-opid,ppid,commPIDPPIDCOMMAND555552-sh622555ps选择了想要的列后,可能会选择信息的排列顺序。ps的缺省设置是根据进程ID来排列进程列表,但是这样可能会隐藏正在查找的信息。当查找内存饥饿的进程时,按内存使用量来排列显示结果比按进程ID更加有用。有些ps变种通过使用命令行选项来支持这种情况。BS攻种中使用-m选项来按内存使用情况排序,或者使用-r来按CPLK用情况排序。许多SVR4变种没有该问题的明确解决办法,但是可以在所有环境中通过将ps和sort进行组合来生成类似的结果。例如,要获取按CPUS用量排序的进程列表,可以在BSD中使用活单9所示的命
17、令。活单9.在BS5跟踪CPU吏用情况$ps-A-opid,%cpu,command|sort-n+1.3580.1ftp114250.1/bin/bash286840.3trivial-rewrite-nrewrite-tunix-u3560.4ssh3540.5as239881.1emacs13614.6cc1plus2630623.6cpp在SVR4中,需要将cpu改为pcpu,而该命令在其他方面是相同的(请参见活单10)。活单10.在SVR4中跟踪CPU®用情况$ps-e-opid,pcpu,comm|sort-n+1.30.1fsflush5550.1-sh6270.2so
18、rt6280.2ps该命令链是可行的,因为已经指定了进程列表的排列顺序,因此可以按照这些列进行排序以获取真正想要的信息。如果想使用不同的标准来查找进程,还有其他的可用方案。列出特定进程显然,在获取了正在运行的进程列表之后,也许希望列出特定的进程。一个显而易见的方法就是将ps的输出与grep结合起来,以提取所需的信息。在一些UNIX变种中,可以通过一些特定的实用程序来完成这项工作,例如pgrep,但是如果要查找一些特定的命令,使用grep也同样是很有效的。$ps-ef|grepbashps命令还支持根据更明确的标准来显示进程,例如用户ID、父进程或控制终端。例如,-U命令行选项限定了进程列表只显
19、示指定用户名的进程。例如,要显示当前届于root用户的进程,请参阅活单11。活单11.根据用户列出进程$ps-UrootPIDTTYTIMECMD0?15:24sched1?0:00init2?000pageout3?0:02fsflush308?0:00devfsadm7?0:06svc.star.552?0:00in.telne527?0:00dmispd629pts/10:00ps548?001snmpd要获取指定终端的所有进程,使用-t,如活单12所示。活单12.根据终端列出进程$ps-t3PIDTTYTIMECMD19915pts/300:00:00bash29145pts/300:
20、00:00emacs32256pts/300:00:00emacs在有了这些信息后,也许想要用它来对进程进行相应的操作。向多个线程发送信号当找到了要查询的进程后,最常用的命令之一是kill。它向一个或多个进程发送特定的信号。对于启动了多个线程或子线程的守护进程的情况,可以尝试向父进程发送信号,以此向所有的进程发送信号。然而,这种方法并不是对所有的守护进程和应用程序都有效。显然,您希望避免手动挑选出这些进程。有些UNIX变种中有一个名为pkill的工具,它能够向满足特定模式或其他标准的进程(例如终端、进程组、用户ID以及组ID歹0表)发送相同的信号。可以通过链接ps、grep、awk、xargs
21、以及kill命令的方式来模拟这一基本操作,向满足特定命令模式的多个进程发送信号。例如,要向所有命令中包含"httpd"的进程发送kill信号,可以使用:$ps-e-opid,command|grephttpd|awk'print'|xargskill-9如果对单个元素进行研究,将更容易理解它。$ps-e-opid,command该命令显示了所有正在运行的进程的列表(这是在SVR4系统中,而在BS5则应使用-A)。它仅显示了进程ID和被执行的命令。不需要任何其他的信息,而且使用更详细的输出可能会引入其他方面符合搜索条件的文本。$ps-e-opid,comman
22、d|grephttpd该命令仅提取了命令中含有httpd的进程(因为进程列表中产生的唯一其他信息是进程ID):$ps-e-opid,command|grephttpd|awk'print'通过使用awk,仅筛选除去打印输出中的第一个参数,即进程ID。$ps-e-opid,command|grephttpd|awk'(print'|xargskill-9xargs命令接收空白字符分隔的项目列表(其中空白字符包括回车、换行、制表符以及一个或多个空格),并把它格式化为参数歹0表传递给指定的命令,在本示例中是kill命令。最好把它放进脚本程序中,并取一个适当的名字,例如
23、(pkill或者killbyname)。可以设置该脚本接收两个参数,信号和匹配文本,甚至还可以考虑操作系统的差别,如活单13所示。活单13.通过命令字符申向进程发送消息#!/bin/shHOSTTYPE='uname-s'SIGNAL=STRING=if-z""-o-z""thenechoUsage:messagesignalstringexit1ficase$HOSTTYPEinDarwin|BSD)ps-a-opid,command|grep$STRING|awk'print;'|xargskill$SIGNAL;Li
24、nux|Solaris|AIX|HP-UX)ps-e-opid,command|grep$STRING|awk'print;'|xargskill$SIGNAL;esac这里所显示的基本技术可以用于其他类似的排序规则。计算内存使用情况ps工具还提供了我们目前尚未涉及的两个列。RS澎0提供了进程的"驻留集大小”,这是该进程所使用的物理内存量,也是进程占用多少实际内存的指示。VSZ列详细列出进程正在使用的内存总量,包括所分配的内部存储,但通常已被交换到磁盘。对于大多数ps变体而言,这两个列都是比较常用的。确定这两个数据能够更好地了解内存的使用情况。如果将ps与grep组合
25、起来选择特定的进程,并使用awk来计算总量,就可以获取单个应用程序或者某个应用程序及其子进程正占用多少物理内存和虚拟内存。例如,要确定bash进程所使用的物理内存和虚拟内存,可以使用活单14中的命令。活单14.使用ps和awk计算内存使用情况$ps-A-orss,vsz,command|grepbash|awk'(rss+=;vsz+=ENDprint"Real:",rss,"Virtual:",vsz'Real:4004Virtual:305624这在诊断内存和交换区使用情况的问题时特别有用。使用与作业控制兼容的Shell对于一个典型的
26、系统管理员来说,在任一时刻运行一或两个以上的特定任务是很平常的事。尽管在任何时刻与服务器的连接可能不止一个,不论是多终端窗口(例如通过xterm)还是其他的终端,或者通过SSHTelnet的远程连接,有时候需要在活动的Shell或者环境中控制或监视多个进程。所有的Shell都支持在命令的末尾附加连字符(&)来使命令自动在后台运行。但有时希望将一个交互应用程序(如一个编辑器)放到后台,以便可以运行一个Shell命令,然后返回到编辑器会话。这种控制后台进程的能力称为作业控制,它是KornShell、CShell以及开源的Shell(例如bash和zsh)的标准特性。为了实现在Shell中每
27、次启动一个命令时在后台运行的基本作业控制,命令(可以是任何合法的命令行,甚至是内联脚本)给出了作业引用ID。$find/-name"core"/tmp/corelist2&1&311957可以使用jobs命令获取正在后台运行的作业列表,如活单15所示。活单15.使用jobs命令$jobs1 -StoppedemacsMCSLP/Intranet/News.pm2 +StoppedemacsMCSLP/Intranet/Media.pm3 Runningfind/-name"core"/tmp/corelist2&1&在该活
28、单中,第二个emacs命令使用了+号标注。这表示Shell认为它是当前的活动作业。先前启动的find不是活动的工作,因为它不需要进行交互(尽管它产生输出,它并不需要输入来继续),因而不是活动的进程。第一个emacs进程使用了-标注,说明Shell认为它先前是活动的命令。可以分别使用弃日4符申来引用这些作业。可以通过在fg后输入作业编号或者作业字符申(+、-)来将任何正在运行的作业切换为前台进程。如果省略了引用,Shell就切换到当前的活动工作。要挂起当前运行的进程,按Control-Z。可以使用下面的代码进行重新配置:ftp3+Stoppedftpatuin它可以和许多不同的命令及应用程序一起使用。对于在Shell中运行的大部分简单命令,如ls或者find,它也应该是有效的。请注意,该作业
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 数字化市场推广合作协议
- (正式版)DB15∕T 3379-2024 《油莎豆-苜蓿带状间作种植技术规程》
- 叙事作文做饭600字13篇
- 企业市场营销策略制定与执行协议
- (正式版)DB15∕T 3253.9-2023 《食品生产加工小作坊生产规范 第9部分:食用植物油》
- (正式版)DB15∕T 3230-2023 《露地薄皮甜瓜生产技术规程》
- 客户服务流程模板化流程工具
- 会议纪要撰写规范模板与范例集
- 曾经你去哪了呢1500字(10篇)
- 品牌推广和市场推广合同协议示本
- 公证与婚姻家庭事务
- 产业园区运营模式(课件)
- 信息可视化设计全套教学课件
- 口腔粘膜病课件
- 关于PedSQL-4.0儿童生存质量测定量表调查
- 年产62万吨甲醇制烯烃(MTO)项目初步设计说明书
- 联通创新人才认证(解决方案)考试题库(附答案)
- ICU患者的早期活动
- 出纳课件 转账支票pptx
- TSZUAVIA 009.11-2019 多旋翼无人机系统实验室环境试验方法 第11部分:淋雨试验
- ps6000自动化系统用户操作及问题处理培训
评论
0/150
提交评论