Skip to content

cuong21951/cron

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

cron

A lightweight, cross-platform cron-like job scheduler written in Rust.

Schedule shell commands with the classic 5-field cron syntax, then run a tiny foreground scheduler that fires them as they come due. No background service, no database — just a single binary and a small JSON crontab.

┌───────────── minute       (0-59)
│ ┌───────────── hour       (0-23)
│ │ ┌───────────── day of month (1-31)
│ │ │ ┌───────────── month    (1-12)
│ │ │ │ ┌───────────── day of week (0-6, Sunday = 0; 7 also = Sunday)
│ │ │ │ │
* * * * *

Install

winget (Windows)

winget install cuong21951.cron

From source

Requires a Rust toolchain.

cargo install --git https://github.com/cuong21951/cron

Or download a prebuilt binary from the Releases page.

Usage

# Add a job (cron expression + command)
cron add "*/5 * * * *" "echo hello"
cron add "@daily" "backup.bat"
cron add "0 9-17 * * 1-5" "ping -n 1 example.com"

# List jobs
cron list

# Remove a job by its index
cron remove 1

# Run the scheduler in the foreground (Ctrl+C to stop)
cron run

# Show where the crontab lives
cron path

Start automatically at logon (Windows)

cron run is a foreground process. To have it start on its own — in your user session, so jobs run with your profile and Downloads — enable autostart:

cron autostart            # start cron run hidden at each logon
cron autostart --remove   # undo

This drops a hidden launcher in your Startup folder (no admin, no Task Scheduler) and appends scheduler output to %APPDATA%\cron\scheduler.log. Starting a second scheduler in the same session is a no-op, so a manual cron run won't double-fire jobs.

Supported syntax

Each of the five fields accepts:

Form Example Meaning
* * every value
number 5 exactly that value
range 9-17 inclusive range
step */15 every 15th value
range+step 0-30/10 every 10th value within a range
list 1,3,5 any of the listed terms

Shorthand macros: @yearly (@annually), @monthly, @weekly, @daily (@midnight), @hourly.

As in classic cron, when both the day-of-month and day-of-week fields are restricted, a job fires when either matches.

How it works

  • cron run wakes at the top of every minute and runs any job whose schedule matches the current time.
  • Jobs are executed through the system shell (cmd /C on Windows, sh -c elsewhere), detached from the scheduler.
  • The crontab is reloaded on every tick, so add / remove from another shell take effect without restarting the scheduler.

Crontab location

Platform Path
Windows %APPDATA%\cron\crontab.json
Other $XDG_CONFIG_HOME/cron/ or $HOME/.config/cron/

Override with the CRON_HOME environment variable.

Running automatically at startup (Windows)

Use the built-in cron autostart — it starts the scheduler in your own session at logon without admin rights or Task Scheduler.

License

MIT

About

A lightweight cron-like job scheduler written in Rust.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages