菜鸟科技网

DOS命令中的ps是什么?如何使用它查看进程信息?它与Unix/Linux的ps命令有何区别?

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

DOS命令中的ps是什么?如何使用它查看进程信息?它与Unix/Linux的ps命令有何区别?-图1
(图片来源网络,侵删)

在 Windows 中,查看和管理进程的标准命令是 tasklisttaskkill


为什么 ps 命令在 cmd 中不可用?

  • 历史渊源不同

    • ps (Process Status) 是源自 Unix/Linux 系统的经典命令,是类 Unix 系统管理进程的核心工具之一。
    • Windows 的命令行工具(如 tasklist, taskkill)是微软自己开发的,设计理念和命令语法与 Unix 工具集不同。
  • 功能替代

    • Windows 提供了功能等价的命令,即 tasklist (对应 ps) 和 taskkill (对应 kill)。

Windows 中查看进程的正确命令:tasklist

tasklist 命令用于列出当前正在运行的进程。

DOS命令中的ps是什么?如何使用它查看进程信息?它与Unix/Linux的ps命令有何区别?-图2
(图片来源网络,侵删)

基本语法

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:以列表格式显示(更易读)

DOS命令中的ps是什么?如何使用它查看进程信息?它与Unix/Linux的ps命令有何区别?-图3
(图片来源网络,侵删)

使用 /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 环境下也能使用它,有几种方法可以实现:

创建一个批处理文件

  1. 在系统路径(C:\WindowsC:\Users\YourUser\AppData\Local)下创建一个名为 ps.bat 的文件。

  2. 在文件中写入以下内容:

    @echo off
    tasklist %*

    会将你传递给 ps.bat 的所有参数(如 /fo list)都原封不动地传递给 tasklist

  3. 保存后,你就可以在任何 cmd 窗口中直接使用 ps 命令了。

使用 Windows Subsystem for Linux (WSL)

如果你在 Windows 10/11 上安装了 WSL,你就可以直接在一个真正的 Linux 环境中使用原汁原味的 ps 命令。

  1. 打开 WSL 终端(Ubuntu)。

  2. 直接使用 ps 命令:

    ps aux
    ps -ef

总结对比

功能 Windows cmd Windows PowerShell Linux/Unix
列出所有进程 tasklist Get-Process (或 ps) psps 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,请使用 tasklisttaskkill
  • 如果你使用的是现代的 PowerShell(推荐),请使用 Get-Process (别名 ps) 和 Stop-Process,它们更强大、更灵活。
  • 如果你来自 Linux 世界且想使用原生 psWSL 是最佳选择。
分享:
扫描分享到社交APP
上一篇
下一篇