scheduled
Pronounced "schedule-d", as in "schedule daemon".
Goals:
- Plain-English but well-defined configuration language
- Hierarchical configuration
- Flexible scheduling configuration
- Easy to reconfigure the schedule on the fly
Example config:
# /etc/schedule/$USER.sched
mailto sir@cmpwn.com
timezone UTC
every Friday at 10:00 do /usr/local/bin/backup
every month on the 1st do zfs scrub
on 2022-01-13 at 16:00 do specific-thing
Configured via the sched command:
sched in 10 minutes do reboot # like POSIX at(1)
sched -e # like crontab -e
sched -a at 00:00 every day do system-update # append to user schedule
sched -w [...] # print next N times a config will trigger
Other notes:
- global config file can set defaults like error email configuration &
stdout/stderr ring buffer size
- /etc/schedule.d/* has config files which run as the user the file belongs to
or, if owned by root, they can use the user directive:
user nobody
at 13:00 every day do [...]
This would allow you to have schedules which run as a user but which the user
cannot edit.
- separate scheduled processes for each user who has a schedule, running as that
user, rather than one daemon running as root
- error handling via email or arbitrary commands