Windows CMD命令之tasklist及taskkill
Tasklist介绍
Tasklist"是 winxp/win2003/vista/win7/win8下的命令,用来显示运行在本地或远程计算机上的所有进程,带有多个执行参数。
使用格式
tasklist [/s <Computer> [/u [<Domain>\]<UserName> [/p <Password>]]] [{/m <Module> | /svc | /v}] [/fo {table | list | csv}] [/nh] [/fi <Filter> [/fi <Filter> [ ... ]]]
参数含义
/S <computer> 指定连接到的计算机或IP地址,默认本机。
/u [<Domain>\]<UserName> 指定使用哪个用户执行这个命令。
/P [password] 为指定的用户指定密码。
/M [module] 列出调用指定的DLL模块的所有进程。如果没有指定模块名,显示每个进程加载的所有模块。
/SVC 显示每个进程中的服务信息,当/fo参数设置为table时有效。
/V 显示详细信息。
/FI filter 显示一系列符合筛选器指定的进程。
/FO format 指定输出格式,有效值:TABLE、LIST、CSV。
/NH 指定输出中不显示栏目标题。只对TABLE和CSV格式有效。
filter可使用的参数和操作符
过滤器名称
可用操作符
可用值
STATUS
eq, ne
RUNNING | NOT RESPONDING | UNKNOWN
IMAGENAME
eq, ne
映像名称
PID
eq, ne, gt, lt, ge, le
PID值
SESSION
eq, ne, gt, lt, ge, le
会话数量
SESSIONNAME
eq, ne
会话名称
CPUTIME
eq, ne, gt, lt, ge, le
CPU的使用时间,格式为HH:MM:SS
MEMUSAGE
eq, ne, gt, lt, ge, le
kb为单位的内存使用量
USERNAME
eq, ne
合法用户名
SERVICES
eq, ne
服务名称
WINDOWTITLE
eq, ne
窗口标题
MODULES
eq, ne
DLL名称
应用实例
查看本机进程
在“命令提示符”中输入Tasklist命令即可显示本机的所有进程(图1)。本机的显示结果由5部分组成:图像名(进程名)、PID、会话名、会话#和内存使用。
C:\Users\Administrator>tasklist 映像名称 PID 会话名 会话# 内存使用 ========================= ======== ================ =========== ============ System Idle Process 0 Services 0 24 K System 4 Services 0 9,516 K smss.exe 420 Services 0 836 K csrss.exe 632 Services 0 4,632 K wininit.exe 752 Services 0 4,388 K csrss.exe 772 Console 1 92,908 K services.exe 816 Services 0 8,856 K lsass.exe 836 Services 0 11,160 K lsm.exe 844 Services 0 3,748 K svchost.exe 948 Services 0 8,496 K
查看远程系统的进程
在命令提示符下输入“Tasklist /s 218.22.123.26 /u jtdd /p 12345678”(不包括引号)即可查看到IP地址为218.22.123.26的远程系统的进程。其中/s参数后的“218.22.123.26”指要查看的远程系统的IP地址,/u后的“jtdd”指Tasklist命令使用的用户账号,它必须是远程系统上的一个合法账号,/p后的“12345678”指jtdd账号的密码。
注意:使用Tasklist命令查看远程系统的进程时,需要远程机器的RPC服务的支持,否则,该命令不能正常使用。
查看系统进程提供的服务
Tasklist命令不但可以查看系统进程,而且还可以查看每个进程提供的服务。如查看本机进程SVCHOST.EXE提供的服务,在命令提示符下输入“Tasklist /svc”命令即可(图3)。你会惊奇地发现,有4个SVCHOST.EXE进程,而总共有二十几项服务使用这个进程。
C:\Users\Administrator>tasklist /svc 映像名称 PID 服务 ========================= ======== ============================================ System Idle Process 0 暂缺 System 4 暂缺 smss.exe 420 暂缺 csrss.exe 632 暂缺 wininit.exe 752 暂缺 csrss.exe 772 暂缺 services.exe 816 暂缺 lsass.exe 836 KeyIso, ProtectedStorage, SamSs, VaultSvc lsm.exe 844 暂缺 svchost.exe 948 DcomLaunch, PlugPlay, Power ibmpmsvc.exe 1020 IBMPMSVC nvvsvc.exe 432 nvsvc svchost.exe 472 RpcEptMapper, RpcSs
对于远程系统来说,查看系统服务也很简单,使用“Tasklist /s 218.22.123.26 /u jtdd /p 12345678 /svc”命令,就可以查看IP地址为218.22.123.26的远程系统进程所提供的服务。
查看调用DLL模块文件的进程列表
要查看本地系统中哪些进程调用了shell32.dll模块文件,只需在命令提示符下输入“Tasklist /m shell32.dll”即可显示这些进程的列表。
使用筛选器查找指定的进程
在命令提示符下输入“TASKLIST /FI "USERNAME ne NT AUTHORITY\SYSTEM" /FI "STATUS eq running”,就可以列出系统中正在运行的非SYSTEM状态的所有进程。其中“/FI”为筛选器参数,“ne”和“eq”为关系运算符“不相等”和“相等”。
结束进程
Taskkill
要关掉本机的notepad.exe进程,有两种方法:
1、先使用Tasklist查找它的PID,假设系统显示本机notepad.exe(notepad.exe是个病毒性程序,很难删除,一般在C:/windows/system32下)进程的PID值为1132,然后运行“Taskkill /pid 1132”命令即可。其中“/pid”参数后面是要终止进程的PID值。
2、直接运行“taskkill /IM notepad.exe”命令,其中“/IM”参数后面为进程的图像名。
NTSD
系统debug级的ntsd,很多进程Tasklist是杀不了的,但是用ntsd就可以,基本上除了WINDOWS系统自己的管理进程,ntsd都可以杀掉,不过有些rootkit级别的超级木马就无能为力了,不过幸好这类木马还是很少的。
1、利用进程的PID结束进程
命令格式:ntsd -c q -p pid
命令范例: ntsd -c q -p 1332 (结束explorer.exe进程)
2、利用进程名结束进程
命令格式:ntsd -c q -pn ***.exe (***.exe 为进程名,exe不能省)