정규식 pkill 사용

정규식 pkill 사용

아래와 같이 여러 Java 프로세스가 실행되고 있습니다.

java -jar /my/path/to/app/myapp.jar

java -jar /my/path/to/app/prodapp.jar

java -jar /my/path/to/app/testapp.jar

java -jar /my/path/to/app/myapp_v.01.jar

pkill -f myapp.jar이제 예상대로 작동하는 특정 프로세스를 종료할 수 있습니다 . 정규식을 사용하여 myapp_v.01.jar을 종료하는 방법을 시도해 보았습니다 pkill -f myapp_*.jar. 이 정규식에 어떤 문제가 있나요?

나는 대체품을 찾고 있지 않습니다 pkill. 정규식이 작동하지 않는 이유를 알고 싶습니다.

답변1

그러기 위해서는 정규식의 기본을 알아야 합니다. 이 *수식어는 흔히 생각하는 것처럼 "아무것도"를 의미하지 않습니다. 별표는 셸에서 이러한 의미를 가지지만 정규 표현식이 아니라 다릅니다. *의미: 이전 문자(또는 그 앞에 문자 세트가 있는 경우 문자 세트 [])를 가져오고 0에서 무한 발생 사이의 일치를 시도합니다.

따라서 실제로 확인하고 싶은 것은 myapp_*.jar프로세스 목록에 다음 중 하나가 있는지 여부입니다.

myapp.jar
myapp_.jar
myapp__.jar
myapp___.jar
...

이해했나요? 어떤 방식으로든 "myapp_v.01.jar"과 일치하지 않습니다. 어떤 문자와도 일치시키려면 가 필요합니다 .. 따라서 정규식은 pkill다음과 같습니다.myapp_*.*.jar

관련 정보