You will, from time to time, feel the need to run a command at a specific time.
at(1) will run a command at a specified time, so if you need a reminder that you should go to bed at midnight, you could run the following command:
$ at midnight at> echo Go to bed | wall ^D
You would run
crontab -e to add a command to your crontab,
as described in crontab(5).
0 20 * * * /usr/bin/obnam backup $HOME
This could instead be written as a systemd timer unit, which can be used without a separate cron service running, by creating two configuration files as follows:
$ mkdir -p ~/.config/systemd/user $ cat >~/.config/systemd/user/backup.timer <<'EOF' > [Unit] > Description=Backup timer > [Timer] > OnCalendar=daily > [Install] > WantedBy=default.target > EOF $ cat >~/.config/systemd/user/backup.service <<'EOF' > [Unit] > Description=Backup Service > [Service] > Type=simple > ExecStart=/usr/bin/obnam backup %h > [Install] > WantedBy=default.target > EOF $ systemctl --user daemon-reload $ systemctl --user enable backup.timer backup.service $ systemctl --user start backup.timer backup.service
This is more verbose than the cron syntax, though arguably less arcane.
However systemd timer units have the advantage
of allowing you to set
which will unsuspend your system to react to timer events.
There are instructions on how to use this to make an alarm clock on Joey Hess' blog.