Skip to content

Linux

Overview

Linux is the backbone of modern DevOps infrastructure, providing a stable, open-source operating system for servers, containers, and cloud platforms.


Core Linux Concepts

File System Hierarchy

/
├── /bin          → Essential executables
├── /etc          → Configuration files
├── /home         → User home directories
├── /var          → Variable data (logs, cache)
├── /tmp          → Temporary files
├── /usr          → User programs and libraries
├── /opt          → Optional software packages
└── /root         → Root user home directory

File Permissions

# Symbolic representation: rwxrwxrwx (owner-group-others)
# Numeric: 755 = rwxr-xr-x

chmod 755 script.sh          # Make executable
chmod 644 config.conf        # Read/write for owner, read for others
chown user:group file.txt    # Change ownership

Essential Linux Commands

Category Command Purpose Example
Navigation cd Change directory cd /home/user/projects
Navigation pwd Print working directory pwd
File Listing ls -la List detailed files ls -la /etc
File Creation touch Create empty file touch new_file.txt
File Content cat Display file content cat config.yml
File Search find Search files find / -name "*.log"
Text Search grep Search text patterns grep -r "error" /var/log
File Copy cp Copy files/directories cp -r src/ dest/
File Move mv Move/rename files mv old.txt new.txt
File Delete rm Remove files rm -rf /tmp/old_data
Disk Usage du -sh Directory size du -sh /var/log
Disk Space df -h Filesystem usage df -h

User & Group Management

User Management

# Create new user
sudo useradd -m -s /bin/bash john

# Add user to group
sudo usermod -aG docker john

# Set user password
sudo passwd john

# Delete user
sudo userdel -r john

# List all users
cat /etc/passwd

Group Management

# Create group
sudo groupadd developers

# Add user to group
sudo usermod -aG developers john

# List groups
cat /etc/group

# Groups for current user
groups

System Administration

Service Management

# Start service
sudo systemctl start nginx

# Stop service
sudo systemctl stop nginx

# Restart service
sudo systemctl restart nginx

# Enable service on boot
sudo systemctl enable nginx

# Check service status
sudo systemctl status nginx

# List all services
systemctl list-units --type=service

Package Management

Debian/Ubuntu (apt)

# Update package list
sudo apt update

# Install package
sudo apt install git curl wget

# Remove package
sudo apt remove git

# Upgrade all packages
sudo apt upgrade

# Search for package
apt search nginx

Red Hat/CentOS (yum/dnf)

# Install package
sudo yum install git

# Remove package
sudo yum remove git

# List installed packages
yum list installed

# Update packages
sudo yum update

Process Management

# List running processes
ps aux

# Display processes in tree format
pstree

# Kill process by PID
kill -9 1234

# Kill process by name
pkill -f nginx

# Display top processes
top

# Send signal to process
kill -SIGTERM 1234

Network Administration

Network Configuration

# Display network interfaces
ip addr show

# Check IP configuration
ifconfig

# Display routing table
ip route show
route -n

# Test connectivity
ping 8.8.8.8

# DNS lookup
nslookup google.com
dig google.com

# Check open ports
sudo netstat -tlnp
ss -tlnp

Firewall Management

# Check UFW status
sudo ufw status

# Enable UFW
sudo ufw enable

# Allow SSH
sudo ufw allow 22/tcp

# Allow HTTP/HTTPS
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

# Deny service
sudo ufw deny 8080/tcp

# List rules
sudo ufw show added

File and Text Processing

Text Editing

# Edit file with nano
nano config.txt

# Edit file with vim
vim config.txt

# Quick edit with sed
sed -i 's/old_text/new_text/g' file.txt

# View file with less
less large_file.log

# Display first 10 lines
head -10 file.txt

# Display last 10 lines
tail -10 file.txt

# Follow file in real-time
tail -f /var/log/syslog

Text Processing

# Count lines, words, characters
wc -l file.txt

# Sort lines
sort file.txt

