当您通过PID强制终止进程时:
kill -9 1123
当进程终止时是否有任何方法被调用,直到关闭为止?
答案 0 :(得分:2)
对于java,您可以向进程添加ShutdownHook,当sigterm
发送到此进程时,ShutdownHook中的代码将在jvm自行关闭之前执行。
Runtime.getRuntime().addShutdownHook(new Thread() {
@Override
public void run() {
//your cleanup codes
}
});
答案 1 :(得分:1)
查看链接以检查两个信号之间的差异以及如何捕获它们等等。
简而言之,sigterm
允许进程在结束前清理他的东西(他的遗嘱),但是sigkill
没有,并且不能被你的应用程序困住! (假设程序永远运行且不可阻挡,这将是一团糟)
附加读物:
Why I am not getting signal SIGKILL on kill -9 command in bash?
https://major.io/2010/03/18/sigterm-vs-sigkill/
http://www.learnlinux.org.za/courses/build/shell-scripting/ch12s03.html