如何查找应用程序的进程 pid

如何查找应用程序的进程 pid

我有一个应用程序的便携版本。例如,我运行了 5 个实例,它们都具有相同的进程名称,但不同的 pid。我想找到一种方法来例如终止一个特定的进程,因为使用 taskkill 和该进程的名称会终止所有这些进程。我想通过提供进程号该进程的进程号。
现在的问题是:我如何才能找到进程 pid,以便我可以使用这个数字轻松终止该特定应用程序?
例如,我想终止第三个进程(我的意思是使用时间)。pid
能否告诉我进程何时运行?如果不能,还有其他解决方法吗?

答案1

正如您所说,多个实例都有不同的 PID,那么为什么需要更改它们?只需使用 TaskKill 根据特定 PID 而不是进程名称来终止进程即可。来自TaskKill /?

/PID  processid        Specifies the PID of the process to be terminated.
                       Use TaskList to get the PID.

编辑:下面是一个批处理文件,它可以找出它启动的程序实例的 PID,因此可以自然地扩展为使用 TaskKill 来终止该实例(如果需要):

@echo off
cls
set pidlstold=
set pidlstnew=
setlocal enabledelayedexpansion
for /f "tokens=2" %%a in ('tasklist /nh /fi "imagename eq mspaint*"') do set pidlstold=%%a.!pidlstold!
if "!pidlstold!"=="No." (
    echo No running instance of Paint found. Launching Paint...
    start /min mspaint
    echo.
    for /f "tokens=2" %%a in ('tasklist /nh /fi "imagename eq mspaint*"') do set pidlstold=%%a
    echo PID of just launched Paint instance is "!pidlstold!".
) else (
    echo One or more running instances of Paint found. Launching Paint again...
    start /min mspaint
    echo.
    for /f "tokens=2" %%a in ('tasklist /nh /fi "imagename eq mspaint*"') do set pidlstnew=%%a.!pidlstnew!
    set pidlstnew=!pidlstnew:%pidlstold%=!
    set pidlstnew=!pidlstnew:~0,-1!
    echo PID of just launched Paint instance is "!pidlstnew!".
)

答案2

您可以使用 powershell 执行此操作。例如,这将列出我的计算机上所有名为“chrome”的进程,并包括它们的启动时间,并按启动时间排序。

PS C:\Users\Zach> Get-Process chrome | Select-Object name,id,starttime

Name       Id StartTime
----       -- ---------
chrome   1752 4/16/2015 5:53:05 PM
chrome   5404 4/16/2015 5:53:05 PM
chrome   3980 4/16/2015 5:53:05 PM
chrome   4784 4/16/2015 5:53:05 PM
chrome   4336 4/16/2015 5:53:05 PM
chrome   4492 4/16/2015 5:53:05 PM
chrome   8812 4/16/2015 5:58:19 PM
chrome   9908 4/16/2015 5:58:19 PM
chrome   3608 4/16/2015 5:58:19 PM
chrome   9980 4/16/2015 5:58:19 PM
chrome   8536 4/16/2015 5:58:19 PM
chrome   9664 4/16/2015 5:58:19 PM
chrome   1700 4/16/2015 6:02:26 PM
chrome   9712 4/16/2015 7:50:31 PM
chrome   5920 4/16/2015 7:50:31 PM
chrome   4572 4/16/2015 7:50:31 PM
chrome   2400 4/17/2015 6:19:58 AM
chrome  11780 4/21/2015 7:17:22 PM
chrome  11340 4/21/2015 8:19:17 PM
chrome   7828 4/21/2015 8:19:19 PM
chrome   9448 4/21/2015 8:32:05 PM
chrome   3400 4/22/2015 7:48:21 PM
chrome   8860 4/22/2015 7:53:28 PM
chrome  10364 4/24/2015 1:04:54 AM
chrome   4596 4/24/2015 9:52:24 AM
chrome  13392 4/24/2015 10:39:31 AM
chrome  14596 4/24/2015 10:44:28 AM
chrome   3252 4/24/2015 10:49:28 AM
chrome  16100 4/24/2015 11:31:08 AM
chrome  13840 4/24/2015 3:14:34 PM
chrome   4472 4/24/2015 6:31:11 PM
chrome  13652 4/24/2015 6:31:31 PM
chrome  12008 4/25/2015 12:51:15 AM
chrome  16016 4/25/2015 12:51:17 AM
chrome   9852 4/25/2015 1:49:19 PM
chrome  14548 4/25/2015 2:10:19 PM
chrome  16364 4/25/2015 9:18:12 PM
chrome  13860 4/26/2015 12:21:57 AM
chrome  13004 4/26/2015 10:07:53 AM
chrome   1364 4/26/2015 10:13:30 AM
chrome  12464 4/26/2015 10:13:38 AM
chrome  15144 4/26/2015 10:13:52 AM
chrome   1040 4/26/2015 10:28:49 AM
chrome  15800 4/26/2015 10:38:00 AM
chrome  12984 4/26/2015 2:51:06 PM
chrome  12972 4/26/2015 7:18:05 PM
chrome  11816 4/26/2015 7:24:32 PM
chrome  15044 4/27/2015 6:54:53 PM
chrome  11916 4/27/2015 8:00:45 PM
chrome  16216 4/28/2015 12:45:07 AM
chrome  11404 4/28/2015 8:09:43 PM
chrome  15680 4/28/2015 8:57:05 PM
chrome   6864 4/28/2015 9:12:56 PM
chrome  16172 4/28/2015 11:34:43 PM
chrome  10432 4/28/2015 11:56:50 PM
chrome  14856 4/29/2015 12:43:49 AM
chrome  17372 4/29/2015 12:45:57 AM

使用这个,你可以找到你想杀死的进程的 pid。例如:

PS C:\Users\Zach> Stop-Process 3980

停止列表中的第三个。

答案3

如果您想仅使用内置工具快速找到程序的 PID,则可以使用 Windows 任务管理器完成所有操作。

  • 应用选项卡并找到应用程序名称。如果你不确定哪个是正确的,请右键单击它并选择置于顶层。如果正确的出现在前面,则说明您输入正确。
  • 右键单击应用程序名称并选择进入流程
  • 或者,如果您希望显示 PID,请转到查看 --> 列并确保PID(进程标识符)已选定。
  • 右键单击突出显示的进程,然后选择结束进程

答案4

进程的 PID 是一个唯一标识符。两个或多个实例不能具有相同的 PID,并且 PID 由操作系统内核内部管理,根本无法更改。

据我理解,你提到这个问题,taskkill我假设这是指 Windows 的taskkill命令。

如果需要通过图像名称终止进程,请使用/f /im命令行参数:

例如:

taskkill /f /im notepad.exe

这将终止 notepad.exe 的所有实例

如果你需要一个 PID 过滤器在一定时间间隔内终止进程,请使用/f /fi

taskkill /f /fi "PID gt 1000"

这将终止所有 PID 大于 1000 的进程

如果你需要终止特定用户的所有进程

taskkill /f /fi "USERNAME eq Batman"

这将终止用户 Batman 的所有进程

如果你需要终止启用了 RPC 服务的远程计算机上特定用户的所有进程

taskkill /s GothamServer /f /fi "USERNAME eq Batman"

这将终止远程机器 GothamServer 上用户 Batman 的所有进程

有关过滤器的更多信息,请查看taskkill /?

相关内容