Auto-restart process on crash

11,898

Solution 1

There's a few options - you could always wrap it in a short shell script like this:-

#!/bin/sh

RC=1
while [ $RC -ne 0 ]; do
   ./my-java-app
   RC=$?
done

Far from elegant, but may suffice.

Solution 2

What you're looking for is usually called process monitoring or process supervision. There are many tools that do this, usually as part of a varying set of features. Upstart is more and more used for system services in the Linux world. Monit is the first thing I'd try for a program not started by root, but there are many alternatives.

Share:
11,898

Related videos on Youtube

sasuke
Author by

sasuke

Updated on September 17, 2022

Comments

  • sasuke
    sasuke over 1 year

    I have a Java server process which runs native code and the possibility of the entire process crashing due to a problem in native code is always there. Is there any mechanism offered by *nix operating systems wherein I can make the process re-spawn itself when it exists abnormally (exit status != 0)?

    Is there any tool/utility out there which can automate this task for any kind of process by providing a certain level of control/configuration at the same time?

  • sasuke
    sasuke over 13 years
    Works nice! One more question: is there any tool/utility out there which can automate this task for any kind of process by providing a certain level of control/configuration at the same time?
  • Andy Smith
    Andy Smith over 13 years
    Sounds like something I should write :-D
  • sasuke
    sasuke over 13 years
    Those tools sounds interesting. For the time being I've decided to go with the simple approach suggested by Andy, but I'll surely keep these tools in mind when it comes to a bit more involved process management. Thanks.
  • sasuke
    sasuke over 13 years
    BTW, just wanted to confirm, given that Monit is GPL'ed tool, would it be OK if it was used for monitoring proprietary apps running on my box?
  • sasuke
    sasuke over 13 years
    You really should I guess ;-) BTW, up-voted and accepted.
  • Gilles 'SO- stop being evil'
    Gilles 'SO- stop being evil' over 13 years
    @sasuke: The GPL doesn't put any restriction on what you can use the program for. In fact it only comes into play if you distribute GPL material.
  • sasuke
    sasuke over 13 years
    Ah, got that. Mucho appreciated. :-)
  • Ian Purton
    Ian Purton over 12 years
    You may also want to look at using crontab to monitor your process. This script will also survice a reboot. servermonitoringhq.com/blog/how_to_keep_a_job_running_in_lin‌​ux