精通软件性能测试与LoadRunner最佳实战 连载五

时间:2021-09-22 04:06:09

8.2.3  Windows操作系统任务、进程关闭技术

  前面8.2.2小节向大家介绍了如何监控正在运行的应用和进程的一些方法,本节将介绍在进行性能测试时,为保证与被测试系统数据的准确性,如何关闭一些无用的应用和进程的方法。打开Windows的任务管理,选中要关闭的进程,然后单击“结束进程”按钮,弹出“任务管理器警告”对话框,单击“是”则结束选定的进程,如图8-8~图8-9所示。

精通软件性能测试与LoadRunner最佳实战 连载五

图8-8 “Windows任务管理器”对话框信息

精通软件性能测试与LoadRunner最佳实战 连载五

图8-9 “任务管理警告”信息提示框

  此外,还可以通过使用Windows的命令行来关闭运行在本地或远程计算机上的所有任务的应用程序和服务列表,并带有进程ID(PID),使用tasklist命令。为了帮助大家使用这个命令,可以输入tasklist/?来查看该命令的帮助信息,显示的信息如下所示:

taskkill [/S system [/U username [/P [password]]]]
         { [/FI filter] [/PID processid | /IM imagename] } [/F] [/T]

描述:
    这个命令行工具可用来结束至少一个进程。
    可以根据进程 id 或图像名来结束进程。

参数列表:
    /S    system         指定要连接到的远程系统。
    /U    [domain\]user  指定应该在哪个用户上下文执行这个命令。
    /P    [password]      为提供的用户上下文指定密码。如果忽略,提示输入。
    /F                   指定要强行终止进程。
    /FI   filter          指定筛选进或筛选出查询的任务。
    /PID  process id     指定要终止的进程的PID。
    /IM   image name     指定要终止的进程的图像名。通配符‘*’可用来指定所有图像名。
    /T                   Tree kill: 终止指定的进程和任何由此启动的子进程。
    /?                   显示帮助/用法。

筛选器:
    筛选器名        有效运算符                  有效值
    -----------        ---------------            --------------
    STATUS          eq, ne                      运行 | 没有响应
    IMAGENAME       eq, ne                      图像名
    PID             eq, ne, gt, lt, ge, le     PID 值
    SESSION         eq, ne, gt, lt, ge, le     会话编号
    CPUTIME         eq, ne, gt, lt, ge, le     CPU 时间,格式为
                                                hh:mm:ss。
                                                hh-时,
                                                mm-钟,ss-秒
    MEMUSAGE        eq, ne, gt, lt, ge, le     内存使用,单位为 KB
    USERNAME        eq, ne                      用户名,格式为
                                                 [domain\]user
    MODULES         eq, ne                      DLL 名
    SERVICES          eq, ne                      服务名
    WINDOWTITLE      eq, ne                      窗口标题

注意: 只有带有筛选器的情况下,才能跟 /IM 切换使用通配符 ‘*’。

注意: 远程进程总是要强行终止,不管是否指定了 /F 选项。

例如:
    TASKKILL /S system /F /IM notepad.exe /T
    TASKKILL /PID 1230 /PID 1241 /PID 1253 /T
    TASKKILL /F /IM notepad.exe /IM mspaint.exe
    TASKKILL /F /FI "PID ge 1000" /FI "WINDOWTITLE ne untitle*"
    TASKKILL /F /FI "USERNAME eq NT AUTHORITY\SYSTEM" /IM notepad.exe
    TASKKILL /S system /U domain\username /FI "USERNAME ne NT*" /IM *
    TASKKILL /S system /U username /P password /FI "IMAGENAME eq note*"


 为了使大家对该命令的使用有更深刻的认识,这里给大家举几个例子进行说明。

  1.示例一

  如果应用Tasklist命令查到“Foxmail”应用的进程如

图8-10所示,现在要终止“Foxmail.exe”这个应用进程,可以在控制台执行“taskkill /im foxmail.exe”命令以后,显示如图8-11所示信息,当然也可以应用“taskkill/pid 2912”命令来关闭“Foxmail.exe”程序,如图8-12所示。那么这两条命令有什么区别呢?如果应用程序“TEST”打开了若干个进程,则“Taskkill/IM TEST.exe”命令将关闭该程序的全部进程;而“Taskkill/PID对应pid值”则只关闭该PID所对应的进程。

精通软件性能测试与LoadRunner最佳实战 连载五

图8-10  用Tasklist命令显示Foxmail.exe进程的相关信

精通软件性能测试与LoadRunner最佳实战 连载五

图8-11  用Taskkill命令关闭Foxmail.exe进程的相关信息

精通软件性能测试与LoadRunner最佳实战 连载五

图8-12  用Taskkill命令关闭2912进程的相关信息

  2.示例二

  如果需要终止远程计算机上的某个进程,可以执行命令“taskkill/s 192.168.0.102/u administrator/p beco/im winrar.exe”,这里要关闭的进程IP地址为“192.168.0.102”,因为访问这台远程计算机需要用户名和密码,所以加入了“/p administrator/p beco”,“administrator”、“beco”为远程计算机的用户名和密码,“/im winrar.exe”为要关闭的远程计算机上的应用进程图像名,命令执行完成后,显示如图8-13所示信息。命令执行完毕以后,可以查看远程计算机的winrar应用就被关闭了。

