的情況如下:我有一個Java後臺程序,這應該不會終止。但是,如果發生意外錯誤,則應通過腳本重新啓動崩潰的JVM。所以我寫了一個命令,它啓動了一個後臺bash,它有一個啓動JVM的循環(所以當JVM終止時,它將會重新啓動)。殺死一個bash進程不殺bash的當前運行的進程
/bin/bash -c "while true; do java ...; done" &
爲了能夠停止該守護進程,我想殺死這個bash的後臺進程(通過保存它在一個文件進程ID)。這是有效的,因爲背景bash不會重新啓動JVM,但仍然不會殺死當前正在運行的進程 - 所以bash似乎在它檢查kill命令之前結束它的當前命令。我想讓當前正在運行的JVM也被殺死。
因爲我不想管2倍的PID(一個爲背景bash和一個當前運行的JVM),有「力殺」的一種方式,其設計停止當前的命令? (我在殺人時找不到這樣的東西)?
主機操作系統是什麼? Linux呢?你對系統有管理權限嗎? – pb2q
這是Linux。我正以具有sudo權限的用戶身份執行。 – David
[殺死所有子進程的最佳方法](http://stackoverflow.com/questions/392022/best-way-to-kill-all-child-processes)可能是你正在尋找的東西。 –