=========
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* : https://youtu.be/xi-JDeceLeI?si=4MgBX_H4_NPuzdT8
👉 *Linux VM Setup in AWS* : https://www.youtube.com/watch?v=JMlQaTXvw5o
👉 *Connect Linux VM with MobaXterm* : https://youtu.be/uI2iDk8iTps?si=ZuZs0lQTxoRpbRMk
👉 *Connect Linux VM with putty* : https://youtu.be/GXc_bxmP0AA?si=HgSydrP89mPxv23s
=============================================================================
================
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
: 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 f1.txt
touch f2.txt f3.txt
cd : change directory
cd dir-name
cd ..
rm : to delete file
rm f1.txt
rm -rf
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 > f1.txt
# append data to existing file
cat >> f1.txt
# print file data
cat f1.txt
# print file data along with line numbers
cat -n f1.txt
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 f1.txt f2.txt
Note: If we want to copy data from multiple files then we should use cat command
cat f1.txt f2.txt > f3.txt
head : print first 10 lines of the file
head f1.txt
head -n 20 f1.txt
head -n 50 f1.txt
tail : print last 10 lines of the file
tail f1.txt
tail -n 25 f1.txt
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' abc.txt
# ignore case sentiveness
grep -i 'teen' abc.txt
# print lines contains teen with line number
grep -n 'teen' abc.txt
# print lines which doesn't contain teen keyword
grep -v 'teen' abc.txt
# 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 abc.txt | 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
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 f1.txt f2.txt)
vi : create and open file for editing (vi f3.txt)
====================
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/' data.txt
# replace second occurance of linux keyword with unix
sed 's/linux/unix/2' data.txt
# replace 3rd occurance of linux keyword with unix
sed 's/linux/unix/3' data.txt
# replace all occurances of linux keyword with unix
sed 's/linux/unix/g' data.txt
# substitute and save changes in original file
sed -i 's/linux/unix/g' data.txt
# delete first line of the file
sed -i '1d' data.txt
# delete fourth line of the file
sed -i '4d' data.txt
#delete last line of the file
sed -i '$d' data.txt
# delete data from nth line to last line
sed -i 'n,$d' data.txt
Note: n is a number
# delete data from 5th line to 15th line
sed -i '5, 15d' data.txt
# print data from line number 10 to 20
sed -n '10,20p' data.txt
# insert data at 2nd line
sed '2i\i love india' data.txt
# insert data at last line
sed '$a\i am from ashokit' data.txt
=================
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
# set password for user & update pwd for user
sudo passwd
# display all users created
cat /etc/passwd
# swith user account
su
# navigate to current user home directory
cd ~
# Delete user
$ sudo userdel
# Delete user along with user home directory
$ sudo userdel --remove
# how to change username
$ sudo usermod -l
/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
# Adding user to group
$ sudo usermod -aG
# Remove user from the group
$ sudo gpasswd -d
# display users belongs to a group
$ sudo lid -g
# display user belongs to which groups
$ id
# delete group
$ sudo groupdel
# changing group name
$ sudo groupmod -n
=======================================================================================
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
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 f1.txt
=> 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-- f2.txt
user : read
group : read + execute
others : read
r-xrw--w- f3.txt
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 f1.txt
# giving write permission for group
$ chmod g+w f1.txt
# Remove execute permission for others
$ chmod o-x f1.txt
# Removeall permissions for others
$ chmod o-rwx f1.txt
# give all permissions for group
$ chmod g+rwx f1.txt
====================================
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 f1.txt
# ugo+w
$ chmod 222 f1.txt
# u+rwx, g+rw o+rx
$ chmod 765 f1.txt
# u+r, g+rx, o+rw
$ chmod 456 f1.txt
# u+rwx, g+rwx, o+rwx
$ chmod 777 f1.txt
# u-rwx, g-rwx, o+rwx
$ chmod 7 f1.txt
###############
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 f1.txt
sudo find /home -name f1.txt
# 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
# create some empty files
touch f1.txt f2.txt f3.txt
# create zip file with content
zip ashokit_data *.txt
# unzip the zip file
unzip ashokit_data.zip
======================
Networking commands
======================
ping : To check connectivity
ping 192.168.23.321
wget : It is used to download files from internet
wget
curl : It is used to send HTTP request to server
curl https://type.fit/api/quotes
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 : index.html and write the content
sudo vi index.html
================================
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 index.html file with website content
$ sudo vi index.html
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
$ touch f1.txt
# create link file
$ ln f1.txt f100.txt
Note: f100.txt is link file for f1.txt
# 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
Ex:
$ touch s1.txt
$ ln -s s1.txt s100.txt
$ ls -li
Note: Original file and link file having diff inode numbes
$ cat >> s1.txt
Note: Original file data reflecting in link file also.
$ rm s1.txt
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
# 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