Cygwin ターミナルで Windows プロセスを強制終了するにはどうすればいいですか?

Cygwin ターミナルで Windows プロセスを強制終了するにはどうすればいいですか?

Windows 上の Cygwin でプロセスを強制終了する方法に関して問題があります。私は Cygwin をまったく使いません。しかし、どうしても強制終了できないタスクがあります。次のコマンドを発行してみました。

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

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

答え1

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

答え2

以下をお試しください:

taskkill /pid 4568

答え3

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 を使用してください。埋め込みシェルの kill では、一般的な Windows プロセスの PID は強制終了されません。

答え4

ここで考慮すべき点が 2 つあります。

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

強制終了する正しい WINPID を取得するには、 を使用しますcat /proc/<PID>/winpid。つまり、これを実行します。

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

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

適切なツールはシステムインターナルズ'PsKill64.exe -t <winpid>はスクリプト プロセスのすべての子孫も強制終了しますが、これはkill実行されません。

関連情報