精通软件性能测试与LoadRunner最佳实战 连载五

图8-13  用Taskkill命令关闭远程计算机应用进程的相关信息

  3.示例三

  如果要同时关闭几个进程实例,例如,启动了两个记事本程序和一个电驴程序应用,如图8-14所示。接下来,运行tasklist命令查看所有的任务进程,如图8-15所示信息,可以看到有3个应用进程:2个notepad.exe和1个emule.exe的图像名。如果现在要关闭记事本和电驴程序应用,则可以执行命令“taskkill/im emule.exe/im notepad.exe”,执行完成后,显示如图8-16所示信息。

精通软件性能测试与LoadRunner最佳实战 连载五

图8-14  记事本和电驴程序

精通软件性能测试与LoadRunner最佳实战 连载五

图8-15  tasklist显示所有进程信息

精通软件性能测试与LoadRunner最佳实战 连载五

图8-16  taskkill关闭记事本和电驴程序

 4.示例四

  如果需要批量关闭任务进程,可以使用条件过滤组合,即方便又快捷。这里以关闭记事本进程为例,从图8-17可以看出,记事本的3个实例,pid分别为3544、3556、3568,这时,可以用命令“taskkill/f/fi"pid gt 3543"/fi"pid lt 3570"”来关闭这3个实例。其中命令行中的“gt”和“lt”分别代表“大于”和“小于”,即要关闭pid>3542且pid<3570的任务进程。

精通软件性能测试与LoadRunner最佳实战 连载五

图8-17  taskkill过滤参数的应用

  8.2.4  Linux操作系统任务、进程监控技术介绍

  Linux的发展潜力巨大,一方面,Linux在各行各业中的应用也得到了很好的推广,它的应用已经非常成熟。国际上,如当今世界最大的搜索引擎公司Google应用了1万多台Linux服务器;在国内,电信、银行、文化部、铁路、电力、教育、民航等各大领域也应用了Linux。基于Linux内核的操作系统有很多,这里不给大家逐一介绍,关于Linux部分的样例内容以RedHat 9为例,本书也将它作为讲解的主要操作系统。像Windows操作系统一样,Linux操作系统同样可以对进程、CPU、内存、硬盘等进行监控,因为Linux是开源的,越来越多的组织机构和个人不断地去完善、发展这个操作系统,可以说Linux各个方面不逊色于Windows操作系统。

  在给大家介绍Linux进程监控之前,先了解一下有关Linux进程的一些基础知识。

  1.Linux进程概念

  Linux进程中最知名的属性就是它的进程号(Process Idenity Number,PID)和它的父进程号(parent process ID,PPID)。PID、PPID都是非零正整数。一个PID唯一地标识一个进程。一个进程创建新进程称为创建了子进程(child process)。相反地,创建子进程的进程称为父进程。所有进程追溯其祖先最终都会落到进程号为1的进程身上,这个进程叫做init进程。它是内核自举后第一个启动的进程。init进程的作用是扮演终结父进程的角色。因为init进程永远不会被终止,所以系统总是可以确信它的存在,并在必要的时候以它为参照。如果某个进程在它衍生出来的全部子进程结束之前被终止,就会出现必须以init为参照的情况。此时那些失去了父进程的子进程就都会以init作为它们的父进程。

  2.Linux进程在运行中的3种状态

  执行(Running)状态:CPU正在执行,即进程正在占用CPU。

  就绪(Waiting)状态:进程已经具备执行的一切条件,正在等待分配CPU处理时间。

  停止(Stoped)状态:进程不能使用CPU。

  3.理解Linux下进程的结构

  Linux中一个进程在内存里由3部分的数据组成,就是“数据段”、“堆栈段”和“代码段”,基于I386兼容的*处理器都有上述3种段寄存器,以方便操作系统的运行,如图8-18所示。

精通软件性能测试与LoadRunner最佳实战 连载五

图8-18  Linux进程的结构

  代码段是存放了程序代码的数据,假如计算机中有数个进程运行相同的一个程序,那么它们就可以使用同一个代码段。而数据段则存放程序的全局变量、常数以及动态数据分配的数据空间。堆栈段存放的就是子程序的返回地址、子程序的参数以及程序的局部变量。堆栈段包括进程控制块PCB(Process Control Block)中。PCB处于进程核心堆栈的底部,不需要额外分配空间。

  4.Linux进程的种类

  Linux操作系统包括3种不同类型的进程,每种进程都有自己的特点和属性。

  ● 交互进程:由一个Shell启动的进程。交互进程既可以在前台运行,也可以在后台运行。

  ● 批处理进程:这种进程和终端没有联系,是一个进程序列。

  ● 监控进程:也称守护进程,Linux系统启动时启动的进程,并在后台运行。

  (未完待续)