No subject
Sun Feb 10 21:45:11 GMT 2008
every 60 seconds, check the configuration database for changes and execute
jobs as needed. Job execution would consist of checking the jobs
credentials ( if run as X, fork, lock records to job handler PID, descend
privileges to specified user, chdir to script path, wrap the job in a
subprocess, respond to job events as needed ( stderr, ! zero return,
excessive run time, etc ).
My question is, anyone see a better way, or a OSS project out there that
could do the above for me... even a beta project written in python or c++
could be workable by me. If you haven't noticed the varying levels of
sarcasm, I'm somewhat stretched thin right now.
Thanks,
David
------=_Part_35391_22638696.1205104305915
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit
Content-Disposition: inline
Hello,<br>
First off an introduction as this is my first post:<br>
<br>
I work in Denver as a multi-hat developer: php/python/bash/c++
developer, linux system admin, and a intermediate MySQL database
administrator, and also my current company's R&D developer. I've been working
with *nix since 1996-97 when a c++ programming course I took was taught
exclusively on v220 terminals connected to a mini-computer. <br>
<br>
I'm on week 2 or maybe 3 of doing research for consolidating my
company's small and growing horde of cronjobs... its well over 150
script at this point. The company CEO has directed me to start
research and research I have done.<br>
<br>Why crontab sucks for what I need:<br><br> Cron does a fantastic job at what it does, run something at X time.<br> The problem is, what if I need alt_X to run if X exists non-zero.... alright so I could do:<br> x || alt_x<br>
<br> Now what if I need y to run after x if its successfull<br><br> (x && y ) || alt_x<br><br> Well thats not right? x could perform correctly then have y fail, causing alt_x to run and possibly redo important operations/data.<br>
<br> (x || alt_x) && y - except what if I don't want y to run if alt_x ends up running?<br> <br><br> Now to make things fun.... lets say there is a chain of 4-5 scripts that must run conditionally. I'm pretty decent with simple and/or logic, but I know this would confuse anyone else to read and decypher. Making it so only I and maybe one or two disciples can maintain the abomination that is the company's backend underworld.<br>
<br>Plan B (partially in effect)<br> Complex jobs are written as bash scripts. This is a step up from the above, I can build a job with variables, capture output to temp files, and use mail or sendmail to make customized emails. Whats lacking is resuability. Sure I can write shell script libraries to reuse certain things, like a bash wrapper function to handle individual scripts.... but adding in context sensitive checks "has the word failure, critical, OMFG, etc" would be hard coded in.<br>
<br>Plan C ( what I am aiming for)<br> So I'm looking for a cronjob equivalent scheduling system that can be configured by information stored in a database (MySQL, sqllite, whatever). This phantom program would have the following specs:<br>
<br> Run any process/job as either root or a specific user account<br> Record the job fitness ( maximum memory, time stats (rtime, utime, overall)<br> Historical recording ( save input to DB or serialized filestore )<br>
Context sensitive output handling<br> Digest email capability ( instead of 120-140 emails a day, I'd be estatic with like 30)<br> SMP/pager capability<br><br> I've started prototyping the above in python, but I figure to get this to a stable enough product, it would take me 3-4 days of development time then a residual 5-15 hours for the next month or two in responsive debugging. From my prototypes, I'd have a daemonized python script that would sleep every 60 seconds, check the configuration database for changes and execute jobs as needed. Job execution would consist of checking the jobs credentials ( if run as X, fork, lock records to job handler PID, descend privileges to specified user, chdir to script path, wrap the job in a subprocess, respond to job events as needed ( stderr, ! zero return, excessive run time, etc ).<br>
<br> My question is, anyone see a better way, or a OSS project out there that could do the above for me... even a beta project written in python or c++ could be workable by me. If you haven't noticed the varying levels of sarcasm, I'm somewhat stretched thin right now.<br>
<br> Thanks,<br> David<br>
------=_Part_35391_22638696.1205104305915--
More information about the Ubuntu-us-co
mailing list