Stop Making CRON Jobs!
Mac Apps
Cron Was Made for Always-On Unix Servers
Early in my career, I used to get annoyed when the old hands would wave away every automation problem with, "Just make a cron job." Cron dates back to the earliest days of Unix. It's simple, dumb, and dependable: once a minute it checks a text file, and if a line in that file matches the current time, it runs the associated command. Like most Unix tools, it works great--once you learn the arcane scheduling syntax. For example:0 3 * * * /Users/amerpie/scripts/backup.shTo cron, that means: *run this script every day at 3:00 AM.*** Cron was designed for machines that live in server rooms--powered on 24/7, connected to stable networks, and rarely put to sleep. macOS laptops are… not that. The core problem is that cron has zero situational awareness. It doesn't know or care whether:
- you're logged in
- the network is available
- the laptop is asleep
- macOS has changed anything since 1993
- modern features like sandboxing, power-saving modes, or System Integrity Protection exist
That's Why We Have launchd
Apple introduced launchd over 20 years ago with OS X 10.4 (Tiger) to replace cron and a pile of other legacy services. Unlike cron, launchd actually understands the modern Mac environment. It can handle:- starting and stopping apps
- running background tasks
- scheduling jobs
- managing daemons
- responding to system events
- specific times or intervals
- system boot
- user login
- file or folder changes
- network availability
- hardware events
- on-demand conditions
Useful Third-Party Apps That Make This Easy
Fortunately, it's 2026, and no one needs to hand-craft launchd XML files anymore. Several excellent Mac apps provide friendly interfaces for building launchd jobs or similar scheduled tasks. Lingon Pro Lingon has been around for more than two decades, and it's still one of the best launchd tools available. It gives you a clean GUI for creating complex jobs that can run:- whether your Mac is awake or asleep
- whether you're logged in or not
- with root privileges if necessary
- with "keep alive" rules that automatically restart crashed processes
- Create, edit, and delete launchd tasks
- Run jobs at intervals or on schedules (daily, weekly, monthly)
- Trigger tasks based on events like:
- volume mounting
- user login
- folder changes
- Keep tasks running and auto-restart if they crash
Keyboard Maestro isn't primarily a scheduler--but it does include powerful time-based and event-based triggers. Some of the available triggers:
- Hot keys
- App launch / quit / activate / deactivate
- Window events
- Clipboard changes
- Specific times or intervals
- Typed strings
- USB device events
- Public web URLs
- MIDI input
- Device connection/disconnection
- Login
- Network changes
- you're logged in
- the Mac is awake
- the Keyboard Maestro Engine is running
Apple Shortcuts Shortcuts on macOS has matured a lot, especially since macOS Tahoe. It now supports time-based automations similar to what iOS users have had for years. But there are important limitations:
- You must be logged in
- The Mac must be awake
- It's better suited to workflows than true background services
- specific apps
- power conditions
- hardware connections
- network changes
- file system events
- Bluetooth devices
- time of day
More Apps with Time-Based or Event Triggers
If you just need "run this thing on a schedule" without diving into launchd, these are worth a look:- Task Till Dawn -- Free automation tool for file management, printing, and browser tasks
- Alarm Clock Pro -- Far more than an alarm clock; great for scheduled app launching and scripts
- Shortery -- Adds real triggers to Apple Shortcuts (Wi-Fi, calendar, time, etc.)
- Scheduler for Mac -- Lightweight app and script scheduler
- Automator + Calendar Alerts -- Built-in macOS trick: create an Automator workflow, then have Calendar open it at a specific time
- Launch Control -- A high-end launchd GUI similar to Lingon Pro, but pricier