Greetingz and Welcome to LQ!
It sounds like SQS
is something that could help you out.
However, if you're adamant about keeping things as close to "as-is" in your environment, then you might need to create a custom solution. Perhaps something like this;
If your users are sloppy, this should be on a filesystem separate from the important ones.
Because keeping the old jobs might prove useful.
Where as-of-yet un-run jobs go.
Where currently running job(s) go.
Create a "batch_schedule.sh
" script that does the following;
Take input file "batch_job.in
" and copy it's contents to "/path/to/jobs/new/`seconds-since-the-epoch`.job
Create a "batch_run.sh
" script and have it called by cron every minute.
This script would check "/path/to/jobs/running
", if empty (or if less-than-$MAX
jobs running), it would move a job from "/path/to/jobs/new
" and then start running that job.
If there was a *.job
file in /path/to/jobs/running
jobs currently running), then do nothing (maybe log that).
I'm not sure how your users would adept to change, but if experience has taught me anything, it's that non-technical people loath
learning a new process. So test it, document it, put that document on an Intranet website, then email a bookmark to everyone.
Oh, and only change things once a year or so.
If you need something with more "oomph", take a look at TORQUE