我编写的shell脚本用于查找进程并将其终止但无效。我已经尝试过stackoverflow中的所有帖子,但没有一个对我有用
脚本如下:
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
这里的问题是,虽然echo给出了正确的PID 12345 但是kill会抛出错误
: arguments must be process or job IDs45
我不明白为什么只有最后两位PID被传递给kill?
答案 0 :(得分:1)
由于您可以使用pkill
,因此最好使用pkill
而不是长管道命令:
pkill -if 'java.*start\.jar'
正则表达式java.*start
匹配与java
和start.jar
匹配的任何命令行