cygwinの「pkill」または「pgrep -f」の代替案は何ですか?

cygwinの「pkill」または「pgrep -f」の代替案は何ですか?

次のプロセスを開始したとしましょう。

java -DSOME_STRING -jar foo.jar

その後、Linuxでは、次のコマンドを使用してプロセスを検索または終了できます。

pgrep -f SOME_STRING
pkill -f SOME_STRING

しかし、これはcygwinでは動作しないようです。誰もがcygwinでこれらのツールの代替案を提案できますか?

ベストアンサー1

pkillとpgrepは間違いなくCygwinに存在します。プロセスパッケージ(cygwinパッケージを検索できます。ここ)。

私には効果があるようですが、

tony:~$ nohup sleep 100983 &
[1] 5476
tony:~$ nohup: ignoring input and appending output to `nohup.out'
tony:~$
tony:~$ ps -ef | grep sleep
    tony    5476    2696   2  23:28:53 /usr/bin/sleep
tony:~$ pkill -f sleep
[1]+  Terminated              nohup sleep 100983
tony:~$

そして

tony:~$ nohup sleep 837746 &
[1] 228
tony:~$ nohup: ignoring input and appending output to `nohup.out'
tony:~$ pgrep -f 837746
228
tony:~$ pkill -f 837746
[1]+  Terminated              nohup sleep 837746
tony:~$

アップデート:いいですね。 javaでテストしました。 Cygwinコマンドラインからjavaを実行すると、Java文字列は含まれずに/proc/<pid>/cmdline含まれます-bash。これはCygwinの制限事項のようです。

tony:~$ java -Dsomething=valid -jar Captor.jar &
[1] 2700
tony:~$ ps -ef
     UID     PID    PPID TTY     STIME COMMAND
    tony    4164       1   ?    Aug 21 /usr/bin/mintty
    tony    4676    4164   0    Aug 21 /usr/bin/bash
    tony    5776    4676   0    Aug 23 /usr/bin/ssh
    tony    5148       1   ?  23:53:03 /usr/bin/mintty
    tony    5332    5148   1  23:53:03 /usr/bin/bash
    tony    5816       1   ?  00:04:16 /usr/bin/mintty
    tony    5432    5816   2  00:04:16 /usr/bin/bash
    tony    2700    5432   2  00:04:34 /cygdrive/c/Windows/system32/java
    tony    2232    5432   2  00:04:39 /usr/bin/ps
tony:~$ pgrep -f something
tony:~$ cat /proc/2700/cmdline
-bash
tony:~$
tony:~$ cat /proc/2700/exename
/cygdrive/c/Windows/system32/java

したがって、Cygwinツールを使用してこれを行うことはできず、Windows専用ツールが必要であるという答えが出ているようです。

おすすめ記事