场景如下:我有一个 java 守护进程,它应该不会终止。但是,如果出现意外错误,崩溃的 JVM 应该通过脚本重新启动。所以我写了一个命令来启动一个后台bash,它有一个循环启动JVM(所以当JVM终止时,它将再次重新启动)。
/bin/bash -c "while true; do java ...; done" &
为了能够停止守护进程,我想杀死这个 bash 后台进程(通过将它的进程 ID 保存在文件中)。只要后台 bash 不会重新启动 JVM,但仍然不会杀死当前正在运行的进程,这就是有效的——因此 bash 似乎在检查 kill 命令之前就结束了它的当前命令。我也想杀死当前正在运行的 JVM。
由于我不想管理 2 个 PID(一个用于后台 bash,一个用于当前运行的 JVM),有没有一种“强制终止”的方法,可以通过设计停止当前命令?(我在 man kill 中找不到这样的东西)?