【问题标题】:Shell Script to Kill a java process - Not working用于杀死 Java 进程的 Shell 脚本 - 不工作
【发布时间】:2017-03-27 06:50:55
【问题描述】:

我为查找进程并杀死它而编写的 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?

【问题讨论】:

  • 如果你有 pkill 然后使用它
  • 如果我从 bash shell 手动运行 kill 它工作正常。
  • 然后使用pkill -f process_name
  • 它工作了,谢谢。但是为什么 kill 在 shell 脚本中失败,但是如果我在 bash 中编写命令就可以了
  • @anubhava 它没有给出任何错误,但同时它没有终止进程。

标签: linux bash shell unix


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2016-07-08
    • 2017-01-23
    • 1970-01-01
    • 2013-03-26
    • 2012-11-22
    • 2012-09-30
    • 2013-11-11
    • 1970-01-01
    • 2016-01-24
    相关资源
    最近更新 更多