Bash脚本,通过从PID文件中提取来终止进程

Jos*_*ton 13 linux bash shell pid glassfish

这就是我现在在bash脚本中所拥有的:

ps aux | grep glassfish | grep domain1 | gawk '{print $2}' | xargs kill -9
Run Code Online (Sandbox Code Playgroud)

这样做的问题是,如果其他人登录并拉动与glassfish相关的东西,那么它也将拉动该PID.从而导致杀死错误的PID.

所以我的问题是如何修复我只需要提取正确的PID,以及如何重写它以从glassfish生成的PID文件中提取PID.

Tho*_*4no 17

编辑启动glassfish的脚本,并在紧接启动流程的行之后的行上放置类似的内容echo $$ > /path/to/PID-file(这可以包含~主目录或其他一些机制,例如$USER使用户特定).然后,您可以使用杀死正确的进程kill $(cat /path/to/PID-file).

  • UUOC为bash.`$(<file)` (4认同)
  • @jordanm在这里使用cat的性能影响几乎不可测量,更不用说用户注意到了.任何*天我都会更好的可读性.如果它让你感觉更好,你可以用'less`替换它,但是`$(<file)`会让绝大多数新手感到困惑. (4认同)