プロセスID(PID)はコンピュータシステム上で実行中の各プロセスに割り当てられる一意の識別子です。
プロセスIDを使用して、特定のプロセスを終了させたり、プロセスのリソース使用状況を監視したりできます。
今回は、そんなプロセスIDからプロセス名を確認する方法、
その逆で、プロセス名からプロセスIDを確認する方法をご紹介します。
プロセスIDからプロセス名を確認
あらかじめ、何らかの手段でPIDが分かっているとします。
次のようにchrome.exeのPIDを例にしてみます。
今回は、次のようにchrome.exeのPIDが分かっている環境でテストしてみます。
PIDからchromeをレスポンスできれば、想定通りです。
適当なバッチファイルを作成して、次をコピペします。
例ではcheck_name_from_ID.bat
としました。
PID=7764にあたるプロセス名を検索します。
@echo off
setlocal
set "PID=7764" REM プロセスIDをここに指定
for /f %%a in ('powershell "(Get-Process -Id %PID%).Name"') do set "ProcessName=%%a"
echo processID %PID% is %ProcessName%
endlocal
pause
実行結果がこちらです。
無事に「chrome」を見つけることができました。
PIDからプロセス名を取得できました。
プロセス名からプロセスIDを確認
次はその逆をやってみます。
プロセス名からPIDを確認します。
同様にバッチファイルを作成して、次をコピペします。
例では、check_ID_from_name.bat
としました。
@echo off
setlocal enabledelayedexpansion
set "targetProcess=chrome.exe" REM プロセスIDをここに指定
for /f "tokens=2 delims=," %%a in ('tasklist /fi "imagename eq %targetProcess%" /nh /fo csv') do (
set "pid=%%~a"
)
if not defined pid (
echo "%targetProcess%" is none
) else (
echo "%targetProcess%" PID: !pid!
)
pause
実行結果はこのようになります。
単一のPIDの場合はこれでよいのですし、
何かのプログラムで再利用するならPIDがレスポンスされる方が都合が良いです。
ただ複数PIDの場合だと別の形式の方が都合が良いこともあります。
そこでちょっと別の方法も紹介したいと思います。
プロセス名から複数のプロセスIDを列挙
別記事でも紹介している方法です。
特定の名前を含むプロセス名をすべて列挙します。
@echo off
set "processName=chrom*"
tasklist /fi "imagename eq %processName%" /NH > specified_process_list.txt
echo process_list saved
pause
実行結果がこちらです。
省略していますが、テキストファイルとして「specified_process_list.txt」がファイル出力されます。
中身はこのようになっています。
はい。冒頭で見せていたリストですね。
この結果が出力できていれば、後はパースしてPIDを取り出す、ということもできるはずです。
ということで、
無事にプロセスIDからプロセス名を確認、その逆で、プロセス名からプロセスIDを確認することができました。
プロセスIDからプロセス名を確認したり、その逆ができると、
特定のプロセスに何らかの処置をしたり、監視ができます。
プログラム作成者の方であればデバッグに役立つことでしょう。
ユーザー視点でも、何か起動しないと思ったら前のプロセスが残っていた、というのはあるあるだと思います。
プロセス名を取得することで、効率的に作業を行いやすくなるのではないでしょうか。
今回は以上となります。
本記事が少しでもお役に立てれば幸いです。
それでは、読んで頂きありがとうございました!