跳转至

进程管理命令

概述

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
1
2
3
4
5
6
7
8
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
1
2
3
4
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
1
2
3
4
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
1
2
3
4
5
6
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
1
2
3
4
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
1
2
3
4
5
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
1
2
3
4
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
1
2
3
4
5
6
7
8
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
1
2
3
4
5
net start                           # 显示所有运行的服务
net start "Windows Update"          # 启动服务
net stop "Windows Update"           # 停止服务
net pause "Windows Update"          # 暂停服务
net continue "Windows Update"       # 继续服务

服务管理PowerShell命令

示例

PowerShell
1
2
3
4
5
6
7
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
1
2
3
4
5
:loop
cls
tasklist /fi "imagename eq chrome.exe"
timeout /t 2 /nobreak
goto loop

使用PowerShell

PowerShell
1
2
3
4
5
while($true) {
    Clear-Host
    Get-Process | Sort-Object CPU -Descending | Select-Object -First 10 Name, CPU, WorkingSet
    Start-Sleep -Seconds 2
}

性能监控

使用typeperf

Text Only
1
2
3
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
1
2
3
4
5
6
tasklist /fi "imagename eq notepad.exe" | find "notepad.exe"
if errorlevel 1 (
    echo 进程不存在
) else (
    echo 进程存在
)

参考资料