0% found this document useful (0 votes)
24 views15 pages

2.Linuxh

Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
24 views15 pages

2.Linuxh

Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 15

==========================================

Where we will use Linux OS in Realtime ?


==========================================

1) Application deployment will happen on linux machines only

2) Tools will be installed on Linux machines only

Ex: Docker, K8S, Jenkins, Nexus, SonarQube, ELK etc...

3) Application log files will be stored in linux machine only

==============
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, eclipse...

=> We have several operating systems in market

Ex: Windows, Linux, Mac, Android, IOS etc...

===========
Windows OS
===========

=> Developed by Microsoft company (Bill Gates)

=> It is commercial OS (licensed)

=> It is single user based OS

=> Security features are very less in Windows

Note: We need to install anti-virus software to protect files

=> Windows is GUI based OS

=> Windows is recommened for personal use only

Ex: internet browsing, games, watch movies, attend online classes....

=========
Linux OS
=========

=> Linux community based OS

=> Linux is free & open source os


=> Linux is CLI based OS

=> Linux is multi user based OS

=> Security Features are very high in linux

Note: Anti-virus s/w is not required

=> Linux OS developed by "Linus Torvalds"

=> Linux is highly recommended to manage servers

Ex: App Severs, DB servers, Docker, Jenkis, K8S etc..

==============
Linux History
==============

-> 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
was new OS

(Li) nus + Mi (nux) ===> Linux

=====================
Linux Distributions
=====================

-> Linus Torvalds provided Linux OS 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, CentOS, RedHat, Debian, SUSE, Kali, Fedora....

==============================
How to setup Linux Machine ?
=============================

Approach-1) Install Linux OS directley in computer

Approach-2) We can use Virtual Box and install Linux OS as Guest OS in Windows

Approach-3) Setup Linux VM in AWS Cloud (Recommended)

============================
Setup Linux VM in AWS Cloud
============================
Step-1 : Login into AWS cloud account

Step-2 : Create EC2 Instance (Linux VM) (Amazon Linux)

instance type : t2.micro (free tier eligible)

Step-3 : Connect with Ec2 instance using SSH Client

( git bash/ mobaxterm / putty)

Step-4 : Practice Linux commands

=======================
🔥 Today's Assignment
=======================

👉 AWS account setup : https://www.youtube.com/watch?v=xi-JDeceLeI

👉 Linux Machine with Git Bash : https://www.youtube.com/watch?v=JMlQaTXvw5o

👉 Linux Machine with MobaXterm : https://youtu.be/uI2iDk8iTps?si=ZuZs0lQTxoRpbRMk

👉 Linux Machine with putty : https://youtu.be/GXc_bxmP0AA?si=HgSydrP89mPxv23s

================
Linux Commands
================

=> Linux is CLI based OS

=> We will perform operations in linux vm using linux commands

whoami
pwd
date
cal
cal 2025

mkdir : Make directory

mkdir ashokit
mkdir java python aws devops

rmdir : Remove empty directory

rmdir devops

ls : list the files of present working directory

ls -l : Display in alphabetical order

ls -lr : Display in reverse of alphabetical order

ls -lt : Display files based on timestamp (latest on top)

ls -ltr : Display old files on top & latest at bottom


ls -la : display hidden files (.a)

cd : change directory (navigation)

cd <dir-name> : go inside the directory

cd .. : come out from directory

touch : To create empty files

touch f1.txt

touch f2.txt f3.txt f4.txt

cat : create file with data + append data to file + print file data

cat > f1.txt : Create new file with data/overwrite exiting file
data
after adding data ctrl+ D to come out of file

cat >> f1.txt : Append data to the exiting file data

cat f1.txt : Print file data from top to bottom

cat -n f1.txt : print file data along with line numbers

rm : Remove files

rm f1.txt : Remove the file

rm -rf devops : remove non-empty directory

cp : copy the data from one file to another file

cp f1.txt f2.txt

Note: To copy the data from multiple files we need to use cat command like below

cat f1.txt f2.txt > f3.txt

mv : rename file/directory + move the file/directory

mv linux.txt linux-os.txt

mv git.txt devops/

=======================================================================

tac : Read file data from bottom to top (opposite of cat cmd)

tac f1.txt

wc : word count

wc f1.txt

rev : reverse the file data and print it


rev f1.txt

========================================

head : To display file data from top (default 10 lines)

head app.log

head -n 20 app.log

head -n 25 app.log

tail : To display file data from bottom (default 10 lines)

tail app.log

tail -n 20 app.log

tail -n 100 app.log

grep : grep stands for global regular expression print

Note : We will use this grep command for keyword search in file

grep 'exception' app.log (print lines which contains given


keyword)

grep -i 'exception' app.log (ignore case sensitive)

grep -n 'java' app.log (print lines along with line num)

