在 Windows 的 cmd.exe (命令提示符) 中,ps 命令并不是一个内置的、直接可用的命令,这与 Linux/Unix 系统中的 ps 命令(用于显示进程状态)不同。

在 Windows 中,查看和管理进程的标准命令是 tasklist 和 taskkill。
为什么 ps 命令在 cmd 中不可用?
-
历史渊源不同:
ps(Process Status) 是源自 Unix/Linux 系统的经典命令,是类 Unix 系统管理进程的核心工具之一。- Windows 的命令行工具(如
tasklist,taskkill)是微软自己开发的,设计理念和命令语法与 Unix 工具集不同。
-
功能替代:
- Windows 提供了功能等价的命令,即
tasklist(对应ps) 和taskkill(对应kill)。
- Windows 提供了功能等价的命令,即
Windows 中查看进程的正确命令:tasklist
tasklist 命令用于列出当前正在运行的进程。

基本语法
tasklist [options]
常用选项和示例
示例 1:列出所有正在运行的进程
这是最简单的用法,会显示进程的映像名称、PID (进程ID)、会话名和内存使用情况。
tasklist
输出结果类似这样:
映像名称 PID 会话名 会话# 内存使用
========================= ====== ================ =========== ============
System Idle Process 0 Services 0 8 K
System 4 Services 0 52 K
Registry 88 Services 0 10,728 K
...
chrome.exe 1234 Console 1 456,789 K
explorer.exe 5678 Console 1 78,901 K
cmd.exe 9012 Console 1 512 K
示例 2:以列表格式显示(更易读)

使用 /fo (format) 选项,并指定 list。
tasklist /fo list
输出结果类似这样:
``> 映像名称: System Idle Process PID: 0 会话名: Services 会话#: 0 内存使用: 8 K
映像名称: System PID: 4 会话名: Services 会话#: 0 内存使用: 52 K
映像名称: chrome.exe PID: 1234 会话名: Console 会话#: 1 内存使用: 456,789 K
**示例 3:显示指定用户运行的进程**
使用 `/fi` (filter) 选项,并指定 `USERNAME`。
```cmd
tasklist /fi "USERNAME eq YOUR_USERNAME" /fo list
请将 YOUR_USERNAME 替换为你的实际用户名(Administrator)。
示例 4:显示特定进程的信息
使用 /fi 选项,并指定 IMAGENAME。
tasklist /fi "IMAGENAME eq chrome.exe" /fo list
示例 5:显示所有服务的详细信息
使用 /svc 选项,可以查看每个进程关联了哪些服务。
tasklist /svc
与 ps 命令功能更接近的现代工具:PowerShell
对于现代 Windows 更强大、更灵活的工具是 PowerShell,PowerShell 的设计借鉴了许多 Unix 工具的优点,包括 ps。
在 PowerShell 中,查看进程的命令是 Get-Process(其别名就是 ps!)。
PowerShell 中的 ps (Get-Process)
示例 1:列出所有进程
ps # 或者 Get-Process
示例 2:获取特定进程(如 Chrome)
ps chrome # 或者 Get-Process chrome
示例 3:以列表格式显示,并选择特定属性
PowerShell 的强大之处在于可以轻松处理对象和格式化输出。
ps | Format-Table -Property Id, ProcessName, CPU, WorkingSet -AutoSize
- 管道符,将前一个命令的输出作为后一个命令的输入。
Format-Table:格式化输出为表格。-Property:指定要显示的列(ID, 进程名, CPU占用, 工作集内存)。-AutoSize:自动调整列宽。
示例 4:停止一个进程
这类似于 Linux 的 kill 命令。
# 先找到进程ID ps notepad # 假设PID是 9876,然后停止它 Stop-Process -Id 9876
如何在 cmd 中使用 ps 命令?(进阶)
如果你非常习惯使用 ps,并且想在 cmd 环境下也能使用它,有几种方法可以实现:
创建一个批处理文件
-
在系统路径(
C:\Windows或C:\Users\YourUser\AppData\Local)下创建一个名为ps.bat的文件。 -
在文件中写入以下内容:
@echo off tasklist %*
会将你传递给
ps.bat的所有参数(如/fo list)都原封不动地传递给tasklist。 -
保存后,你就可以在任何
cmd窗口中直接使用ps命令了。
使用 Windows Subsystem for Linux (WSL)
如果你在 Windows 10/11 上安装了 WSL,你就可以直接在一个真正的 Linux 环境中使用原汁原味的 ps 命令。
-
打开 WSL 终端(Ubuntu)。
-
直接使用
ps命令:ps aux ps -ef
总结对比
| 功能 | Windows cmd |
Windows PowerShell | Linux/Unix |
|---|---|---|---|
| 列出所有进程 | tasklist |
Get-Process (或 ps) |
ps 或 ps aux |
| 查找特定进程 | tasklist /fi "IMAGENAME eq notepad.exe" |
ps notepad |
ps aux \| grep notepad |
| 停止进程 | taskkill /PID <pid> /F |
Stop-Process -Id <pid> |
kill -9 <pid> |
| 查看详细信息 | tasklist /svc |
ps \| Format-List |
ps -efl |
- 如果你正在使用传统的
cmd,请使用tasklist和taskkill。 - 如果你使用的是现代的 PowerShell(推荐),请使用
Get-Process(别名ps) 和Stop-Process,它们更强大、更灵活。 - 如果你来自 Linux 世界且想使用原生
ps,WSL 是最佳选择。
