[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: cron jobs to restart a shell process ...



On Mon, Feb 04, 2013 at 01:07:55PM +0000, Albretch Mueller wrote:
> ~
>  Sometimes I need to start a long running process which for various reasons may
> be stopped (server drops connection, OS kills it, ...) and I would like to have
> a somewhat automatic mechanism to check if it was stopped and, in that case,
> restart it (of course, with a new process id)
> ~
>  This is what I have in mind:
> ~
>  1) run an initial script to set up the context of the long running process,
> which, of course, will be specific, but the communication between 1) and 2) is
> just trough a regular protocolled file (I try to make my code as compatible as
> possible and pipes and other forms of interprocess comm tend to be very OS
> specific).
> ~
>  2) a second general script which based on 1) and the id of the running process
> just checks if process is running and restarts it in the case it
> isn't, based on:
> ~
>  2.1) a lock file named after some identifying metadata regarding 1), and
> ~
>  2.2) containing the current/last process id.
> ~
>  3) insert a line in your crontab file, to run 2)
> ~
>  You can check if a process is running by pars-, greping ps aux's output and
> simply go monkey to finish some working script, but I am sure those needs aren't
> just mine and there should be either a flag for cron jobs, a utility, or some
> best practices out there I don't know of. In fact, do you know of best practices
> for max data processing (I am talking here about jobs that may take days)


A 'crontab' example, controlling the online time of my modem
(my providers switch cheap and very expansive fees at certain hours)

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

SHELL=/bin/bash
PATH=/usr/lsh:/usr/lbin:/usr/bin:/bin:/sbin

# m h     dom mon dow   command
# -----------------------------

# IF online through script 'ip-Tele2', then shutdown modem every 2 hours
# (at minute 57, run script 'ring-bell'; at minute 59, run 'poff')  (weekdays)

57 0-22/2	 * * 1-5 pidof pppd && ps -o command -C ip-Tele2 && ring-bell 3
59 0-22/2	 * * 1-5 pidof pppd && ps -o command -C ip-Tele2 && poff &> /dev/null


# IF stub file: 'ip-stop' exists, then shutdown modem ('poff')  (daily, every hour)
# (at minute 57, run script 'ring-bell'; at minute 59, run 'poff')  (7 days)

57 0-23      * * 0-6 [ -f /tmpp/stub/crontab/ip-stop ] && pidof pppd && ring-bell 3
59 0-23      * * 0-6 [ -f /tmpp/stub/crontab/ip-stop ] && pidof pppd && poff && rm /tmpp/stub/crontab/ip-stop

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Hope this gives some helpful clue.

Moin W.F.

-- 


Reply to: