Linux Lab Exercise Summary
Linux Lab Exercise Summary
Linux is a family of open-source Unix operating systems based on the Linux Kernel. They
include Ubuntu, Fedora, Debian, openSUSE, and Red Hat.When operating Linux, you need to
use a shell – a program that gives you access to the operating system’s services. Most Linux
distributions use a graphical user interface (GUI), making them beginner-friendly.
However, we recommend utilizing the command-line interface (CLI) because it’s quicker and
offers more control. Tasks that require multiple steps on the GUI can be done in a matter of
seconds by entering commands into the CLI.
So if you want to use Linux, learning the common utilities or commands will go a long way. This
article will discuss the 40 basic commands to help you use your Linux distro effectively.
A Linux command is a program or utility that runs on the CLI – a console that interacts with the
system via texts and processes. It’s similar to the Command Prompt application in Windows.
Linux commands are executed on Terminal by pressing Enter at the end of the line. You can run
commands to perform various tasks, from package installation to user management and file
manipulation.
A command may contain an option or a parameter. In some cases, it can still run without them.
These are the three most common parts of a command:
Although the steps may differ depending on your Linux distribution, the Terminal application is
usually found in the Utilities section.
1. sudo command
Short for superuser do, sudo is one of the most popular basic Linux commands that lets you
perform tasks that require administrative or root permissions.
When using sudo, the system will prompt users to authenticate themselves with a password.
Then, the Linux system will log a timestamp as a tracker. By default, every root user can run
sudo commands for 15 minutes/session.
If you try to run sudo in the command line without authenticating yourself, the system will log
the activity as a security event.
sudo (command)
2. pwd command
Use the pwd command to find the path of your current working directory. Simply entering pwd
will return the full current path – a path of all the directories that starts with a forward slash (/).
For example, /home/username.
pwd [option]
To navigate through the Linux files and directories, use the cd command. Depending on your
current working directory, it requires either the full path or the directory name.
Running this command without an option will take you to the home folder. Keep in mind that
only users with sudo privileges can execute it.
cd Photos.
If you want to switch to a completely new directory, for example, /home/username/Movies, you
have to enter cd followed by the directory’s absolute path:
cd /home/username/Movies
4. ls command
The ls command lists files and directories within a system. Running it without a flag or
parameter will show the current working directory’s content.
To see other directories’ content, type ls followed by the desired path. For example, to view files
in the Documents folder, enter:
ls /home/username/Documents
Here are some options you can use with the ls command:
5. cat command
Concatenate, or cat, is one of the most frequently used Linux commands. It lists, combines, and
writes file content to the standard output. To run the cat command, type cat followed by the file
name and its extension. For instance:
cat filename.txt.
6. cp command
Use the cp command to copy files or directories and their content. Take a look at the following
use cases.
To copy one file from the current directory to another, enter cp followed by the file name and the
destination directory. For example:
cp filename.txt /home/username/Documents
To copy files to a directory, enter the file names followed by the destination directory:
To copy the content of a file to a new file in the same directory, enter cp followed by the source
file and the destination file:
cp filename1.txt filename2.txt
To copy an entire directory, pass the -R flag before typing the source directory, followed by the
destination directory:
cp -R /home/username/Documents /home/username/Documents_backup
7. mv command
The primary use of the mv command is to move and rename files and directories. Additionally, it
doesn’t produce an output upon execution.
Simply type mv followed by the filename and the destination directory. For example, you want
to move filename.txt to the /home/username/Documents directory:
mv filename.txt /home/username/Documents.
mv old_filename.txt new_filename.txt
8. mkdir command
Use the mkdir command to create one or multiple directories at once and set permissions for
each of them. The user executing this command must have the privilege to make a new folder in
the parent directory, or they may receive a permission denied error.
mkdir Music
To make a new directory called Songs inside Music, use this command:
mkdir Music/Songs
● -p or –parents create a directory between two existing folders. For example, mkdir -p
Music/2020/Songs will make the new “2020” directory.
● -m sets the file permissions. For instance, to create a directory with full read, write, and
execute permissions for all users, enter mkdir -m777 directory_name.
● -v prints a message for each created directory.
9. rmdir command
To permanently delete an empty directory, use the rmdir command. Remember that the user
running this command should have sudo privileges in the parent directory.
For example, you want to remove an empty subdirectory named personal1 and its main folder
mydir:
rmdir -p mydir/personal1
10. rm command
The rm command is used to delete files within a directory. Make sure that the user performing
this command has write permissions.
Remember the directory’s location as this will remove the file(s) and you can’t undo it.
rm filename
The touch command allows you to create an empty file or generate and modify a timestamp in
the Linux command line.
For example, enter the following command to create an HTML file named Web in the
Documents directory:
touch /home/username/Documents/Web.html
Moreover, adding the -i argument will turn off case sensitivity, so you can search for a file even
if you don’t remember its exact name.
To look for content that contains two or more words, use an asterisk (*). For example:
locate -i school*not
The command will search for files that contain the words school and note, whether they use
uppercase or lowercase letters.
For example, you want to look for a file called notes.txt within the home directory and its
subfolders:
Another basic Linux command on the list is grep or global regular expression print. It lets you
find a word by searching through all the texts in a specific file.
Once the grep command finds a match, it prints all lines that contain the specific pattern. This
command helps filter through large log files.
For example, you want to search for the word blue in the notepad.txt file:
15. df command
Use the df command to report the system’s disk space usage, shown in percentage and kilobyte
(KB). Here’s the general syntax:
df [options] [file]
For example, enter the following command if you want to see the current directory’s system disk
space usage in a human-readable format:
df -h
16. du command
If you want to check how much space a file or a directory takes up, use the du command. You
can run this command to identify which part of the system uses the storage excessively.
Remember, you must specify the directory path when using the du command. For example, to
check /home/user/Documents enter:
du /home/user/Documents
Adding a flag to the du command will modify the operation, such as:
The head command allows you to view the first ten lines of a text. Adding an option lets you
change the number of lines shown. The head command is also used to output piped data to the
CLI.
For instance, you want to view the first ten lines of note.txt, located in the current directory:
head note.txt
● -n or –lines prints the first customized number of lines. For example, enter head -n 5
filename.txt to show the first five lines of filename.txt.
● -c or –bytes prints the first customized number of bytes of each file.
● -q or –quiet will not print headers specifying the file name.
The tail command displays the last ten lines of a file. It allows users to check whether a file has
new data or to read error messages.
Here’s the general format:
For example, you want to show the last ten lines of the colors.txt file:
tail -n colors.txt
Short for difference, the diff command compares two contents of a file line by line. After
analyzing them, it will display the parts that do not match.
Programmers often use the diff command to alter a program instead of rewriting the entire source
code.
For example, you want to compare two text files – note.txt and note_update.txt:
The tar command archives multiple files into a TAR file – a common Linux format similar to
ZIP, with optional compression.
For instance, you want to create a new TAR archive named newarchive.tar in the
/home/user/Documents directory:
Check out the more practical examples to know more about the other functions.
chmod is a common command that modifies a file or directory’s read, write, and execute
permissions. In Linux, each file is associated with three user classes – owner, group member, and
others.
For example, the owner is currently the only one with full permissions to change note.txt. To
allow group members and others to read, write, and execute the file, change it to the -rwxrwxrwx
permission type, whose numeric value is 777:
The chown command lets you change the ownership of a file, directory, or symbolic link to a
specified username.
To check the status of jobs in the current shell, simply enter jobs to the CLI.
Use the kill command to terminate an unresponsive program manually. It will signal
misbehaving applications and instruct them to close their processes.
To kill a program, you must know its process identification number (PID). If you don’t know the
PID, run the following command:
ps ux
After knowing what signal to use and the program’s PID, enter the following syntax:
There are 64 signals that you can use, but these two are among the most commonly used:
● SIGTERM requests a program to stop running and gives it some time to save all of its
progress. The system will use this by default if you don’t specify the signal when entering
the kill command.
● SIGKILL forces programs to stop, and you will lose unsaved progress.
For example, the program’s PID is 63773, and you want to force it to stop:
For example, you want to know whether you can connect to Google and measure its response
time:
ping google.com
The Linux command line lets you download files from the internet using the wget command. It
works in the background without hindering other running processes.
The wget command retrieves files using HTTP, HTTPS, and FTP protocols. It can perform
recursive downloads, which transfer website parts by following directory structures and links,
creating local versions of the web pages.
For example, enter the following command to download the latest version of WordPress:
wget https://wordpress.org/latest.zip
The uname or unix name command will print detailed information about your Linux system and
hardware. This includes the machine name, operating system, and kernel. To run this command,
simply enter uname into your CLI.
uname [option]
The top command in Linux Terminal will display all the running processes and a dynamic real-
time view of the current system. It sums up the resource utilization, from CPU to memory usage.
The top command can also help you identify and terminate a process that may use too many
system resources.
With history, the system will list up to 500 previously executed commands, allowing you to
reuse them without re-entering. Keep in mind that only users with sudo privileges can execute
this command. How this utility runs also depends on which Linux shell you use.
history [option]
The man command provides a user manual of any commands or utilities you can run in
Terminal, including the name, description, and options.
man [command_name]
For example, you want to access the manual for the ls command:
man ls
man 2 ls
The echo command is a built-in utility that displays a line of text or string using the standard
output. Here’s the basic syntax:
For example, you can display the text Hostinger Tutorials by entering:
Use the zip command to compress your files into a ZIP file, a universal format commonly used
on Linux. It can automatically choose the best compression ratio.
The zip command is also useful for archiving files and directories and reducing disk usage.
For example, you have a file named note.txt that you want to compress into archive.zip in the
current directory:
On the other hand, the unzip command extracts the zipped files from an archive. Here’s the
general format:
unzip archive.zip
Run the hostname command to know the system’s hostname. You can execute it with or without
an option. Here’s the general syntax:
hostname [option]
For example, enter the following command to know your computer’s IP address:
hostname -i
Linux is a multi-user system, meaning more than one person can use it simultaneously. useradd
is used to create a new account, while the passwd command allows you to add a password. Only
those with root privileges or sudo can run the useradd command.
When you use the useradd command, it performs some major changes:
● Edits the /etc/passwd, /etc/shadow, /etc/group, and /etc/gshadow files for the newly
created accounts.
● Creates and populates a home directory for the user.
● Sets file permissions and ownerships to the home directory.
passwd the_password_combination
For example, to add a new person named John, enter the following command simultaneously:
useradd John
passwd 123456789
userdel username
apt-get is a command line tool for handling Advanced Package Tool (APT) libraries in Linux. It
lets you retrieve information and bundles from authenticated sources to manage, update, remove,
and install software and its dependencies.
Running the apt-get command requires you to use sudo or root privileges.
These are the most common commands you can add to apt-get:
Linux allows users to edit and manage files via a text editor, such as nano, vi, or jed. nano and vi
come with the operating system, while jed has to be installed.
The nano command denotes keywords and can work with most languages. To use it, enter the
following command:
nano [filename]
vi uses two operating modes to work – insert and command. insert is used to edit and create a
text file. On the other hand, the command performs operations, such as saving, opening, copying,
and pasting a file.
vi [filename]
jed has a drop-down menu interface that allows users to perform actions without entering
keyboard combinations or commands. Like vi, it has modes to load modules or plugins to write
specific texts.
alias allows you to create a shortcut with the same functionality as a command, file name, or text.
When executed, it instructs the shell to replace one string with another.
alias Name=String
For example, you want to make k the alias for the kill command:
alias k=’kill’
unalias [alias_name]
38. su command
The switch user or su command allows you to run a program as a different user. It changes the
administrative account in the current log-in session. This command is especially beneficial for
accessing the system through SSH or using the GUI display manager when the root user is
unavailable.
The htop command is an interactive program that monitors system resources and server
processes in real time. It is available on most Linux distributions, and you can install it using the
default package manager.
Compared to the top command, htop has many improvements and additional features, such as
mouse operation and visual indicators.
htop [options]
40. ps command
The process status or ps command produces a snapshot of all running processes in your system.
The static results are taken from the virtual files in the /proc file system.
Executing the ps command without an option or argument will list the running processes in the
shell along with:
Here are some tips and tricks you can use to manage the Linux system:
Conclusion
Linux commands let you perform basic and administrative tasks quickly and effectively from the
Terminal. With it, you’ll have more flexibility over your system and the ability to access features
that are not always available through a graphical user interface.
Learning basic Linux commands is essential to interact with your machine, primarily if you use a
Virtual Private Server (VPS). In most cases, each utility consists of three parts – a command
name, a flag or option, and a parameter or argument.
This article has discussed 40 common commands, such as apt-get to install a package, nano to
manipulate a file, htop to monitor current processes, and ls to view a directory.
We hope this article has helped you learn the basic Linux commands. If you have any questions
or suggestions, please leave them in the comments section below.
One of the most commonly used Linux command is the cat command (short for concatenate).
This command helps you create, view and combine files, as well as redirect the output (the
contents of the whole file).
● Foreground Processes
depend on the user for input
also referred to as interactive processes
● Background Processes
run independently of the user
referred to as non-interactive or automatic processes
A process in Linux can go through different states after it’s created and before it’s terminated.
These states are:
● Running
● Sleeping
○ Interruptible sleep
○ Uninterruptible sleep
● Stopped
● Zombie
● A process in running state means that it is running or it’s ready to run.
● The process is in a sleeping state when it is waiting for a resource to be available.
● A process in Interruptible sleep will wakeup to handle signals, whereas a process in
Uninterruptible sleep will not.
● A process enters a stopped state when it receives a stop signal.
● Zombie state is when a process is dead but the entry for the process is still present in the
table.
There are two commands available in Linux to track running processes. These two commands
are Top and Ps.
To track the running processes on your machine you can use the top command.
$top
Top command displays a list of processes that are running in real-time along with their memory
and CPU usage. Let’s understand the output a little better:
You can use the up/down arrow keys to navigate up and down through the list. To quit press q.
To kill a process, highlight the process with the up/down arrow keys and press ‘k’.
Alternatively, you can also use the kill command, which we will see later.
2. ps command
ps command is short for ‘Process Status’. It displays the currently-running processes. However,
unlike the top command, the output generated is not in realtime.
$ps
$ ps -u
Copy
Here:
$ ps -A
This command lists even those processes that are currently not running.
3. Stop a process
To stop a process in Linux, use the 'kill’ command. kill command sends a signal to the process.
There are different types of signals that you can send. However, the most common one is ‘kill -9’
which is ‘SIGKILL’.
$ KILL -L
Kill L
The default signal is 15, which is SIGTERM. Which means if you just use the kill command
without any number, it sends the SIGTERM signal.
Kill [pid]
Kill -9 [pid]
This command will send a ‘SIGKILL’ signal to the process. This should be used in case the
process ignores a normal kill request.
In Linux, you can prioritize between processes. The priority value for a process is called the
‘Niceness’ value. Niceness value can range from -20 to 19. 0 is the default value.
The fourth column in the output of top command is the column for niceness value.
To start a process and give it a nice value other than the default one, use:
Conclusion
This tutorial covered process management in Linux. Mainly the practical aspects of process
management were covered. In theory, process management is a vast topic and covering it in its
entirety is out of scope for this tutorial.
Command Description
bg To send a process to the background
fg To run a stopped process in the foreground
top Details on all Active Processes
ps Give the status of processes running for a user
ps PID Gives the status of a particular process
pidof Gives the Process ID (PID) of a process
kill PID Kills a process
nice Starts a process with a given priority
Changes priority of an already running
renice
process
df Gives free hard disk space on your system
free Gives free RAM on your system
The data represents the used/available memory and the swap memory figures in kilobytes.
total Total installed memory
Compared to the /proc/meminfo file, the free command provides less information. However, it is
easier to understand. The key figure being the available value as it displays how much memory is
still available for running new applications.
The free command has multiple options to format the output so that it better matches your
requirements. The table below lists the most useful variations of the free command.
Options Result
-b output in bytes
-k output in kibibytes
-m output in mebibytes
-g output in gibibytes
detailed low and high memory
-l
statistics
-o old format (no -/+buffers/cache line)
-t total for RAM + swap
-s update every [delay] seconds
-c update [count] times
● vmstat Command to Report Virtual Memory Statistics
●The vmstat command is a useful tool that reports virtual memory statistics. vmstat
provides general information about processes, memory, paging, block IO, traps, and CPU
activity.
The basic vmstat syntax is:
Option: Description:
-a Displays active and inactive memory.
-f Displays the number of forks since boot.
-m Displays slab statistics.
-n Displays the header only once rather than periodically.
Displays a table of various event counters and memory
-s
statistics.
-d Displays disk statistics.
-D Detailed disk activity report.
-p Detailed partition statistics.
-t Adds a timestamp to the report.
-S [unit] Switches output units.
-V Displays version information.
-h Displays help.
man vmstat Displays a user manual in the terminal.
The detailed description listed below provides an explanation for each value in case you need
assistance in analyzing the results.
● Procs
● r: number of processes waiting for run time.
● b: number of processes in uninterruptible sleep.
● Memory
● swpd: amount of virtual memory used.
● free: amount of idle memory.
● buff: the amount of memory used as buffers.
● cache: amount of memory used as cache.
● Swap
● si: memory swapped in from disk (/s).
● so: memory swapped to disk (/s).
● IO
● bi: Blocks received from a block device (blocks/s).
● bo: Blocks sent to a block device (blocks/s).
● System
● in: number of interrupts per second, including the clock.
● cs: number of context switches per second.
● CPU – These are percentages of total CPU time.
● us: Time spent running non-kernel code. (user time, including nice time)
● sy: Time spent running kernel code. (system time)
● id: Time spent idle. Before Linux 2.5.41, this includes IO-wait time.
● wa: Time spent waiting for IO. Before Linux 2.5.41, included in idle.
● st: Time stolen from a virtual machine. Before Linux 2.6.11, unknown.
The data is continuously updated, which allows you to follow the processes in real-time.
$htop
1. The top segment provides summary information and contains graphic meters and text
counters.
2. The lower section structures the detailed data, per process. This allows you to perform
actions on individual processes with ease.
3. The shortcuts listed at the bottom of the screen will enable you to manipulate and
customize the processes quickly and without the need to type specific commands.