web-dev-qa-db-ja.com

アプリケーションのプロセスpidを見つける方法

ポータブルバージョンのアプリを持っています。たとえば、5つのインスタンスを複数実行しましたが、それらはすべて同じプロセス名ですが、pidが異なります。たとえば、特定の1つのプロセスを強制終了する方法を見つけたいのですが、そのプロセスの名前でtaskkillを使用すると、それらすべてが強制終了されます。そのプロセスのpidを提供することにより、特定のものだけを強制終了したいと思います。
質問は次のとおりです。この番号を使用して特定のアプリケーションを簡単に強制終了できるように、プロセスpidを見つけるにはどうすればよいですか。
たとえば、3番目のものを殺したい(つまり、時間を使って)。
pidは、プロセスがいつ実行されたかについての情報を教えてくれますか?そうでない場合、他の回避策は何ですか?

3
user441228

あなたが述べたように、複数のインスタンスはすべて異なる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!".
)
3
Karan

これは、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番目のものを停止します。

3
Zachary Turner

組み込みツールのみを使用してプログラムのPIDをすばやく見つける方法が必要な場合は、Windowsタスクマネージャーを使用してこれらすべてを実行できます。

  • アプリケーションタブで、アプリケーション名を見つけます。どちらが正しいかわからない場合は、右クリックして前面に移動を選択します。正しいものが前面に出てきたら、正しいエントリがあります。
  • アプリケーション名を右クリックして、プロセスに移動を選択します。
  • オプションで、PIDを表示する場合は、[表示]-> [列]に移動し、PID(プロセス識別子)が選択されていることを確認します。
  • 強調表示されているプロセスを右クリックし、プロセスの終了を選択します。
2
GuitarPicker

Windowsでは(「taskkill」からWindowsについて話していると思います)、プロセスIDはオペレーティングシステムによって選択されます。それはあなたが「設定」できるものではありません。

それも予測できません。

申し訳ありません。

0
Jamie Hanrahan

プロセスのPIDは一意の識別子です。 2つ以上のインスタンスが同じPIDを持つことはできず、PIDはオペレーティングシステムKernellによって内部的に管理され、変更することはできません。

私がこの質問を理解している限り、あなたは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 /?を確認してください。

0
Felype