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;
Directory Structure
/path/to/jobs
If your users are sloppy, this should be on a filesystem separate from the important ones.
/path/to/jobs/old
Because keeping the old jobs might prove useful.
/path/to/jobs/new
Where as-of-yet un-run jobs go.
/path/to/jobs/running
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 (or
$MAX jobs currently running), then do nothing (maybe log that).
NOTE: 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.
EDIT: If you need something with more "oomph", take a look at
TORQUE.