4 alternatives to cron in Linux

There are a few other open source projects out there that can be used either in conjunction with cron or instead of cron.
54 readers like this.
Clocks

Matteo Ianeselli. Modified by Opensource.com. CC-BY-3.0.

The Linux cron system is a time-tested and proven technology. However, it's not always the right tool for system automation. There are a few other open source projects out there that can be used either in conjunction with cron or instead of cron.

Linux at command

Cron is intended for long-term repetition. You schedule a job, and it runs at a regular interval from now until the computer is decommissioned. Sometimes you just want to schedule a one-off command to run at a time you happen not to be at your computer. For that, you can use the at command.

The syntax of at is far simpler and more flexible than the cron syntax, and it has both an interactive and non-interactive method for scheduling (so you could use at to create an at job if you really wanted to.)

$ echo "rsync -av /home/tux/ me@myserver:/home/tux/" | at 1:30 AM

It feels natural, it's easy to use, and you don't have to clean up old jobs because they're entirely forgotten once they've been run.

Read more about the at command to get started.

Systemd

In addition to managing processes on your computer, systemd can also help you schedule them. Like traditional cron jobs, systemd timers can trigger events, such as shell scripts and commands, at specified time intervals. This can be once a day on a specific day of the month (and then, perhaps only if it's a Monday, for example), or every 15 minutes during business hours from 09:00 to 17:00.

Timers can also do some things that cron jobs can't.

For example, a timer can trigger a script or program to run a specific amount of time after an event, such as boot, startup, completion of a previous task, or even the prior completion of the service unit called by the timer itself!

If your system runs systemd, then you're technically using systemd timers already. Default timers perform menial tasks like rotating log files, updating the mlocate database, manage the DNF database, and so on. Creating your own is easy, as demonstrated by David Both in his article Use systemd timers instead of cronjobs.

Anacron

Cron specializes in running a command at a specific time. This works well for a server that's never hibernating or powered down. Still, it's pretty common for laptops and desktop workstations to either intentionally or absent-mindedly turn the computer off from time to time. When the computer's not on, cron doesn't run, so important jobs (such as backing up data) get skipped.

The anacron system is designed to ensure that jobs are run periodically rather than on a schedule. This means you can leave a computer off for several days and still count on anacron to run essential tasks when you boot it up again. Anacron works in tandem with cron, so it's not strictly an alternative to it, but it's a meaningful alternative way of scheduling tasks. Many a sysadmin has configured a cron job to backup data late at night on a remote worker's computer, only to discover that the job's only been run once in the past six months. Anacron ensures that important jobs happen sometime when they can rather than never when they were scheduled.

Read more about using anacron for a better crontab.

Automation

Computers and technology are meant to make lives better and work easier. Linux provides its users with lots of helpful features to ensure important operating system tasks get done. Take a look at what's available, and start using these features for your own tasks.

What to read next

How I use cron in Linux

No time for commands? Scheduling tasks with cron means programs can run but you don't have to stay up late.

Tags
Seth Kenlon
Seth Kenlon is a UNIX geek, free culture advocate, independent multimedia artist, and D&D nerd. He has worked in the film and computing industry, often at the same time.

2 Comments

Don't forget there's systemd-cron which is a replacement for the stock standard cron. That package uses the ancient crontab syntax to generate the new style systemd timers for you.

Creative Commons LicenseThis work is licensed under a Creative Commons Attribution-Share Alike 4.0 International License.