# Remove duplicates
sort file.txt | uniq

# Print specific columns
awk '{print $1, $3}' file.txt

# Replace text
sed 's/pattern/replacement/g' file.txt

Permissions & Ownership

Permission Number Meaning
Read (r) 4 View file contents
Write (w) 2 Modify file contents
Execute (x) 1 Run file/access directory

Permission Examples

# Owner: rwx (7), Group: rx (5), Others: rx (5)
chmod 755 script.sh

# Owner: rw (6), Group: rw (6), Others: (0)
chmod 660 config.txt

# Add execute for group
chmod g+x script.sh

# Remove write for others
chmod o-w file.txt

# Recursive permission change
chmod -R 755 /var/www/html

Shell Scripting Basics

Simple Script

#!/bin/bash

# Define variables
NAME="DevOps Team"
VERSION="1.0"

# Display message
echo "Welcome to $NAME"

# Conditional statement
if [ -f "config.txt" ]; then
    echo "Config file exists"
else
    echo "Config file not found"
fi

# Loop through files
for file in *.log; do
    echo "Processing $file"
done

# Function definition
backup_data() {
    echo "Backing up data..."
    tar -czf backup.tar.gz /data
}

backup_data

Script Execution

# Make script executable
chmod +x script.sh

# Run script
./script.sh

# Run with bash explicitly
bash script.sh

# Run in background
./script.sh &

# Run with nohup (ignore hangup)
nohup ./script.sh &

System Monitoring

# Display system uptime
uptime

# View system info
uname -a

# Check CPU info
lscpu

# Check memory usage
free -h

# Monitor real-time system stats
top

# View system logs
journalctl -xe

# Check disk I/O
iostat

# Monitor network traffic
iftop
nethogs

Security Best Practices

Practice Command Purpose
SSH Key Auth ssh-keygen -t rsa -b 4096 Secure authentication
Disable Root Login PermitRootLogin no in sshd_config Reduce attack surface
Fail2Ban sudo apt install fail2ban Prevent brute force
SELinux/AppArmor Enable security module Mandatory access control
Regular Updates sudo apt update && apt upgrade Security patches
Audit Logging auditctl -w /etc/passwd Monitor changes

Cron Jobs

Schedule Automated Tasks

# Edit crontab
crontab -e

# List user's cron jobs
crontab -l

# Remove all cron jobs
crontab -r

# Cron syntax
# MIN HOUR DAY MONTH WEEKDAY COMMAND
# 0   0    1   1     *       /backup.sh

Common Cron Examples

Schedule Cron Expression Purpose
Every minute * * * * * command Frequent checks
Every hour 0 * * * * command Hourly tasks
Daily at 2 AM 0 2 * * * command Daily backup
Weekly (Sunday) 0 0 * * 0 command Weekly maintenance
Monthly (1st) 0 0 1 * * command Monthly report

Advanced Topics

System Tuning

# Display kernel parameters
sysctl -a

# Set kernel parameter
sudo sysctl -w net.ipv4.ip_forward=1

# Make persistent
echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
sysctl -p

Log Management

# View system logs
journalctl

# Follow logs in real-time
journalctl -f

# Filter by priority
journalctl -p err

# Export logs
journalctl --since "2 days ago" > export.log

Systemd Services

# Create custom service
sudo nano /etc/systemd/system/myapp.service

# Reload systemd
sudo systemctl daemon-reload

# Enable service
sudo systemctl enable myapp

# Start service
sudo systemctl start myapp

Summary Table: Essential Linux Skills

Skill Importance Tools
File Navigation Critical cd, ls, pwd
User Management Critical useradd, usermod, passwd
Package Management Critical apt, yum
Service Management High systemctl, service
Network Config High ip, ifconfig, netstat
Process Management High ps, kill, top
Shell Scripting High bash, sh
Log Analysis Medium grep, tail, journalctl
Security High ssh, chmod, firewall

Resources