grep -v 'apache' app.log (print lines which don't have


apache keyword)

=======================
Text Editors in Linux
=======================

=> vi (visual editor) it is default editor in linux machines

=> using 'vi' we can create new files and we can edit existing files also

$ vi f1.txt

=> vi command is having 3 modes

a) command mode (just to open the file)

b) insert mode (to edit the file) ---> press 'i' in keyboard

c) esc mode (to comeout from insert mode) --> press 'esc' in keyboard

## Save changes & close the file => :wq or :wq!

## Without saving changes close the file => :q!

Note: vi command will open the file if it is already avilable otherwise it will
create new file and it will open that file.

===================================
File creation commands in linux
===================================

touch : Create empty file

cat : Create file with data

cp : copy one file data into another file

vi : create and open file for editing

====================================
Reading file data commands in linux
====================================

cat : print file data from top to bottom

tac : print file data from bottom to top

rev : print each line in reverse order

head : print top 10 lines of file

tail : print last 10 lines of file

vi : open file

=============
SED command
=============

=> SED stands for stream editor

=> It is used to process file data

=> Using SED command we can perform operations on the file without opening the
file.

# Replace first occurance of linux keyword with unix in every line


sed 's/linux/unix/' linux-os.txt

# Replace second occurance of 'linux' with 'unix' in every line


sed 's/linux/unix/2' linux-os.txt

# Replace all occurances


sed 's/linux/unix/g' linux-os.txt

# Substitute and save changes in original file


sed -i 's/linux/unix/g' linux-os.txt

# delete second line of data in the file


sed -i '2d' linux-os.txt

# delete fourth line of data in the file


sed -i '4d' linux-os.txt
# delete last line of data in the file
sed -i '$d' linux-os.txt

# delete from nth line to last line (n is a number)


sed -i 'n,$d' linux-os.txt

# delete from 2nd line to 10th line


sed -i '2,10d' linux-os.txt

# print data from 3rd line to 6th line


$ sed -n '3,6p' linux-os.txt

# insert data before 4th line


$ sed '4i\i am from ashokit' linux-os.txt

# Add given text after last line


$ sed '$a\i love linux' linux-os.txt

===========================
Working with User Accounts
===========================

=> Linux is a multi user based OS

=> Multiple users can acces single linux machine and can perform multi tasking

Note: "ec2-user" is default user in amazon linux vm

Note: ec-user having sudo priviliges

Note: For every user we can create new account to access linux vm.

# create user
sudo useradd <uname>

# set password for user account


sudo passwd <uname>

# display all users avialable in linux vm


cat /etc/passwd

# switch user
$ sudo su <uname>

# Go to logged in user home directory


$ cd ~

# Delete user account


$ sudo userdel <uname>

# Delete user account along with user home directory


$ sudo userdel <uname> --remove

# how to change username


$ sudo usermod -l <new-name> <old-name>

================================
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 suderos file


$ sudo visudo

# configure user like below in sudeors file (after root user details)
<username> ALL=(ALL:ALL) ALL

=> After making changes to close sudoers file => ( CTRL + X + Y + Enter)

========================================================
How to enable password based authentication in linux ?
========================================================

=> in sshd_config file , by default PassswordBasedAuthentication is no.

=> To enable password based authentication we need to set the value as yes.

# Display sshd_configurration file data


$ sudo cat /etc/ssh/sshd_config

# Open file and enter into insert mode (press 'i')


$ sudo vi /etc/ssh/sshd_config

# set PassswordBasedAuthentication as yes

# save and close the file ( esc + :wq)

# restart sshd service


# sudo systemctl restart sshd

=====================
Log Server Details
=====================

Public IP : 43.204.143.144
username : loguser
pwd: log@123

# use below command to connect with username and pwd


$ ssh uname@public-ip

Note: To connect with linux vm using username and password then


passwordbasedauthentication must be enabled in that linux vm.

===========================
Working with User Groups
===========================

=> When we create user in linux, for every user one user group also will be created
with the given username.

# display all groups available


$ cat /etc/group

# create new group


$ sudo groupadd <group-name>

# Add user to group


$ sudo usermod -aG <group-name> <user-name>

# delete user from group


$ sudo gpasswd -d <username> <group-name>

=======================================

1) File permissions & ownership


chomod & chown

2) Networking commands

3) Package Managers (s/w installation)

4) Linux Architecture

=================
File Permissions
=================

ec2-user => /home/ec2-user ==> f1.txt

raju => /home/raju ==> f1.txt

rani => /home/rani ==> f2.txt

ashok => /home/ashok ==> f3.txt

=> We can create several user accounts in single linux vm

=> Multiple users can connect to single linux vm at a time.

Note: One user can modify the file created by other user in linux vm.

