User Tools

Site Tools


programming:python:cwrap

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
programming:python:cwrap [2012/02/17 19:36] – created jayprogramming:python:cwrap [2013/12/15 19:45] (current) – [Getting a Copy of it] jay
Line 1: Line 1:
-====== 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> 
programming/python/cwrap.1329507413.txt.gz · Last modified: 2012/02/17 19:36 by jay