「作者简介」:冬奥会网络安全中国代表队,CSDN Top100,就职奇安信多年,以实战工作为基础著作 《网络安全自学教程》,适合基础薄弱的同学系统化的学习网络安全,用最短的时间掌握最核心的技术。
tasklist 可以查看当前运行的进程。
- /FI:筛选器。根据PID、进程名等操作符过滤进程。
- /M:查看进程调用的DLL模块。指定DLL名,可以过滤调用指定DLL模块的进程。
- /SVC:查看进程对应的服务。
- /V:显示详细信息。
- /NH:不显示第一行的列名。
- /FO:指定输出格式。TABLE表格格式(默认);LIST列表格式;CSV文本数据格式。
- /S:连接到指定计算机,默认本机。
- /u:指定使用该命令的用户。
- /P:指定用户密码。
tasklist
1、基本使用
执行 tasklist
不加参数默认以TABLE表格格式输出,从左到右依次是进程名、进程ID、会话、会话ID、内存使用大小。通常我们只看左边的进程名和进程ID就够了。
tasklist /v
可以显示所有字段。
2、执行原理
Windows系统的命令本质上都是「可执行程序」,默认存放在 C:\Windows\System32
目录下, tasklist
命令对应的便是 tasklist.exe 文件
当我们执行 tasklist
命令时,本质上就是执行了 tasklist.exe 这个程序.因此,当我们在命令行输入 tasklist.exe 时,执行的结果也是一样的。
2.1、tasklist命令无法使用
你能在任意目录都执行这个命令,是因为 system32 这个目录被配置到了「环境变量」里。
当你执行了一个没有完整路径的程序时,如果「当前路径」下没有同名的可执行文件,就会到环境变量里去找。
比如我再当前目录下新建一个 tasklist.exe 文件,他就执行我的这个文件,而不是执行系统的tasklist命令。
当你的系统提示你没有这个命令或无法使用时,可以到环境变量里检查下 system32 目录有没有加到环境变量里,或者 system32 目录下还有没有这个命令的文件。
3、筛选器
/FI
参数可以指定筛选器,筛选器配合运算符实现过滤查询、模糊匹配。
筛选器 | 可用的运算符 | 值 |
---|---|---|
STATUS | eq,ne | RUNNING、SUSPENDED、NOT RESPONDING、UNKNOWN |
IMAGENAME | eq,ne | 进程名称 |
PID | eq,ne,gt,lt,ge,le | 进程ID |
SESSION | eq,ne,gt,lt,ge,le | 会话ID |
SESSIONNAME | eq,ne | 会话名称 |
CPUTIME | eq,ne,ge,lt,ge,le | CPU时间。格式 hh:mm:ss,即时:分:秒 |
MEMUSAGE | eq,ne,ge,lt,ge,le | 内存使用大小,单位KB |
USERNAME | eq,ne | 用户名。格式 [域]用户 |
SERVICES | eq,ne | 服务名 |
WINDOWTITLE | eq,ne | 窗口标题 |
运算符含义:
- eq(equal):等于。
- ne(not equal):不等于。
- gt(greater than):大于。
- lt(less than):小于
- ge(greater than or equal):大于等于。
- le(less than or equal):小于等于。
3.1、根据PID查找进程
tasklist /FI "PID eq 996"
查找PID等于996的进程。
3.2、根据进程名查找进程
tasklist /FI "imagename eq cmd.exe"
查找进程名时cmd.exe的进程。必须是全名,少个后缀都搜不到。
3.3、查看指定用户运行的进程
tasklist /FI "username eq administrator" /v
查看administrator用户运行的进程。
3.4、查看资源占用高的进程
tasklist /FI "cputime gt 0:00:30" /v
查看CPU使用超过30秒的进程
排查资源占用时,通常会用任务管理器。可以按CPU、内存使用大小排序。
4、分页查看
内容太多看起来不方便,用 tasklist | more
分页查看。
根据当前窗口大小显示一页,回车下一行、空格下一页、Ctrl+C退出查看。
5、查看进程调用的DLL模块
tasklist /m
查看进程调用的DLL模块。
5.1、查看调用指定DLL模块的进程
tasklist /m wininet.dll
查看调用wininet.dll 模块的进程。
6、查看进程文件位置
查看cmd.exe进程的文件路径。
wmic process where name="cmd.exe" get processid,name,executablepath