Abstrax

Managing cron jobs

This guide schedules a recurring task, then lists, inspects, and modifies it. Abstrax stores each job as a file in /etc/cron.d/abstrax-<id>, so its jobs stay separate from any hand-written crontabs.

Adding, modifying, and removing jobs requires root.

1. Add a job

Every job needs an ID, a --command, and a schedule. The schedule can be a frequency flag or a custom expression.

Using a frequency flag:

sudo abstrax cron add backup --command="/usr/local/bin/backup.sh" --daily --user=root

Using a custom 5-field cron expression:

sudo abstrax cron add report --command="php artisan report" --schedule="0 8 * * 1" --user=www-data

Expected output:

Cron job backup created.
  Schedule: 0 0 * * *
  User:     root
  Command:  /usr/local/bin/backup.sh
  File:     /etc/cron.d/abstrax-backup

If you leave out --command, or provide neither a frequency flag nor --schedule, the command stops with an error explaining what is missing.

2. Capture output and set environment

Redirect output to a log file and pass environment variables:

sudo abstrax cron add cleanup \
  --command="/usr/local/bin/cleanup.sh" \
  --daily \
  --output=/var/log/cleanup.log \
  --env=APP_ENV=production

To discard all output instead:

sudo abstrax cron add noisy --command="/usr/local/bin/noisy.sh" --hourly --discard-output

3. List and inspect jobs

abstrax cron list
ID       SCHEDULE       USER       ENABLED   COMMAND
backup   0 0 * * *      root       yes       /usr/local/bin/backup.sh
report   0 8 * * 1      www-data   yes       php artisan report
abstrax cron info backup

4. Modify a job

Only the fields you pass are changed:

sudo abstrax cron modify backup --schedule="0 3 * * *"

5. Enable or disable a job

Disable a job without removing it, then enable it again later:

abstrax cron disable backup
abstrax cron enable backup

6. Remove a job

sudo abstrax cron remove backup

Frequency flags

Flag Runs
--every-minute Every minute
--every-five-minutes Every 5 minutes
--every-ten-minutes Every 10 minutes
--every-fifteen-minutes Every 15 minutes
--every-thirty-minutes Every 30 minutes
--hourly Top of every hour
--daily Midnight every day
--weekly Midnight on Sunday
--monthly Midnight on the 1st
--yearly Midnight on 1 January

A custom --schedule takes priority over a frequency flag and must have exactly 5 fields.

Cron versus daemons

Cron jobs run on a schedule and then exit. For a process that should run continuously (such as a queue worker), use a daemon instead.