[CentOS] centos command to monitor a process for exit

Sat Jan 12 15:37:14 UTC 2008
William L. Maltby <CentOS4Bill at triad.rr.com>

On Fri, 2008-01-11 at 16:06 -0800, Bill Campbell wrote:
> On Sat, Jan 12, 2008, mouss wrote:
> >Les Mikesell wrote:
> >> Jerry Geis wrote:
> >>> Is there a command that will monitor a process for exiting (crash or
> >>> normal exit) and
> >>> then execute another command based on the said process no longer being
> >>> active?
> >>>
> >>> Or is there a "wrapper" command that runs a process and when that
> >>> process exists
> >>> due to crashing or just exiting normally) that another process can be
> >>> run.
> >>>
> >> 
> >> Why not use a shell script as a wrapper?  If you don't put something in
> >> the background with an & on the line, the next line will execute when/if
> >> the program started on the current line exits.  There are nearly always
> >> other copies of the shell running anyway so you get shared-text
> >> efficiency.  If you just want to keep restarting the same program,
> >> something like this should run forever.
> >> 
> >> while :
> >>  do
> >>   my_program
> >>  done
> >> 
> >
> >This has two issues (at least):
> >- if the program is a daemon, it returns immediately, so the scrpit will
> >try to start the program again and again
> >- if the script gets a signal, it will be killed. back to start.
> 
> If you use ``kill -0 pid'' it shouldn't affect the running process, and
> will return success ($? = 0) if the process is running, and fail otherwise.
> 
> A fairly standard way of checking things like this is:
> 
> pidfile=/var/run/progname.pid
> progname_signal() {
> 	[ -f $progname_pidfile ] && kill -$1 `cat $progname_pidfile`
> }
> if progname_signal 0
> then
> 	echo is running
> else
> 	echo not running
> fi
> 
> Bill

ISTM that the trap command could be quite useful in this scenario. "man
bash", under built-in commands. One can analyze various returns,
timestamp to prevent runaway restarting, etc.

I've used it in the (far distant) past to great advantage.

> <snip sig stuff>

HTH
-- 
Bill