A process watchdog and command scheduler
Custodian is a program somewhat similar to cron. Unlike cron, Custodian cannot run programs at specific times, only at intervals (eg, every 5 minutes, or every 2 seconds).
Custodian has a unique spin, however: It can also run programs after another program has completed. This is quite useful in scenarios where you have a number of programs that need to be run at regular intervals and in a specific order.
In addition to relative scheduling, Custodian also provides basic watchdog capabilities. When Custodian starts up, it will start all watched processes, and if one dies, it will attempt to restart it and notify you.
Say you have a script that fetches an external XML data feed, processes it, and loads it into your local database. Once the ETL process is complete, you want to perform some post-processing actions on it.
This is an ideal use case for Custodian. You can accomplish this with the following configuration excerpt:
This excerpt will log all output from the watch_me.sh script to a file. If the script dies, it will restart it and notify the administrator.
To set environment variables that will apply to all jobs, you can use the "env" key in your configuration:
You can also specify environment variables inside
Configuration environment variables override pre-existing environment variables, and job-specific variables override both.
Suppose you have a job that occasionally hangs, you can specify the "maxtime" parameter and custodian will kill the process if it runs beyond it's limit:
my-job runs more than 10 seconds, custodian will kill it for us.
Another interesting use of "maxtime" is to periodically restart watched jobs.