Java 프로세스 이름에서 실행 중인 Java 애플리케이션 확인

Java 프로세스 이름에서 실행 중인 Java 애플리케이션 확인

저는 Sublime Text 3에 대한 JavaScript 단위 테스트를 위한 내장 시스템을 작성하고 있습니다. 나는 사용하고있다
JS 테스트 드라이버내 테스트 프레임워크로. Sublime Text는 하나의 명령만 실행할 수 있으므로 bash 스크립트를 사용하여 작업을 수행했습니다. js-test-driver는 Java 애플리케이션이며 이미 실행 중인지 테스트할 수 있기를 원합니다. 내가 아는 한, 프로세스 이름은 입니다 . 프로세스 내에서 어떤 Java 애플리케이션이 실행되고 있는지 java알 수 있는 방법이 있습니까 ? java그렇지 않은 경우 특정 Java 애플리케이션이 실행 중인지 어떻게 테스트할 수 있습니까?

답변1

jps다음 명령을 사용할 수 있습니다 .

jps | grep "[0-9][0-9]* js-test-driver"

그러나 호출되지 않을 js-test-driver수도 있습니다 js-test-driver.jar. 먼저 출력을 살펴보세요 jps.

답변2

(대부분의 Linux 시스템에서 표준 이어야 procps-ng ps함) 이 -C옵션을 사용하여 특정 이름의 명령으로 출력을 제한할 수 있습니다. 아마도 js-test-driver명령 매개변수 어딘가에 있을 것입니다. 다음을 사용하여 실행 중인 프로세스의 모든 매개변수를 나열할 수 있습니다 java.

ps -C java -o args=

js-test-driver매개변수 목록의 어느 곳에서나 테스트하려면 다음을 수행할 수 있습니다.

ps -C java -o args= | grep -q js-test-driver &&
  echo 'js-test-driver running'

pgrep위와 동일하게 를 사용할 수도 있습니다 .

pgrep -f js-test-driver >/dev/null && echo 'js-test-driver running'

프로세스가 실행 중인지 확인하는 이유가 동시에 두 개의 스크립트를 시작하지 않기 위한 것이라면 가능한 경쟁 조건을 피할 수 있는 보다 안정적인 방법이 있다는 점에 유의하십시오. 날 봐여기에 대답하세요파일을 잠그는 방법의 예.

관련 정보