cygwinターミナルでWindowsプロセスを強制終了するには?


18

Windows上のCygwinでプロセスを強制終了する方法に関して問題があります。私はCygwinを初めて使用します。しかし、私には単純に殺すことができない仕事があります。次のコマンドを発行しようとしました。

kill 4568
kill -9 4568
/bin/kill -f 4568

プロセスが実行されるCygwinターミナルではCtrl + Cを使用できないため、別のCygwinターミナルでコマンドを発行しました。私は成功しなかったが、インターネット上で検索した。


あなたが始めたプロセスは何で、どのように始めましたか?
me_and

回答:


25
ps -W | awk '/calc.exe/,NF=1' | xargs kill -f

または

ps -W | awk '$0~v,NF=1' v=calc.exe | xargs kill -f

または

powershell kill -n calc

ps -W | awk 'BEGIN{ IGNORECASE=1;} /calc.exe/,NF=1' | xargs kill -fWindowsでは大文字と小文字が区別されないため、使用することをお勧めします
-tricasse

7

試すことができます:

taskkill /pid 4568

taskkill /im:{name-of-executable}同様に便利です。
ローレンス

そして、taskkill /im <name-of-exe> /fさらに便利です。
エリックカプルン

1
悪い答え、OPはCygwinコマンドを要求しました。
ハシム

1
それはtaskkill //im <name-of-exe>(2つのスラッシュの必要性に注意してください)
P.Brian.Mackey

5

BASHのみのソリューションが必要な場合は、これを試してください:(それは私のために動作します)

    KILLPS="<My Process Name>"
    WINPS=`ps -W | grep -i $KILLPS`         # Make case-insensitive.
    PID=`echo $WINPS | cut -d' ' -f1` 
    /bin/kill -f "$PID"

注:/ bin / killを使用します。組み込みシェルキルは、一般的なWindowsプロセスのPIDをキルしません。


/ bin / kill対shell killについてのメモは非常に役に立ちました。ありがとう
フィル

2

SOに関する同様の質問への私の答えから):

異なるWindowsプログラムは、killが送信するシグナルを異なる方法で処理します。Linux / Cygwinプログラムと同じ方法でそれらに対処するように設計されたことはありません。

Windowsプログラムを強制終了する唯一の信頼できる方法は、タスクマネージャーやプロセスエクスプローラーなどのWindows固有のツールを使用することです。

ただし、まだお持ちでない場合は、Cygwinターミナルを管理者モードで実行することができます(ショートカットを右クリックして[管理者として実行]を選択します)。


1

ここで考慮すべき2つのこと:

  1. WINPIDである正しいPIDを取得します。
  2. 適切なツールを使用してください。

削除する正しいWINPIDを取得するには、を使用しますcat /proc/<PID>/winpid。すなわち、これを実行します:

ZID=$$; WINPID=$(cat /proc/${ZID}/winpid); echo "Kill WINPID: ${WINPID}"; ps; sleep 10 &

そしてすぐに別のことを行いますps

使用する適切なツールはsysinternals PsKill64.exe -t <winpid>で、スクリプトプロセスのすべての子孫も強制終了しますが、そうしkillません。


1
に投票しましたcat /proc/${ZID}/winpid。知っておくと良いでしょう。ps -aW | grep ...少なくともWin 7 x64でのcygwinでは、ソリューションよりも高速です。しかし、PsKill64の-t場合、サブプロセスを強制終了する必要があると思いますtaskkill。サブプロセスも強制終了できます。
244an

はい、-t子孫を殺す必要もあります。正解。
not2qubit

0

あなたが使用することができますcygwinのbashのプロセスの下でサブプロセスであるWindowsプログラムがある場合はtaskkill /F /PID [the cygwin process id] /T、[ウィンドウからPIDを取得する必要プロセスツリーを殺すしないようにpsawkなど
これは、Win7のx64の下でテストされています。

# Simple example in cygwin:
> notepad.exe &
> pid=$!
...
> taskkill /F /PID $pid /T

もちろん、Window PIDも使用できます。


0

Git Bashでは次を使用します。

targetProcess='chromedriver.exe';
ps -W | grep -i ${targetProcess} | awk '{print $1}' | while read pid; do taskkill //PID ${pid}; done;

Cygwinで試したことはありませんが、Cygwinでも機能すると思います。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.