进程管理命令
概述
Windows提供了多种进程管理工具,用于查看、创建、终止和管理系统进程。
进程查看
tasklist - 显示进程列表
tasklist命令
显示本地或远程计算机上运行的进程列表。
语法:
| Text Only |
|---|
| tasklist [/s computer] [/u domain\user [/p password]] [/fi filter] [/fo format] [/nh] [/v] [/svc]
|
常用选项:
| 选项 |
说明 |
/s computer |
指定远程计算机 |
/u |
指定用户名 |
/p |
指定密码 |
/fi filter |
按筛选器过滤 |
/fo format |
输出格式(table, list, csv) |
/nh |
不显示列标题 |
/v |
详细模式 |
/svc |
显示每个进程的服务 |
筛选器:
| 筛选器名称 |
有效值 |
imagename |
进程映像名称 |
pid |
进程ID |
session |
会话编号 |
sessionname |
会话名称 |
status |
running, not responding |
memusage |
内存使用(KB) |
username |
用户名 |
services |
服务名称 |
windowtitle |
窗口标题 |
示例:
| Text Only |
|---|
| tasklist # 显示所有进程
tasklist /v # 详细信息
tasklist /svc # 显示服务信息
tasklist /fi "imagename eq chrome.exe" # 筛选chrome进程
tasklist /fi "memusage gt 100000" # 内存使用大于100MB的进程
tasklist /fi "status eq not responding" # 未响应的进程
tasklist /fo csv # CSV格式输出
tasklist | findstr "chrome" # 查找chrome进程
|
wmic process - WMI进程查询
语法:
| Text Only |
|---|
| wmic process [where condition] [get properties] [verb]
|
示例:
| Text Only |
|---|
| wmic process list brief # 简要列出进程
wmic process get name,processid # 获取进程名和ID
wmic process where "name='chrome.exe'" get processid,workingsetsize
wmic process where "processid=1234" delete # 通过PID结束进程
|
get-process (PowerShell)
语法:
| PowerShell |
|---|
| Get-Process [-Name] <string[]> [-ComputerName <string[]>]
|
示例:
| PowerShell |
|---|
| Get-Process # 所有进程
Get-Process chrome # chrome进程
Get-Process | Sort-Object CPU -Descending | Select-Object -First 10 # CPU占用最高的10个进程
Get-Process | Where-Object {$_.WorkingSet -gt 100MB} # 内存超过100MB的进程
|
进程终止
taskkill - 终止进程
taskkill命令
终止一个或多个进程或进程树。
语法:
| Text Only |
|---|
| taskkill [/s computer] [/u domain\user [/p password]] {[/fi filter] [/pid processid] [/im imagename]} [/f] [/t]
|
选项:
- /pid processid:指定进程ID
- /im imagename:指定映像名称
- /f:强制终止
- /t:终止指定的进程及其子进程
- /fi filter:应用筛选器
示例:
| Text Only |
|---|
| taskkill /pid 1234 # 按PID终止
taskkill /im notepad.exe # 按名称终止
taskkill /im chrome.exe /f # 强制终止chrome
taskkill /pid 1234 /t # 终止进程树
taskkill /fi "memusage gt 500000" /f # 终止内存大于500MB的进程
taskkill /f /im explorer.exe && start explorer.exe # 重启explorer
|
Stop-Process (PowerShell)
示例:
| PowerShell |
|---|
| Stop-Process -Id 1234 # 按ID停止
Stop-Process -Name notepad # 按名称停止
Stop-Process -Name chrome -Force # 强制停止
Get-Process notepad | Stop-Process # 管道方式
|
进程创建
start - 启动程序
语法:
| Text Only |
|---|
| start ["title"] [/d path] [/i] [/min] [/max] [/separate | /shared] [/low | /normal | /high | /realtime | /abovenormal | /belownormal] [/wait] [/b] [command/program] [parameters]
|
常用选项:
- /d path:指定启动目录
- /min:最小化启动
- /max:最大化启动
- /wait:等待程序结束
- /b:不创建新窗口
示例:
| Text Only |
|---|
| start notepad # 启动记事本
start /max notepad # 最大化启动
start "" "C:\Program Files\app.exe" # 启动带空格路径的程序
start /wait installer.exe # 等待安装完成
start /d C:\Projects cmd # 在指定目录打开cmd
|
Start-Process (PowerShell)
示例:
| PowerShell |
|---|
| Start-Process notepad # 启动记事本
Start-Process chrome "https://www.baidu.com" # 打开网页
Start-Process installer -Wait # 等待完成
Start-Process cmd -Verb runAs # 以管理员身份运行
|
进程优先级
设置优先级
使用wmic:
| Text Only |
|---|
| wmic process where "name='notepad.exe'" call setpriority 64
|
优先级值:
- 64:低
- 16384:低于标准
- 32:标准
- 32768:高于标准
- 128:高
- 256:实时
使用PowerShell:
| PowerShell |
|---|
| $get-process notepad | foreach {$_.PriorityClass = "High"}
|
服务管理
sc - 服务控制
sc命令
与服务控制器和服务管理器通信的命令行程序。
语法:
| Text Only |
|---|
| sc [server] [command] [service name] [option name= option value]
|
常用命令:
| 命令 |
说明 |
query |
查询服务状态 |
start |
启动服务 |
stop |
停止服务 |
pause |
暂停服务 |
continue |
继续服务 |
config |
修改服务配置 |
create |
创建服务 |
delete |
删除服务 |
failure |
设置服务失败操作 |
示例:
| Text Only |
|---|
| sc query # 查询所有服务
sc query Spooler # 查询打印服务
sc start wuauserv # 启动Windows更新服务
sc stop wuauserv # 停止服务
sc config Spooler start= auto # 设置自动启动
sc config Spooler start= disabled # 禁用服务
sc query type= service state= all # 显示所有服务
sc query state= all | findstr "SERVICE_NAME" # 列出所有服务名
|
net start/stop - 启动停止服务
示例:
| Text Only |
|---|
| net start # 显示所有运行的服务
net start "Windows Update" # 启动服务
net stop "Windows Update" # 停止服务
net pause "Windows Update" # 暂停服务
net continue "Windows Update" # 继续服务
|
服务管理PowerShell命令
示例:
| PowerShell |
|---|
| Get-Service # 所有服务
Get-Service -Name Spooler # 指定服务
Get-Service | Where-Object {$_.Status -eq "Running"} # 运行的服务
Start-Service -Name Spooler # 启动服务
Stop-Service -Name Spooler # 停止服务
Restart-Service -Name Spooler # 重启服务
Set-Service -Name Spooler -StartupType Automatic # 设置自动启动
|
进程监控
实时监控
使用tasklist循环监控:
| Text Only |
|---|
| :loop
cls
tasklist /fi "imagename eq chrome.exe"
timeout /t 2 /nobreak
goto loop
|
使用PowerShell:
| PowerShell |
|---|
| while($true) {
Clear-Host
Get-Process | Sort-Object CPU -Descending | Select-Object -First 10 Name, CPU, WorkingSet
Start-Sleep -Seconds 2
}
|
性能监控
使用typeperf:
| Text Only |
|---|
| typeperf "\Processor(_Total)\% Processor Time"
typeperf "\Memory\Available MBytes"
typeperf "\Process(chrome)\% Processor Time"
|
实用场景
查找占用端口的进程
| Text Only |
|---|
| netstat -ano | findstr :8080 # 查找占用8080端口的进程
tasklist | findstr <PID> # 根据PID查看进程名
|
批量结束进程
| Text Only |
|---|
| taskkill /f /im chrome.exe # 结束所有chrome进程
taskkill /f /fi "imagename eq node*" # 结束所有node进程
|
查看进程详细信息
| Text Only |
|---|
| wmic process where "processid=1234" get *
|
检测进程是否存在
| Text Only |
|---|
| tasklist /fi "imagename eq notepad.exe" | find "notepad.exe"
if errorlevel 1 (
echo 进程不存在
) else (
echo 进程存在
)
|
参考资料