Cron Jobs essentially consist in running some command from the terminal at a predefined time, or every given interval.
They are great and useful since they can be used to automate any type of task.
Configuration
Short answer
Run crontab -e
Long answers
How do I set up a Cron Job?
on AskUbuntu- Creating a custom Cron Job, in DreamHost Knowledge Base
- More detailed information in Ubuntu Community Help Wiky → CronHowto
- Crontab Guru, simple and insightful tool to configure and check
crontab
s.
Enable logging
Cron Jobs do not log activity by default, to activate logging for an easier debugging, go to /etc/rsyslog.conf
or /etc/rsyslog.d/50-default.conf
and uncomment the following line:
cron.* /var/log/cron.log
then run
sudo service rsyslog restart && sudo service cron restart
Cron Jobs logs will appear in /var/log/cron.log
Troubleshooting
My Cron Jobs
rtcwake
This Cron Job schedules Linuxplosion boot, and it switches it off until the following week.
35 18 * * 1 sudo udisksctl mount -b /dev/sda2 && echo "`date`: Linuxplosion is up and running!" >> ~/rtcwake-log.txt
0 21 * * 1 echo "`date`: Linuxplosion is going back to sleep until next monday at 7PM." >> ~/rtcwake-log.txt && sudo rtcwake -m off -t "$(date -d 'next Monday 18:30' '+%s')"
wayback_archiver
This Cron Job saves a list of predefined pages to The Wayback Machine using wayback_archiver
0 1 * * 1 /usr/local/bin/wayback_archiver https://tommi.space/pages-to-archive --crawl --limit=100 --verbose --log=$HOME/wayback_archiver.log && echo "\n$(date) wayback_archiver success!" >> $HOME/wayback_archiver.log
I spent too much time trying to make this script work on [[Server|Xplosion Server]] with [[YunoHost]]. Hence, I am not using this Cron Job anymore, but this GitHub Action instead