Next revision | Previous revision |
programming:python:cwrap [2012/02/17 19:36] – created jay | programming:python:cwrap [2013/12/15 19:45] (current) – [Getting a Copy of it] jay |
---|
====== Cron Wrap ====== | ====== cron-wrap ======= |
TODO | |
| ===== What is it? ===== |
| "Obviously, you're not a golfer". But you are probably a sysadmin. |
| |
| The cwrap.py script is meant to be used as a wrapper for cron jobs. The idea here is that you use this script to wrap whatever would be a normal cronjob for you to perform functions based on what options are specified. I think this is best explained with an example. |
| |
| I have a cronjob that runs every minute. First, I don't want "overlap", a second instance is run while the first one is still running, if a single run takes a long time. Solved. The nature of my cronjob (just a script that is being run) is such that there will be an occasional failure, but an occasional failure, in this case, can be ignored. Instead, I only want to know when the script has failed 5 times in a row. Solved. By default, cwrap.py will also swallow all the output for the occasional fails, but I at least want a record of those failures so that I can determine whether the intermittent fails are happening more frequently and constitute a different problem. Solved (by turning on the syslog option). |
| |
| This script may not be useful for everyone, but for some out there, it will save you a lot of time, effort and probably emails in your inbox. |
| |
| ===== Getting a Copy of it ===== |
| If ''cron-wrap'' sounds like something you might be interested in, head over to the [[https://github.com/crustymonkey/cron-wrap|github page]] to download it, or clone the repository. |
| |
| You can also install this via ''pip'' or ''easy_install''. |
| <code bash> |
| pip install cron-wrap |
| </code> |
| **NOTE:** The RPMs are **not** guaranteed to be the latest versions. Check [[https://github.com/crustymonkey/cron-wrap|Github]] to find out what the latest version is. That said, I will try and keep these up to date. |
| |
| {{:programming:python:cron-wrap-0.6.2-1.noarch.rpm|cron-wrap-0.6.2-1.noarch.rpm}} \\ |
| {{:programming:python:cron-wrap-0.6.2-1.src.rpm|cron-wrap-0.6.2-1.src.rpm}} |
| ===== Donations ===== |
| By no means should anyone feel they //have// to donate. However, if you've used this stuff to save some time, prevent head shaped holes in the wall, raise your children or you just think this is awesome and want to contribute to my [[http://www.surlybrewing.com/|Surly]] fund (that stuff isn't cheap, but it's soooooo good), you can click the [[http://paypal.com|Paypal]] donate button below and toss me a couple of dollars. I've heard from others who have donated that they were visited by flying monkeys that spoke Icelandic, and were subsequently showered with fantastic gifts from said monkeys. I don't know if this is true, or if drug use was involved, but it still sounds pretty awesome. |
| |
| <html> |
| <form action="https://www.paypal.com/cgi-bin/webscr" method="post"> |
| <input type="hidden" name="cmd" value="_s-xclick"> |
| <input type="hidden" name="hosted_button_id" value="83ENX2ZV8E694"> |
| <input type="image" src="https://www.paypalobjects.com/en_US/i/btn/btn_donateCC_LG.gif" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!"> |
| <img alt="" border="0" src="https://www.paypalobjects.com/en_US/i/scr/pixel.gif" width="1" height="1"> |
| </form> |
| </html> |
| ===== Failures ===== |
| The concept of a failure is simple. The exit code of the script that cwrap.py is running must be non-zero for cwrap.py to call it a "failure". |
| |
| ===== Options ===== |
| There are a plethora of options available here. See ''cwrap.py -h'' or ''man cwrap.py'' for the full lowdown. |
| |
| ===== Example ===== |
| Here is a short example of how you would run a cron job with cwrap.py. |
| |
| For the purpose of this example, we'll say that the normal cronjob is run as: |
| <code bash> |
| cron.sh -a do_stuff |
| </code> |
| Let's say that we always want to see the first failure in a string of failures (-f). Beyond the first failure, we don't want to be notified until the 10th consecutive failure (-n 10). This script can take a while to run so I want any other runs to retry two times (-r 2), but if it wasn't able to run because another instance was running, I don't want to hear about it (-i). I also don't want to see any normal output from it, but just when it fails (-q). Last, I want all errors to be logged to syslog (-S) under LOCAL1 (-C LOG_LOCAL1). Here would be the example: |
| |
| <code bash> |
| cwrap.py -fSiq -n 10 -r 2 -C LOG_LOCAL1 cron.sh -a do_stuff |
| </code> |