Back to Blog 5 min read

Automating Linux: A Practical Guide to Streamline Your Workflows

Hi, I just started exploring Linux a little bit now I'm thinking about going deeper and understanding how things work. But As a developer/programmer,...

Gurpreet Kait

Gurpreet Kait

Author

Hi, I just started exploring Linux a little bit now I'm thinking about going deeper and understanding how things work. But As a developer/programmer, it is not necessarily required to go deeper into this. Automation is the key to efficiency and productivity in the Linux environment. By automating repetitive tasks, system administrators and power users can focus on more critical activities. In this blog post, we will explore various techniques and tools that allow you to automate your Linux workflows effectively. Let's dive in and discover the power of automation in Linux!

Shell Scripting: Empowering Automation

Shell scripting is the cornerstone of Linux automation. With Bash scripting, you can write powerful scripts to automate tasks. We'll start by understanding the basics of shell scripting, including variables, loops, conditional statements, and functions. You'll learn how to write scripts that automate file management, system configurations, and application deployments.

Example: For example if you want to install a Laravel application with the same requirements for different projects. Then you can write the bash script for that particular action for example installing laravel then breeze and then npm install things like that.

Then you just have to put the single command that will handle all the stuff itself.

Let's Understand how we can use Shell Scripting to automate system.

You have a critical directory on your Linux server that needs to be backed up regularly. Yyou want to automate this process using a shell scripting. The script should create a timestamped backup of the directory and store it in a designated backup location.

Here's how we gonna do this.

We will create a file in any directory you want with name backup.sh

sudo touch backup.sh

// got to file now

sudo nano backup.sh

If you don't know about bash scripting then you may have to learn about the syntax little bit. But it's not tough that much.

#!/bin/bash

# Directory to be backed up
source_dir="/path/to/source_directory"

# Backup location
backup_dir="/path/to/backup_directory"

# Create a timestamp for the backup file
timestamp=$(date +%Y%m%d%H%M%S)

# Create the backup file name
backup_file="backup_${timestamp}.tar.gz"

# Perform the backup
tar -czf "${backup_dir}/${backup_file}" "${source_dir}"

# Display a success message
echo "Backup created: ${backup_file}"

This how we can tak a backup of a directory.

  1. Set the source_dir variable to the directory you want to back up.
  2. Set the backup_dir variable to the location where you want to store the backups.
  3. Generate a timestamp using the date command, formatted as YYYYMMDDHHMMSS, to create unique backup file names.
  4. Create the backup_file variable to hold the name of the backup file.
  5. Use the tar command to create a compressed archive (-czf) of the source_dir and save it in the specified backup_dir with the generated filename.
  6. Finally, display a success message indicating the creation of the backup file.

Usage:

  1. Open a text editor and paste the above script.
  2. Customize the source_dir and backup_dir variables with your desired paths.
  3. Save the file with a .sh extension (e.g., backup_script.sh).
  4. Make the script executable by running the command: chmod +x backup_script.sh.
  5. Run the script using ./backup_script.sh.

Cron Jobs

Well, you may have heard about Cron Jobs. Because usually, we set up them on the server to do a few tasks again and again after a particular time.

Cron jobs are perfect for scheduling recurring tasks in Linux.

You can schedule a command, If you are not aware of scheduling command you need to read about cron jobs.

We can use below command in terminal to schedule cron jobs.

crontab -e

The stars represent the time you want to schedule for.

# Use the hash sign to prefix a comment
# +---------------- minute (0 - 59)
# |  +------------- hour (0 - 23)
# |  |  +---------- day of month (1 - 31)
# |  |  |  +------- month (1 - 12)
# |  |  |  |  +---- day of week (0 - 7) (Sunday=0 or 7)
# |  |  |  |  |
# *  *  *  *  *  command to be executed
#-----------------------------------------------------------

Or either you can use ChatGpt!

You can schedule the above explained backup.sh file to take backups after a certain time.

  1. Open the Terminal
crontab -e
  1. If prompted, choose an editor to edit the cron table (e.g., nano, vim, etc.).
  2. In the editor, add a new line at the bottom of the file to schedule the backup script. The format for a cron schedule entry is as follows:
//you have to pass the file path to be executed
* * * * * /home/guru/BashScripts/backup.sh 

3. cron will now execute the backup script automatically based on the specified schedule. Make sure the script is executable (chmod +x backup_script.sh) before it can be successfully run by cron.

These are the two popular ways that i know about you could use to automate your workflow.

Read More: 20 Essential Linux Commands

Conclusion

Automation is the secret ingredient for boosting productivity and efficiency in the Linux environment. With shell scripting, cron jobs, systemd, configuration management tools like Ansible, and the power of scripting languages and APIs, you have an array of tools at your disposal to automate repetitive tasks and streamline your workflows. Embrace the world of Linux automation and unlock the full potential of your Linux systems.

Start automating today and say goodbye to manual tasks. Let Linux do the work for you!

Remember, with automation comes great power and responsibility. Always test your scripts thoroughly and understand the implications of any automated actions. Happy automating in the Linux world!