
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 つあります。
- 正しい PID (WINPID) を取得します。
- 適切なツールを使用してください。
強制終了する正しい WINPID を取得するには、 を使用しますcat /proc/<PID>/winpid
。つまり、これを実行します。
ZID=$$; WINPID=$(cat /proc/${ZID}/winpid); echo "Kill WINPID: ${WINPID}"; ps; sleep 10 &
そしてすぐに別のことを行いますps
。
適切なツールはシステムインターナルズ'PsKill64.exe -t <winpid>
はスクリプト プロセスのすべての子孫も強制終了しますが、これはkill
実行されません。