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 전용 도구가 필요하다는 대답이 나올 것 같습니다.

답변2

이전 Cygwin 버전에서는 procps패키지를 설치하여 동일한 명령을 사용하여 동일한 기능을 얻을 수 있습니다.

최신 Cygwin 버전에서는 이 procps패키지가 더 이상 존재하지 않으며 package 로 대체됩니다 procps-ng.

답변3

Cygwin 유틸리티는 Linux 유틸리티와 유사하게 작동하지만 Cygwin 프로세스에서만 작동합니다. Windows 프로세스의 경우 다음과 같은 Windows 유틸리티를 사용해야 합니다.시스템 내부.죽이다프로세스는 이름으로 종료될 수 있습니다.

관련 정보