start-stop-daemon - start - make-pidfile - pidfile /var/run/myservice.pid --exec / usr / bin / java - -jar myservice.jar
start-stop-daemon --stop --quiet --oknodo --pidfile /var/run/myservice.pid
import sun.misc.Signal;
import sun.misc.SignalHandler;
public class DiagnosticSignalHandler implements SignalHandler {
// Static method to install the signal handler
public static void install(String signalName, SignalHandler handler) {
Signal signal = new Signal(signalName);
DiagnosticSignalHandler diagnosticSignalHandler = new DiagnosticSignalHandler();
SignalHandler oldHandler = Signal.handle(signal, diagnosticSignalHandler);
diagnosticSignalHandler.setHandler(handler);
diagnosticSignalHandler.setOldHandler(oldHandler);
}
private SignalHandler oldHandler;
private SignalHandler handler;
private DiagnosticSignalHandler() {
}
private void setOldHandler(SignalHandler oldHandler) {
this .oldHandler = oldHandler;
}
private void setHandler(SignalHandler handler) {
this .handler = handler;
}
// Signal handler method
@Override
public void handle(Signal sig) {
System. out .println( "Diagnostic Signal handler called for signal " + sig);
try {
handler.handle(sig);
// Chain back to previous handler, if one exists
if (oldHandler != SIG_DFL && oldHandler != SIG_IGN) {
oldHandler.handle(sig);
}
} catch (Exception e) {
System. out .println( "Signal handler failed, reason " + e);
}
}
}
* This source code was highlighted with Source Code Highlighter .
import sun.misc.Signal;
import sun.misc.SignalHandler;
public class App {
private SomeVeryImportantResource resource;
public static void main(String[] args) {
SignalHandler signalHandler = new SignalHandler() {
@Override
public void handle(Signal sig) {
...
resource.release();
...
}
};
DiagnosticSignalHandler.install( "TERM" , signalHandler);
DiagnosticSignalHandler.install( "INT" , signalHandler);
DiagnosticSignalHandler.install( "ABRT" , signalHandler);
...
resource. lock ();
...
}
}
* This source code was highlighted with Source Code Highlighter .
Source: https://habr.com/ru/post/78035/
All Articles