What are Shell Scripts
Posted By : Aditi Nahar | 21-Dec-2017
A shell is a software in a Linux or Unix operating system which provides a text-only user interface to enter commands (i.e. instructions). These commands are then executed and the output is displayed on a screen. In addition to this, a shell can also run commands stored in a file. And this mode of execution is known as shell scripting.
There are thousands of Linux commands and it is really difficult to remember them all. So here comes the need for automation. Shell scripts are short programs which are extremely useful for automating tasks on Linux or Unix operating systems. It is a simple text file containing a sequence of commands to be executed in one go by the operating system which otherwise has to be entered from the keyboard one at a time.
The shells used on Linux systems contains a built-in programming language i.e. shell programming language or shell scripting language and is used to create shell scripts.
Out of many advantages of shell scripts we have already seen one i.e., it automates frequently executed tasks. Others are as follows:
1) They are very easy to develop.
2) Used to combine multiple sequences of commands into a single command.
3) As it is a text file, it can be easily viewed and thus diagnosing problems with it is easy and fast.
4) They can be transferred and executed on other Linux or Unix operating systems.
Let's see below some of the Use of shell scripts:
1) Application startup scripts.
2) Automating the setup process of application.
3) Gathering system/component information after a specified task.
4) Deleting desired files after a specified tasks eg server log files.
Now we'll understand this with the simple task of 'How to grep load and CPU utilization of a machine for half an hour with a regular interval of 5 minutes'.
Step 1: Create a file named load.sh
Step 2: Write the following commands into it:
#! /bin/bash
tdate=`date '+%D %H:%M:%S'`
load=`cat /proc/loadavg | awk '{print $1}' `
totalcpu=`top -b n2 | grep 'Cpu(s)' | cut -d',' -f1 | cut -d':' -f2 | tail -1`
echo -e "$tdate $load $totalcpu
sleep 300
done
Explanation of the above script:
date '+%D %H:%M:%S - this will give server date, hour, minute and second.
/proc/
/proc is a virtual filesystem which is sometimes referred as process information pseudo filesystem.
/proc/
awk '{print $1}' -
The basic command for awk is:
awk 'pattern {action}' input file > output file
$1 refers to first column
top -b n2 command -
This will execute the top command twice (n2 = 2 iterations), 'b' is used for the bash script.
grep 'Cpu(s)'-
This will grep the line containing 'Cpu(s)'.
cut -d',' -f1 and cut -d':' -f2
This will print selected parts of the line. 'd' is
tail -1
This will display the last line of the file.
echo
This will show the output.
sleep 300
This delays execution of the script for 5 minutes (i.e 300 sec).
Step 3: run the script with the following command and write the result into a CSV file named Result.
sh load.sh >> Result.csv
Step 4: Check the readings in Result.CSV file
Thanks
Happy Scripting.
Cookies are important to the proper functioning of a site. To improve your experience, we use cookies to remember log-in details and provide secure log-in, collect statistics to optimize site functionality, and deliver content tailored to your interests. Click Agree and Proceed to accept cookies and go directly to the site or click on View Cookie Settings to see detailed descriptions of the types of cookies and choose whether to accept certain cookies while on the site.
About Author
Aditi Nahar
Aditi is a certified QA Engineer with a strong command over management tool sets like JIRA and Trello, as well as QA tool sets for API and performance testing. She possesses excellent verbal and written communication skills and has gained valuable experience in management and leadership while collaborating with clients and large teams. Aditi's ability to apply creative thinking and problem-solving skills makes her adept at handling challenging business scenarios. Her proficiency in manual testing has proven instrumental in identifying issues and ensuring the functionality of applications across web, mobile, and TV platforms. She has made significant contributions to both internal and client projects, including Bits2Btc, AUS-BTC, EZBitex, ACL EAP, Scaffold, Iron Systems VRP, Oremus Zoho, and NOWCAST OTT.