我有 3 个 solr 实例正在运行
- 使用 tomcat (在 shell 中你会发现类似 -Dcatalina.base=/usr/local/apache-tomcat-6.0.35 -)
- 起诉 tomcat_1(在 shell 中你会发现类似 -Dcatalina.base=/usr/local/apache-tomcat-6.0.35_1 -)
- 使用 tomcat_2 (在 shell 中你会发现类似 -Dcatalina.base=/usr/local/apache-tomcat-6.0.35_2 -)
我可以写一个 shell 脚本来终止特定实例吗
- 对于 1:杀死 tomcat,但不杀死 tomcat_1 和 tomcat_2
- 对于 2:杀死 tomcat_1,但不杀死 tomcat 和 tomcat_2
- 对于 3:杀死 tomcat_2,但不杀死 tomcat 和 tomcat_1
答案1
四年前,当我写下这个答案时,我还是 Linux 和 shell 新手 —— 而原始答案中所有不必要的grep
ing 和sed
ing 使得这一点显而易见……
当然有一个更简单的解决方案:
pkill -f 'tomcat-6.0.35 '
将向所有进程发送 SIGTERM完整命令行(= 可执行文件的名称 + 启动时使用的参数 — 因此-f
)包含字符串“tomcat-6.0.35”。请确保包含尾随空格,以避免匹配“tomcat-6.0.35_1”等。
您还可以使用pgrep
而不是pkill
来列出进程 ID,而不是直接对它们发送 SIGTERM 信号。