[Toolserver-l] making sure your bots are always running: introducing phoenix
John Vandenberg
jayvdb at gmail.com
Fri Oct 17 22:48:06 UTC 2008
On Sat, Oct 18, 2008 at 7:26 AM, Daniel Kinzler <daniel at brightbyte.de> wrote:
> Hi all
>
> We have all seen the problem that some script or bot we have come to rely upon
> suddenly dies. Or fails to restart when the toolserver is rebooted. Putting
> something into cron to be run on @reboot sadly doesn't always work, for example
> because the home directory may not yet be mounted when cron runs reboot jobs.
We should have a per-user initialisation script that are all run
during startup by rc.local.
> So, after a short discussion on IRC, i wrote a script to take care of this. I
> called if phoenix, it's available in the system path on nightshade and hemlock.
>
> Phonix just starts whatever command you give to it, but it first checks if that
> command is already running. If it is already running, phoenix does nothing. So,
> just call phonix from cron every few minutes to make sure your bot is restarted
> when it dies.
>
> For example, if you want to run 'mybot', call this every few minutes from cron:
>
> phoenix /tmp/yourname-mybot /home/mydir/bin/mybot someparam
>
> The path /tmp/yourname-mybot is the base fir the PID and output files - output
> fill be written to /tmp/yourname-mybot.out, the processes pid will be stored in
> /tmp/yourname-mybot.pid.
>
> The second parameter, /home/mydir/bin/mybot, is the program to run. Anything
> following that are parameters to pass to this program.
>
>
> Please try it out and tell me about any problems! phoenix also prints a short
> help message when called without any parameters.
>
> -- daniel
>
> PS: I'm sure this wheel has been invented before... any pointers?
[[init]] is the original program given this task, and is still often
used for this purpose. The wiki page lists other tools that have been
written to help with this.
svscan from [[daemontools]] is a good one.
--
John Vandenberg
More information about the Toolserver-l
mailing list