pkill 与正则表达式

Gov*_*las 4 process kill regular-expression

我有几个运行如下的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,我想知道为什么正则表达式不起作用。

Era*_*iel 6

为此,您需要了解正则表达式的基础知识。该*修改并不意味着“什么”,因为它往往是假设。星号在 shell 中具有此含义,但这是不同的,而不是正则表达式。*意思是:取前一个字符(或一组字符,如果前面是一个[]组)并尝试在零到无限次出现之间匹配它。

因此,您实际检查的myapp_*.jar是进程列表中是否存在以下任何一项:

我的应用程序文件
myapp_.jar
myapp__.jar
我的应用___.jar
...

明白了吗?它在任何方面都不匹配“myapp_v.01.jar”。如果你想匹配任何字符,你将需要.. 所以你的正则表达式pkill可能是:myapp_*.*.jar