Introduction
Many of us love the Linux kernel π. It uses the Unix based terminal. it's super customizable. We thus might choose to run Linux without a desktop environment like GNOME.
Linux works magic β¨ on older hardware and it's lightweight. We don't sell or advertise on Linux or have to struggle with a ton of desktop bloatware and its a great platform for backend engineers.
Another productivity tip I leaned about, was setting up Cron Jobs to schedule time-based operations, to be executed automatically on my computer. These jobs can be for a variety of tasks, like backups of data or, in my special case, change the location of global tools like dotnet-ef
by adding
a line to my shell's configuration:
export PATH=$PATH:/snap/bin
Prerequisites
- Installing the cron daemon
- The Job to be done
Cron is a time-based job scheduling daemon found in Unix-like operating systems, including Linux distributions. Almost every Linux distribution has some form of Cron installed by default. However, if you have a Debian Linux distro without Cron preinstalled, you can install it using the APT package manager.
Before installing any package on a Debian machine, update the computerβs local package database:
$ sudo apt update
Then install cron with the following command:
$ sudo systemctl enable cron
Output
Synchronizing state of cron.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable cron
Next, we write the script of the job we wish to automate in a bash file. below is the text of my script I use to change the location of dotnet-ef
global tool in the shell configuration.
#! /bin/bash
export PATH=$PATH:/snap/bin
This file can be created in the text editor of your choice and saved as filename.sh
in the root of your home folder. (In my case this is /home/nextwebb/Desktop). This script can be directly run in the terminal with sh filename.sh
and it works correctly π.
Scheduling tasks using Crontabs
This exercise is done on the terminal using the crontab
command with two flags, -l (list)
and -e (edit)
.
Type the command crontab -e
and choose from a number [1-4] to select the text editor of your choice, with your personal Cron file and write your Cron job. I'll select 1 because my default editor is Nano.
crontab -e
The Terminal enters into Editor mode with your personal Crontab file opened. As you can see, all the commands are shown at the bottom of the Terminal Window.
# For example, you can run a backup of all your user accounts
# at 5 a.m every week with:
# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
m h dom mon dow command
Some Special Syntax
These are essentially shortcuts for the equivalent numeric schedule specified:
@hourly -> 0 * * * *
@daily -> 0 0 * * *
@weekly -> 0 0 * * 0
@monthly -> 0 0 1 * *
@yearly -> 0 0 1 1 *
@reboot
-> This shorthand will run whatever command follows it any time the server starts up
Returning back to the subject in question, in my case, I want the bash file filename.sh
to be executed after a startup, within the crontab editor I type:
@reboot /home/nextwebb/Desktop/filename.script
Once happy with your entry, you need to save it (Ctrl+s) and now press (Ctrl+x) and so exit back from the Editor to the Terminal. Keying in will now show your new Cron Job and you can confirm if all looks okay, or not.
crontab -l
It's a super-simple way to run scripts on boot using Cron jobs.
Thanks for the audience and I hope you found this article helpful π€. feel free to reach out to Github, Twitter and LinkedIn. Do drop a like, comment, and share π.
For a detailed description of the Cron Job Syntax and Automated setups, have a look at Crontab Syntax Tutorial
Happy Scheduling π.