The modern option is to use a
systemd timer unit. This requires creating a
systemd unit which defines the job you want to periodically run, and a
systemd.timer unit defining the schedule for the job.
Assuming you want to run the job as regular user, put these files in
Description=Job that needs periodic execution
Description=Timer that periodically triggers my-job.service
Then enable the newly created units, and start the timer:
$ systemctl --user enable my-job.service my-job.timer
$ systemctl --user start my-job.timer
To verify that the timer is set:
$ systemctl --user list-timers
NEXT LEFT LAST PASSED UNIT ACTIVATES
Wed 2016-11-02 14:07:00 EAT 19s left Wed 2016-11-02 14:06:37 EAT 3s ago my-job.timer my-job.service
journalctl -xe should show log entries of the job being run.
man systemd.timer for the many options for configuring timer behaviour (including randomised starting, waking the computer, persistence across downtime, timer accuracy, etc.), and to
man systemd.unit for excellent documentation on
systemd units in general.