Auto-restart process on crash

8

6

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

Posted 2010-12-18T17:09:35.823

Reputation: 443

Question was closed 2014-03-05T00:25:50.573

Answers

15

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.

Andy Smith

Posted 2010-12-18T17:09:35.823

Reputation: 691

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? – sasuke – 2010-12-18T18:08:12.643

Sounds like something I should write :-D – Andy Smith – 2010-12-18T19:34:35.660

You really should I guess ;-) BTW, up-voted and accepted. – sasuke – 2010-12-19T06:31:15.293

You may also want to look at using crontab to monitor your process. This script will also survice a reboot. http://servermonitoringhq.com/blog/how_to_keep_a_job_running_in_linux

– Ian Purton – 2012-02-03T11:56:27.140

5

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.

Gilles 'SO- stop being evil'

Posted 2010-12-18T17:09:35.823

Reputation: 58 319

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 – 2010-12-19T06:29:06.497

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 – 2010-12-19T06:30:22.533

@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. – Gilles 'SO- stop being evil' – 2010-12-19T13:25:12.187

Ah, got that. Mucho appreciated. :-) – sasuke – 2010-12-19T16:52:25.460