More often than not, we find ourselves in a situation where something needs to be automated. For example, since I use Let’s Encrypt SSL certificates, I have to renew them every 90 days.
To automate it, I use a simple cron. Being a DevOps fanboy, I like doing things from scratch. This article will help you write a simple cron yourself if you have SSH/root access to your server.
π― Crontab#
You can use the crontab command to setup your cron on a Unix based OS.
NAME: crontab
β maintain crontab files for individual users (V3)
SYNOPSIS: crontab
[ βu user] file crontab[βuuser]{βl |βr |βe}
DESCRIPTION: The crontab
utility is the program used to install, deinstall or list the tables used to drive the cron(8) daemon in Vixie Cron. Each user can have their own crontab.
βu
Specify the name of the user whose crontab is to be tweaked. If this option is not given, crontab examines βyourβ crontab, i.e., the crontab of the person executing the command. Note that su(1) can confuse crontab and that if you are running inside of su(1) you should always use the βu option for safetyβs sake.
βl
Display the current crontab on standard output.
βr
Remove the current crontab.
βe
Edit the current crontab using the editor specified by the VISUAL or EDITOR environment variables. The specified editor must edit the file in place; any editor that unlinks the file and recreates it cannot be used. After you exit from the editor, the modified crontab will be installed automatically.
π€ Add a Cron Job#
Let’s add a simple cron job that repeats itself every fifth day.
1. Edit the Current crontab
#
Add a cron job by the command (this will open up the crontab file where you can add your crons).
crontab -e
A crontab
file has five fields for specifying mins, hours, the day of the month, month, and the day of the week followed by the command to be run at that interval.
* in the value field above means all legal values as in braces for that column.
UPDATE: Check out this awesome resource to visualizeβ crontab.guru
2. Add a Cron Job#
Since we only want our Cron to run every fifth day. I’ll add something like this at the end of the file. Each cron job should be at a new line.
0 0 */5 * * shell_command_here
or to be exact a custom shell command for a bash function that I wrote.
0 0 */5 * * wpsites update --le --all
3. Save the crontab
#
Save it CTRL (β)
+ X
then Y
β finally press ENTER (return)
4. Save the crontab
#
You can check the new crons have been installed of not by
crontab -l
To Summarize#
1οΈβ£ Edit the cron by command crontab -e
2οΈβ£ Save it CTRL (β)
+ X
then Y
β finally press ENTER (return)
3οΈβ£ Check cron jobs with crontab -l
And you’re done :) Let me know how it goes at your end!
Peace! βοΈ
Leonardo Borsten
Great post! Can you please explain the */5 notation for the days? Looks like it says “any day divided by 5”.
Thanks!