=========
Linux OS
=========
=> Where we will use linux os in real-time
=> Jenkis Server
=> Docker Server
=> K8S cluster
=> SonarQube server
=> Nexus Server
=> ELK stack
=> Grafana & Promethues servers
=> Ansible server
=============
What is OS ?
=============
=> It is a software which acts as mediator between user and computer.
=> Users will communicate with computers using OS
=> Without OS we can't use any computer
=> OS provides platform to run our applications in computer.
Ex: notepad, calculator, browser, tomcat....
=> We have several operating systems in market
Ex: Windows, Linux, Mac, Android, IOS etc...
===========
Windows OS
===========
=> Developed by Microsoft company (Bill Gates)
=> Windows os is licensed (commercial)
=> Windows is single user based os
=> Security features are less in windows os (anti virus s/w required)
=> Windows is GUI based (graphical user interface)
=> Windows is recommended for personal use
Ex: watch movies, play games, online classes....
==========
Linux OS
==========
=> Linux is community based os (not specific to any company)
=> Linux is free and open source os
=> Linux is Multi User based OS
=> Linux is highly secured (anti virus is not required)
=> Linux is CLI based os (command line interface)
=> Linux is highly recommended for business use (servers management)
Ex: App Servers, DB servers, jenkins, docker, k8s, nexus....
==============
Linux History
==============
=> Linux OS developed by "Linus Torvalds"
-> Linus Torvalds identified some challenges/issues in Unix OS
-> Linus Torvalds identified one OS which is matching with his ideas
i.e Minux os
-> Linus Torvalds used Minux OS code and made some changes and released into market
as new OS i.e Linux OS.
(Li) nus + Mi (nux) = Linux
======================
Linux Distributions
======================
-> Linus Torvalds provided Linux OS source code for free of cost
-> So many companies downloaded Linux OS source code and modified according to
their requirement and released into market with their brand names
Those are called as Linux Distributions/ Linux Flavours.
-> We have 200+ Linux Distributions in the market.
Ex: Amazon Linux, Ubuntu, Red HAT, suse, debian, kali, fedora....
=============================
How to setup Linux Machine ?
=============================
Approach-1 : Download and Install Linux OS in our System.
Approach-2 : Use Virtual Box and install Linux os as guest os
Approach-3 : Setup Linux VM in AWS Cloud for free of cost
(1 year & monthly 750 hours you can use)
======================================================================
👉 *AWS Account Setup* : [Link]
👉 *Linux VM Setup in AWS* : [Link]
👉 *Connect Linux VM with MobaXterm* : [Link]
si=ZuZs0lQTxoRpbRMk
👉 *Connect Linux VM with putty* : [Link]
=============================================================================
================
Linux Commands
================
whoami : display logged in username
pwd : display present working directory
date : display today's date
cal : display current month calendar
cal 2025 : display 2025 year calendar
clear : clear the terminal content
mkdir : make directory (create folder)
mkdir aws
mkdir devops
mkdir docker
rmdir : remove empty directory (delete)
rmdir devops
rm -rf <dir> : remove non-empty directory
rm -rf devops
ls : display present working directory content
ls -l : long list the files in alphabetical order
ls -lr : display files in reverse of alphabetical order
ls -lt : display latest files on top
ls -ltr : display old files on top
ls -la : display hidden files
touch : To create empty files in linux
touch [Link]
touch [Link] [Link]
cd : change directory
cd dir-name
cd ..
rm : to delete file
rm [Link]
rm -rf <dir-name>
mv : For rename & move
mv existing-name new-name
mv presention-location new-location
cat : create new file with data + append data to file + print file data
# create new file with data
cat > [Link]
# append data to existing file
cat >> [Link]
# print file data
cat [Link]
# print file data along with line numbers
cat -n [Link]
tac : To print file data from bottom to top
==============================
10-July-2024 (Linux Commands)
==============================
cp : copy file data from one file to another file
cp [Link] [Link]
Note: If we want to copy data from multiple files then we should use cat command
cat [Link] [Link] > [Link]
head : print first 10 lines of the file
head [Link]
head -n 20 [Link]
head -n 50 [Link]
tail : print last 10 lines of the file
tail [Link]
tail -n 25 [Link]
Note: To get latest log message from log file we will use tail command.
grep : grep stands for global regular expression print
Note: Using grep command we can search for content in the file
# print lines which contains teen keyword
grep 'teen' [Link]
# ignore case sentiveness
grep -i 'teen' [Link]
# print lines contains teen with line number
grep -n 'teen' [Link]
# print lines which doesn't contain teen keyword
grep -v 'teen' [Link]
# search for teen keyword in all files of pwd
grep 'teen' *
# tail with grep combination
# in last 10 lines of file search for 'teen' keyword
tail [Link] | grep 'teen'
wc : word count
=======================
Text Editors in Linux
=======================
=> vi (visual editor) it is default editor in linux machines
=> Using 'vi' we can create new files and we can modify existing file data.
=> vi command is having 3 modes
1) command mode (just to open the file)
Ex: vi <filename>
2) insert mode (to edit the file ) ---> press 'i' in keyboard
3) esc mode (to comeout from insert mode) --> press 'esc' in keyboard
## Save changes & close the file => :wq
## Without saving changes close the file => :q!
Note: vi command will open the file if it is avilable otherwise it will create new
file and it will open that file.
========================
file creation commands
=======================
touch : to create empty file
cat : create file with data
cp : copy one file data into another file (cp [Link] [Link])
vi : create and open file for editing (vi [Link])
====================
reading file data
===================
cat : print file data from top to bottom
tac : print file data from bottom to top
head : print first 10 lines of file data
tail : print last 10 lines of file data
vi : open the file
###############
11-July-2024
###############
=============
SED Command
=============
=> SED stands for stream editor
=> SED is used to process the data (substitute, delete, print, insert)
=> Using SED command we can perform operations on the file without opening the
file.
=> SED is very powerful command in linux
# replace first occurance of linux keyword with unix
sed 's/linux/unix/' [Link]
# replace second occurance of linux keyword with unix
sed 's/linux/unix/2' [Link]
# replace 3rd occurance of linux keyword with unix
sed 's/linux/unix/3' [Link]
# replace all occurances of linux keyword with unix
sed 's/linux/unix/g' [Link]
# substitute and save changes in original file
sed -i 's/linux/unix/g' [Link]
# delete first line of the file
sed -i '1d' [Link]
# delete fourth line of the file
sed -i '4d' [Link]
#delete last line of the file
sed -i '$d' [Link]
# delete data from nth line to last line
sed -i 'n,$d' [Link]
Note: n is a number
# delete data from 5th line to 15th line
sed -i '5, 15d' [Link]
# print data from line number 10 to 20
sed -n '10,20p' [Link]
# insert data at 2nd line
sed '2i\i love india' [Link]
# insert data at last line
sed '$a\i am from ashokit' [Link]
=================
User Management
=================
=> Linux is a multi user based OS
=> Multiple users can acces single linux machine and can perform multi tasking at
time.
Note: "ec2-user" is a default user in amazon linux vm. ec2-user having sudo
priviliges.
=> Within one linux machine we can create multiple user accounts
=> when we create user account, for user one home directory will be created.
ec2-user => /home/ec2-user
john => /home/john
smith => /home/smith
# create user
sudo useradd <uname>
# set password for user & update pwd for user
sudo passwd <uname>
# display all users created
cat /etc/passwd
# swith user account
su <uname>
# navigate to current user home directory
cd ~
# Delete user
$ sudo userdel <uname>
# Delete user along with user home directory
$ sudo userdel <uname> --remove
# how to change username
$ sudo usermod -l <new-name> <old-name>
/etc/passwd: Contains general user information.
/etc/shadow: Contains hashed passwords and other security-related information.
===================================
Working with user groups in linux
===================================
=> When we create user in linux, for every user one user group also will be created
with the given username.
# Display all groups in linux
$ cat /etc/group
# Create group in linux
$ sudo groupadd <group-name>
# Adding user to group
$ sudo usermod -aG <group-name> <username>
# Remove user from the group
$ sudo gpasswd -d <username> <group-name>
# display users belongs to a group
$ sudo lid -g <group-name>
# display user belongs to which groups
$ id <username>
# delete group
$ sudo groupdel <group-name>
# changing group name
$ sudo groupmod -n <new-name> <old-name>
===================================================================================
====
Assignment : create new user and connect with linux vm using newly created user
account
===================================================================================
====
###############
12-July-2024
###############
=> In linux, to enable password based authentication we need to modify below 2
files
1) sudoers
2) sshd_config
=================================
What is sudoers file in Linux
=================================
=> It is very important configuration file in linux machine.
=> Using this file we can control which user can run command as a superuser.
# print sudoersfile content
$ sudo cat /etc/sudeors
Note: We should be very careful while working with sudoers file. If we do any
mistakes in sudoers file then system will be crashed.
########## Giving sudo previliges for user #######
# open sudoers file
$ sudo visudo
# Add below line
<username> ALL=(ALL:ALL) ALL
=> After making changes to close sudoers file => ( CTRL + X + Y + Enter)
========================================================
How to enable password based authentication for users ?
========================================================
=> In linux vm, by default passwordauthentication is no
=> If we want to connect with linux vm using username and password then we need to
set that value as yes.
=> WE WLL MODIFY THIS IN "sshd_config" file.
# Display sshd_configurration file data
$ sudo cat /etc/ssh/sshd_config
# Open file
$ sudo vi /etc/ssh/sshd_config
Note: Go to insert mode and enable pwdbasedauthentication as yes
# restart sshd service
# sudo systemctl restart sshd
Note : Now we can connect with linux vm using username and pwd
$ ssh username@public-ip
==========================
File Permissions in Linux
==========================
=> Using file permissions we can secure our files and we can protect our file data.
=> We have 3 types of permissions in linux
r => read
w => write
x => execute
=> file/directory permissions will be represented like below
rwxrwxrwx [Link]
=> file permissions contains in 9 characters
first 3 characters => user/owner permissions
middle 3 characters => group permissions
last 3 characters => others permissions
r--r-xr-- [Link]
user : read
group : read + execute
others : read
r-xrw--w- [Link]
user: read + execute
group: read + write
others : write
=> To change file/directory permissions we will use 'chmod'command
+ => add
- => remove
# Giving execute permission for user
$ chmod u+x [Link]
# giving write permission for group
$ chmod g+w [Link]
# Remove execute permission for others
$ chmod o-x [Link]
# Removeall permissions for others
$ chmod o-rwx [Link]
# give all permissions for group
$ chmod g+rwx [Link]
====================================
File Permissions in Numeric Format
====================================
0 => no permissions
1 => Execute
2 => Write
3 => (2+1) => Write + Execute
4 => Read
5 => (4 + 1) => Read + Execute
6 => (4+2) => Read + Write
7 => (6+1) => Read + Write + Execute
# ugo+x
$ chmod 111 [Link]
# ugo+w
$ chmod 222 [Link]
# u+rwx, g+rw o+rx
$ chmod 765 [Link]
# u+r, g+rx, o+rw
$ chmod 456 [Link]
# u+rwx, g+rwx, o+rwx
$ chmod 777 [Link]
# u-rwx, g-rwx, o+rwx
$ chmod 7 [Link]
###############
15-July-2024
###############
===============
chown command
===============
=> It is used to change file/directory ownership
# change owner
sudo chown new-owner file/directory
# change owner-group
sudo chown :new-group file/directory
# change owner & group of file/directory
sudo chown new-owner:new-group file/directory
============================================
Q) What is the diff between chmod & chown ?
============================================
chmod => To change file/directory permissions
chown => To change owner/group
=============================================
How to find the location of files in linux?
=============================================
=> in linux we can use 'find' command to search file paths.
# search for the files which are having name as [Link]
sudo find /home -name [Link]
# search for empty files inside /home
sudo find /home -type f -empty
# search for empty directories inside /home
sudo find /home -type d -empty
# print 30 days old files in linux vm
sudo find /home -mtime 30 -print
# print 1 day old files in linux vm
sudo find /home -mtime 1 -print
# delete 30 days old files in linux vm
sudo find /home -mtime 30 -delete
=================================
Working with Zip files in linux
=================================
=> Zip is used for files archieve (compress)
## syntax to create zip file : $ zip <zip-file-name> <content>
# create some empty files
touch [Link] [Link] [Link]
# create zip file with content
zip ashokit_data *.txt
# unzip the zip file
unzip ashokit_data.zip
======================
Networking commands
======================
ping : To check connectivity
ping [Link]
wget : It is used to download files from internet
wget <url>
curl : It is used to send HTTP request to server
curl [Link]
ifconfig : To get ip address of the machine
###############################################################################
Date : 16-July-2024
###############################################################################
==========================
Package Managers in Linux
==========================
=> package means a software
Ex: git, maven, java, python etc...
=> Package Managers are used to install / update / manage software packages in
linux machines.
=> Package managers are specific to linux distribution.
amazon linux / Red Hat Linux / Cent OS : yum
ubuntu / debian : apt
# check git client installed or not
git -version
# install git client s/w
sudo yum install git
# check git installation path
whereis git
# check java version
java -version
# check java path
whereis java
# install java
sudo yum install java
======================================================
Assignment : Remove git and java from linux machine
======================================================
=============================
Webserver Setup in Linux VM
============================
=> Webserver is a software which is used to run websites.
=> Website means collection of web pages
ex: login page, register page, dashboard page, about us page ....
=> Websites are divided into 2 types
1) Static website
2) Dynamic website
=> The website which gives same response for every user is called as static
website.
=> The website which gives response based on logged in user is called as dynamic
website.
=> To run static websites we can use 'httpd' as webserver.
=> To run dynamic websites we can use 'tomcat, iis' as webservers.
# install httpd webserver
sudo yum install httpd -y
# check webserver status
sudo service httpd status
# start httpd server
sudo service httpd start
Note: httpd webserver runs on http protocol with 80 port number.
Note: To access our webserver we need to enable http protocol in ec2 vm security
group inbound rules.
=> Once http protocol enabled we can access our webserver using ec2-linux-vm public
ip
# navigate to website content directory
cd /var/www/html
# create a file with a name : [Link] and write the content
sudo vi [Link]
================================
Static website hostig in linux
================================
# install webserver
$ sudo yum install httpd
# start webserver
$ sudo service httpd start
# Navigate to website content directory
$ cd /var/www/html
# create [Link] file with website content
$ sudo vi [Link]
Note: httpd webserver runs on 80 port number.
=> To access our webserver we need to enable 80 port number in security group
inbound rules.
=> We can access our webserver using ec2-vm public ip.
================================
What is systemctl in linux ?
================================
=> systemctl is used to manage services in linux machines.
=> using systemctl we can perform below operations
a) start a service
b) stop a service
c) restart a service
d) enable/disable service
# stop httpd server
sudo systemctl stop httpd
# start httpd server
sudo systemctl start httpd
# reload service
sudo systemctl reload http
====================================================
uptime : from when our linux vm is running
free : to display memory details
top : display running processes
htop : display running process in table format
Q) How to check linux os version ?
Ans) cat /etc/os-release
Q) How to check linux kernel version ?
Ans) uname -r
###############################################################################
Date : 18-July-2024
###############################################################################
===========================
Working with Link Files
===========================
=> In linux we can create link files ( similar to shorcut files in windows )
=> We have 2 types of link files in linux
1) Hard link
2) Soft link (symbolic link)
--------------------------------
Syntax To create Hard Link
--------------------------------
$ ln <orginal-file> <link-file>
$ touch [Link]
# create link file
$ ln [Link] [Link]
Note: [Link] is link file for [Link]
# print files along with inode numbers
# ls -li
Note: If we write some data to original file, it is reflecting in link file also.
Note: when we delete original file, link file is not effected (hard link).
------------------------------
Syntax To create Soft Link
------------------------------
$ ln -s <orginal-file> <soft-link-file>
Ex:
$ touch [Link]
$ ln -s [Link] [Link]
$ ls -li
Note: Original file and link file having diff inode numbes
$ cat >> [Link]
Note: Original file data reflecting in link file also.
$ rm [Link]
Note: When we remove original file then soft link file will become dangling file.
We can't access that file.
=====================
process management
=====================
Process management in Linux involves controlling and monitoring the execution of
programs (processes) on the system.
# display processing running
$ ps aux
Note: Every process will process id (PID)
$ kill PID
# terminate process immediatley (forcefully)
$ kill -9 PID
=============================================
How to change hostname in vm (temporarly) ?
=============================================
# set hostname
$ sudo hostname <new-name>
# re-start session
$ exit
Note: connect back to vm then we can see configured hostname
===================================
How to set hostname permanentley
===================================
# update hostname in below file
$ sudo vi /etc/hostname
# restart the vm
Note: After restart hostname configured in file will be reflected in terminal.
=========
Summary
=========
1) What is Linux OS
2) Windows Vs Linux
3) Linux VM Setup in AWS cloud
4) Connecting with Linux VM using SSH client
5) Directories & Files Based Operations
6) Text Editors
7) Text filters
8) User & Group Management
9) File Permissions
10) File Ownership
11) Archieves
12) Networking
13) suderos file
14) sshd_config
15) package managers
16) static website hosting (httpd)
17) Service Management (systemctl)
18) Process management
19) Working with link files
20) Changing Hostname