=> To avoid this problem we will use file permissions in linux

=> In Linux, file permissions are divided into 3 types

r => read
w => write
x => execute

=> A file/directory contains 3 sections of permissions


user (owner) => u

group => g

others => o

=> We can see below permissions for a file & directory

rwxrwxrwx f1.txt

user having read + write + execute


group having read + write + execute
others having read + write + execute

rw-r--r-- f2.txt

user having read & write (no execute permission)


group having only read
others having only read

rwxr-xr-x java

user having read + write + execute


group having read + execute
others having read + execute

r-xr----x sbms

user having read + execute


group having only read
others having only execute

=> To change file permissions we will use 'chmod' command

# 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

# Remove all 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 Permission
1 => Execute
2 => Write
3 => (2+1) => Write + Execute
4 => Read
5 => (4+1) => Read + Execute
6 => (4+2) => Read + Write
7 => (4+2+1) => Read + Write + Execute

$ chmod 765 f1.txt

- user having all permissions


- group having read + write
- others having read + execute

$ chmod 456 f1.txt

- user having only read


- group having read + execute
- others having read + write

====================
Ownership change
====================

=> To change file/directory ownership we will use 'chown' command

# changing owner
sudo chown new-owner file/directory

# changing owner-group
sudo chown :new-group file/directory

# changing owner & group


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

=====================
Networking Commands
=====================

ping : To check connectivity

$ ping www.google.com
$ ping www.google.com
$ ping 192.168.1.20

wget : It is used to download the files from internet

$ wget https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.91/bin/apache-
tomcat-9.0.91.zip

curl : To send http request to server (api call)


$ curl https://type.fit/api/quotes

ifconfig: To get IP address of our machine

$ ifconfig

=======================================

whoami
pwd
date
cal
cal 2050
mkdir
rmdir
touch
ls -ltr
cat
cp
rm -rf
mv
tac
head
tail
grep
vi
sed

useradd
userdel
usermod
groupadd
groupdel
id

chmod
chown

ping
wget
curl
ifconfig

==========================
Package Managers in Linux
==========================

=> Package Managers are used to install softwares in linux machines

=> Package Managers are specific to linux distribution

Amazon Linux + Red HAT : yum

Ubuntu Linux + Debian : apt

#install git client s/w


sudo yum install git -y
# install java s/w
sudo yum install java

# install maven s/w


sudo yum install maven

================================
Install WebServer in Linux VM
================================

=> Webserver is a software which is used to run websites

=> Websites are divided into 2 types

1) static website (fixed content)

ex : wikipedia

2) dyanmic website (content will change based on user)

ex: gmail, facebook

=> For static websites execution we can use 'httpd' as webserver

=> For dynamic websites execution we can use 'tomcat' as webserver

# install httpd webserver


sudo yum install httpd -y

# start httpd server


sudo service httpd start

Note: httpd webserver runs on http protocol which is 80.

##### To access our webserver we need to enable 80 port number in EC2 VM security
group inbound rules (firewell setting) ####

=> Access our webserver using EC2 VM public ip address in our browser.

# Navigate to webserver directory


cd /var/www/html

# create index.html file with content


sudo vi index.html

=============================
What is systemctl in linux ?
=============================

=> systemctl is a command-line utility in Linux systems which is used to manage


system services

=> Starting service


=> stopping service
=> restarting service
=> reloading service
=> enabling / disabling services

#check service status


sudo systemctl status <service_name>

#start service
sudo systemctl start <service_name>

#stop service
sudo systemctl stop <service_name>

#re-start service
sudo systemctl restart <service_name>

=====================================
How to change hostname in linux vm ?
=====================================

# set hostname
$ sudo hostname <new-name>

# re-start session
$ exit

Note: Connect back to linux vm using ssh command.

=================
whereis command
================

To know the location of the package we have installed

whereis java

whereis maven

whereis git

==============
find command
===============

=> find command is used to search files location

# find the file whose name is oops.txt


sudo find /home -name oops.txt

# find all the empty files inside /home


sudo find /home -type f -empty

# find all the empty directories inside /home


sudo find /home -type d -empty

# find the files which are 30 days old in linux vm


sudo find /home -mtime 30 -print

===============
Assignment
===============

Deploy Spring Boot Application in Linux VM : https://www.youtube.com/watch?


v=cRQPgbwOWq0

========
Summary
=========

1) Why Linux for Java developers ?

2) What is OS & why ?

3) Windows Vs Linux

4) Linux History

5) Linux Distributions

6) Linux VM Setup

7) Linux commands

8) Working with directories & files

9) Working with editors (vi & sed)

10) Users & groups Management

11) sudoers file & sshd_config file

12) PasswordBasedAuthentication enable

13) File Permissions & Owership

14) Package Managers

15) Services management (systemctl)

You might also like