デバッグのためにVSからVSの実験用インスタンスを起動し、デバッグを停止すると(親VSから直接起動する場合)、ゾンビのdevenv.exeプロセスが実行されたままになり、強制終了できません。それは私のdllの多くに当てはまります。
私は管理者としてこの64ビットWin7マシンにログオンしているので、私は私が望むすべてのプロセスを終了させることができると期待するでしょう。
I tried (from Administrator command Prompt):
End Task from Task Manager.
TASKKILL /F /IM devenv.exe
PSKILL devenv.exe
どれもエラーを返さず、TASKKILL
とPSKILL
はプロセスの終了/強制終了の成功メッセージを返しました。しかし、devenv.exeはまだ実行され、PID
は定数のままであるため再生成されません。それは素晴らしい解決策ではない、システムの再起動時に消えます。
注意。 LockHunterは、devenvが自分自身をロックしていることを示しています。そしてそれはそれを解除することはできません。
上のスクリーンショットは、devenvが何らかの「プロセスプロファイリング」ループに入っていることを示すプロセスモニタの出力です(正しく表示するには、右クリックして新しいタブで画像を開くをクリックします)。
どのようにWindows上のそのようなプロセスを殺すために任意のアイデア?
プロセスを正常に終了するために生成されたものがある場合は、子プロセスも終了する必要があります。
taskkill /IM "process_name" /T /F
/T = kills child process
/F = forceful termination of your process
Windows Server 2008 R2で同じ問題が発生しただけで、何の問題もなく、taskmanagerやtaskkillも問題ありませんでした。しかし、Windows PowerShellは管理者が "kill -id pid"で作業したように動作します。
再起動は私にとって有効な唯一の解決策です(これまで)。
これまでにない優れたMark Russonovichは、殺すことができないプロセスについての良い説明を持っています。
まとめると、未処理のI/O要求が適切に処理されていないために(プログラムがアクセスした可能性があるデバイスドライバによって)可能性があります。
http://blogs.technet.com/b/markrussinovich/archive/2005/08/17/unkillable-processes.aspx
Taskkillおよびpowershell(kill)メソッドは私にとってはうまくいきませんでした。それはまだ「アクセスが拒否されました」と言いました。
私はこれで運が良かった:
wmic process where "name='myprocessname.exe'" delete
私はそれが遅れていることを知っていますが、taskkill /im devenv.exe /t /f
はうまくいくはずです。 /t
は子プロセスも殺します。
私の場合、この問題との戦いの数日後(VirtualBoxとμTorrentのプロセスに起こっていました)、私はそれがWindows Updateパッチによって引き起こされたネットワークドライバの問題によるものであることを発見しました KB4338818 (Windows 7 x 64)そのパッチをアンインストールした後、すべてが正常に戻りました。私はちょうどそれが他の人に役立つかもしれないと思った。
私はこれを数回見ました、そして、私の唯一の解決策は再起動でした。
あなたはPowerShellを使ってみることができます。殺します
しかし、他の方法が失敗した場合、これもおそらくそうでしょう。 :-(
この問題を解決するために、Explorer.exeを強制終了することで解決しました。これは、プロセスがロックされている可能性があるフックを介してインターフェイスを開く場合にも発生する可能性があります。
ネイティブのtskill <pid>
(またはtskill.exe <pid>
)は、他のネイティブの答えがなかったWindows 10で私のために働きました。
私の場合、タスクマネージャの「タスクの終了」が機能しているchrome.exeプロセスがいくつかありましたが、taskkill /F /T /PID <pid>
もpowershellのkill -id <pid>
も機能しませんでした(両方のシェルが管理者として実行されている場合でも)。
taskkill
はtskill
のより良いapi-and-do-moreバージョンであると主張されているので、これは非常に奇妙です。
私の場合は、FOR /F "usebackq tokens=2 skip=2" %i IN (`TASKLIST /FI "IMAGENAME eq name_of_task.exe"`) DO tskill %i
を使った特定のタスクのすべてのインスタンスを強制終了します。
私は最近同じ問題に直面し、答えの中であらゆる可能なことを試したが何もうまくいかなかったので、ここで何かを提案するつもりです。私はのようなエラーを得ていました
エラー:PID 23908のプロセスを終了できませんでした。理由:タスクの実行中のインスタンスがありません。
コマンドプロンプトを使用します。 Power Shellも役に立ちませんでした。それは単にコマンドを実行するだけで、プロセスはまだ実行されているのに応答しません。
関連付けられている「.exe」ファイルを削除することにしたまで。ファイルがアクティブだったので、ウィンドウは削除を許可しませんでした、しかしその警告ウィンドウでそれは私が殺したいタスクを遅らせていたプロセスの名前を私に与えました。私はオリジナルのタスク、そしてそれ故にバグの多いプロセスを殺すことができました。
解決策がどれもうまくいかない場合は、ぜひ試してみる価値があります。
いくつかのExeファイルはいくつかのサービスに依存しています、
それで、あなたはそれぞれのサービスを見つけて、最初にやめる必要があります。
私はtaskkill
で以下の結果を得ていました
>taskkill /im "MyApp.exe" /t /f
ERROR: The process with PID 32040 (child process of PID 54176) could not be terminated.
Reason: There is no running instance of the task.
>taskkill /pid 54176 /t /f
ERROR: The process "54176" not found.
私にとってうまくいったのは sysinternalのpskill
です。
>pskill.exe -t 32040
PsKill v1.15 - Terminates processes on local or remote systems
Copyright (C) 1999-2012 Mark Russinovich
Sysinternals - www.sysinternals.com
Process 32040 killed.
pskill
は sysinternalのライブサイト から入手できます。
VirtualBoxでも、Javaプロセスに関して同じ問題が起こりました。
私の場合は、Windows UpdateパッチKB4338818(Windows 7 x 64)のバグによるものです。
私は次のようにしてそれを解決しました:
私は高められた権限で次のことをしました:
PS C:\Windows\system32> wmic.exe /interactive:off process where "name like `'Java%'`" call terminate
コマンド出力:
Executing (\\SRV\ROOT\CIMV2:Win32_Process.Handle="3064")->terminate()
Method execution successful.
出力パラメータ:
instance of __PARAMETERS
{ReturnValue = 0; };
私はいくつかの構文情報を得ました: https://community.spiceworks.com/topic/871561-wmic-error-like-invalid-alias-verb
Code :: Blocksでgdbを使ったデバッグしたプロセスに問題があります。ソースやシステム関数を持たないlibのように、誤ってソースの範囲外の命令に踏み込んでいる間にハングアップしてしまうと、Code :: BlocksからもTask-Managerからもデバッグを終了できません。
Code :: Blocksでのgdbの実装ではエラーだと思いますが、gdbでも構いません。)
私の解決策:
taskkill /F /IM process.exe /T
これは親プロセスのPIDを表示します。今親を殺す:
taskkill /PID yyyy
両方ともなくなりました。
完了しました。
私にとって、それが働いた方法は私が親プロセスを殺さなければならないということです。親プロセスを把握し、それを殺します
taskkill /IM "parent_process_name.exe" /T /F
あなたが無料のSysinternals Suiteをダウンロードするならば、それはこれらのタイプのタスクに適しているpskill.exeアプリケーションを持っています。
taskkill /F /T /PID <pid>
が機能しない場合Run as Administrator
で端末を開いてみてください。
ウィンドウズメニューでcmd
を検索し、Run as Administrator
を右クリックしてから、コマンドを再実行してください。これは私のために働きました。
Francis のように、一部のプロセスは次の理由で終了できません
「未処理のI/O要求」
私の経験では、バグのあるものを扱っていましたグラフィックドライバー最後の手段idisabledグラフィックドライバーとプロセスはついになくなりました。
アプリケーションがresource fromdriverを待っている場合、wifiやグラフィックを試してみてくださいdisablingそれらをデバイスマネージャ、ハングした場所を確認するには、少し深く掘り下げる必要があります。
もちろんこれはお勧めしませんが、時にはもう失うものがない場合があります。
私は同じ問題を抱えていました、そして、他の多くの人がここでは通常のKillコマンドのどれも働かなかったと言いました。私の問題ファイルは、リモートデスクトップサーバー上のユーザーによってネットワーク共有から実行されていた実行可能ファイルでした。複数の共有ユーザーがいる場合、就業日に簡単に再起動することはできません。ユーザーがexeをログオフしたときでも、タスクマネージャにまだ表示されていました。フォルダが共有されているサーバーに送信し、[コンピュータの管理] - > [セッション]から、ログオフしたにもかかわらず、そのRDPサーバーからまだセッションが開いているユーザーを見つけました。右クリック - >セッションを閉じるとファイルのロックが解除されました。
私がタックを終わらせることができなかった理由私を打ってください。ファイルを削除しようとしたときに最初に表示されていたエラーメッセージは、「ファイルがシステムで開かれているため、処理を完了できません」でした。
これが他の人に役立つことを願っています。
私は、ポート3000でノードアプリを起動したところ、正しく閉じられず、再起動後もプロセスが実行され続けるという同じ問題に直面しました。
管理者モードで実行されているtaskkillまたはpowershellコマンドはどれも私にとっては役に立ちませんでした。
私はMS Process Expoler>プロパティ>画像>現在のディレクトリ(私のプロジェクトディレクトリになるはずだった)を使いました。
最後に、SafeModeで再起動し、プロジェクトフォルダの名前を変更して再起動する必要がありました。ポート3000を消費していたNodeプロセスはそれ自身を殺しました。
まったく同じ問題があり、別のサイトでこの修正を見つけました:powershell.exe "Get-Process processname | Stop-Process"それは私にとってはうまくいったし、私は再起動しなければならなかったのと同じボートにいました。 。
私は同じ問題を抱えていたので、cmd
を "Run as administrator"として実行してみてください。
管理者としてCMDを実行すると問題が解決します