用于杀死java进程的Shell脚本 - 不起作用

时间:2017-03-27 06:50:55

标签: linux bash shell unix

我编写的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?

1 个答案:

答案 0 :(得分:1)

由于您可以使用pkill,因此最好使用pkill而不是长管道命令:

pkill -if 'java.*start\.jar'

正则表达式java.*start匹配与javastart.jar匹配的任何命令行