Using batch to avoid problems

I use batch to rerun failed cron jobs. I also use it for webhooks. There are three reasons for doing this and why eventually I’ll end up changing even first runs of cronjobs to use batch. They handle load issues, locking issues and return quickly.

The batch command is usually implemented as part of cron and at, but it runs at a certain load, not a certain time. It can be set at different loads when the system is configured, but the idea is that batch run jobs one at a time when the system load is “low”.

Note the “one at a time” part. This removes the need for locking. Suddenly you have a queuing system on your Linux box w/o having to install lots of stuff. It’s not a super awesome queuing system, but it’s generally good enough.

It’s certainly good enough that I’ll drop flock once I switch all my cronjobs to batch. Having periodic jobs monitored to make sure they run every X hours makes the idea workable.

Lastly, there’s the returning quickly. Submitting a batch job is quick and simple. This is really important for webhooks but also nice when having to rerun certain longer running jobs like backups.