0% found this document useful (0 votes)
5 views

linux

The document outlines the use of Linux OS in real-time applications, emphasizing its deployment, tool installations, and log file management. It contrasts Linux with Windows, highlighting Linux's open-source nature, security features, and suitability for server management. Additionally, it covers Linux history, distributions, setup methods, commands, user account management, file permissions, networking commands, and package managers.
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
5 views

linux

The document outlines the use of Linux OS in real-time applications, emphasizing its deployment, tool installations, and log file management. It contrasts Linux with Windows, highlighting Linux's open-source nature, security features, and suitability for server management. Additionally, it covers Linux history, distributions, setup methods, commands, user account management, file permissions, networking commands, and package managers.
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 34

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

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, Jenkins, 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 Flavors.

-> 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 directly 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

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