我为找到进程并杀死它而编写的 shell 脚本不起作用。我已经尝试了堆栈溢出中的所有帖子,但没有一个适合我
脚本如下:
pid=`ps aux|grep 'java -server -Xmx512M -jar -Dsolr.solr.home=. start.jar' | grep -v grep | awk '{print $2}'`
echo Stopping Solr Server with PID $pid
kill $pid
这里的问题是,虽然回声给出了正确的 PID 说 12345但是杀戮会抛出错误
: arguments must be process or job IDs45
我不明白为什么只有PID的最后两位数被传递来杀死?
由于您有可用的pkill
,因此最好使用 pkill
而不是 long pipeline 命令:
pkill -if 'java.*start.jar'
正则表达式java.*start
匹配任何与java
和start.jar
匹配的命令行