Automating Daily Tasks in Linux with Shell Scripts and Cron

As a DevOps enthusiast, I am embarking on a journey to become a skilled DevOps Engineer, and I plan to share my learning experiences through blog posts. As a DevOps Engineer, my primary goal is to bridge the gap between development and operations teams by leveraging automation, collaboration, and communication to streamline software development and deployment processes. I recognize that DevOps is not just a set of tools and technologies but also a cultural shift that emphasizes collaboration, agility, and a customer-centric approach. Therefore, in addition to technical skills, I will also focus on soft skills such as communication, teamwork, and problem-solving.
Through my blog posts, I aim to share my journey, insights, challenges, and successes as I navigate the world of DevOps. My goal is to provide value to my readers by offering practical advice, tips, and tricks, and inspiring them to embark on their own DevOps journey.
As a DevOps engineer, one of your responsibilities is to automate tasks to save time and increase efficiency. In Linux, shell scripts and cron can help you achieve this goal.
In this post, we'll cover three tasks that you can automate using shell scripts and cron: creating directories, backing up your work, and user management.
Task 1: Creating Directories with a Bash Script
The first task is to create multiple directories with a dynamic name. To achieve this, we'll use a bash script that takes three arguments: directory name, start number of directories, and end number of directories.
Here's the script:
#!/bin/bash
dir_name=$1
start=$2
end=$3
for i in $(seq $start $end)
do
mkdir "$dir_name$i"
done
Let's say you want to create 50 directories with the prefix "day". You can execute the script like this:
./createDirectories.sh day 1 50
This will create 50 directories named "day1", "day2", ..., "day50".
Task 2: Backing Up Your Work
The second task is to create a backup of your work. Backups are important to prevent data loss in case of system failures or errors. We can create a shell script that creates a compressed archive of a specified directory and stores it in a backup directory.
Here's the script:
#!/bin/bash
backup_dir="/path/to/backup/directory"
source_dir="/path/to/source/directory"
backup_file="$backup_dir/backup_$(date +%Y-%m-%d_%H%M%S).tar.gz"
tar -czvf $backup_file $source_dir
You can execute this script periodically to create regular backups. But manually executing the script can be tedious, especially if you need to create backups frequently. That's where cron comes in.
Task 3: Automating Backups with Cron
Cron is a tool for scheduling tasks in Linux. We can use it to automate the backup script we created in Task 2. To create a cron job, we need to edit the crontab file using the crontab command.
Here's an example crontab entry:
0 0 * * * /path/to/backup/script.sh
This cron job will execute the backup script every day at midnight. The five asterisks represent the schedule parameters: minute (0-59), hour (0-23), day of the month (1-31), month (1-12), and day of the week (0-6, where 0 is Sunday).
Task 4: User Management
The final task is to create two users in Linux and display their usernames. User management is important in Linux to control access to resources and ensure security. We can use the useradd command to create users and the cut command to display their usernames.
Here's the script:
#!/bin/bash
user1="john"
user2="jane"
useradd $user1
useradd $user2
cut -d: -f1 /etc/passwd | grep $user1
cut -d: -f1 /etc/passwd | grep $user2
This script creates two users named "john" and "jane", and displays their usernames. You can modify this script to add more users or change their properties.
Happy Learning 😄
Bhaktiben Kadiya




