free course · YouTube + GitHub

Linux for DevOps

From whoami to deploying a production server. Every DevOps tool — Docker, Kubernetes, CI/CD — runs on Linux. This course teaches you to drive it.

modules
5
modules
lessons
18
lessons
capstone project
1
capstone project
to start
$0
to start
scroll — the course starts below

# why linux first

In DevOps, everything you touch is a Linux box.

More than 9 out of 10 cloud servers run Linux. Docker, Kubernetes, CI/CD, AWS — all of them assume you can already drive it. That is why Linux comes first on the DevOps roadmap.

  • Free

    No license fee, on any number of servers.

  • Scriptable

    Everything can be automated from the command line.

  • Stable

    Servers run for years without a restart.

  • Same everywhere

    One skill works on every cloud.

Cloud VMsDocker containersCI/CD runnersKubernetes nodes
Linux
you, over SSH

every arrow ends at a terminal — yours

# module 1 · lesson 01 / 18

Why Every DevOps Engineer Needs Linux

What Linux is, why more than 9 out of 10 cloud servers run it, and how to get your own — free, on the computer you already have.

course progresslesson 1 of 18

# in this lesson — every command, in real words

  • wsl --install -d Ubuntuone command installs Ubuntu inside Windows
  • multipass launch --name devopscreates a free Ubuntu VM on your Mac
  • ssh muh@serverlog in to a remote server as user muh
  • whoamiprints which user you are right now
  • uname -aprints the system name and kernel version

# module 1 · lesson 02 / 18

Linux File System & Navigation

Learn the map of a Linux system — what /etc, /var, and /home are for — and move around it without a mouse.

course progresslesson 2 of 18

# in this lesson — every command, in real words

  • pwdprint working directory — “where am I?”
  • ls -lalist all files, including hidden ones, with details
  • cd /var/logchange directory — go where the logs live
  • mkdir -p app/configmake a folder, and its parents if missing
  • cp · mv · rmcopy, move (or rename), and remove files
  • find / -name '*.log'search the whole disk for .log files

# module 1 · lesson 03 / 18

Working with Files

Read, edit, and search files — then chain small commands into powerful ones with pipes and redirection.

course progresslesson 3 of 18

# in this lesson — every command, in real words

  • cat · lessprint a whole file / read it page by page
  • tail -f syslogwatch a log live as new lines arrive
  • nano · vimedit files right in the terminal
  • grep error app.logprint only the lines that contain “error”
  • cmd1 | cmd2pipe — feed one command’s output into the next
  • > · >>redirect — write or append output to a file

# module 1 · lesson 04 / 18

Text Processing

Turn messy command output into clean answers. This is the skill that makes log analysis look like magic.

course progresslesson 4 of 18

# in this lesson — every command, in real words

  • sortsort lines alphabetically or by number
  • uniq -ccollapse repeated lines and count them
  • cut -d: -f1keep only column 1, split at every “:”
  • wc -lcount lines — “how many errors today?”
  • awk '{print $1}'print the first word of every line
  • sed 's/old/new/'replace “old” with “new” in a stream

$ chmod 755 deploy.sh

r wownerx r -groupx r -othersx 

I do everything, others read + run

nginx.serviceactive (running)

$ journalctl -u nginx --since today

sudosuperuser do

# module 2 · lesson 05 / 18

Users & Groups

Every file and every process belongs to someone. Create users, organize them into groups, and use sudo the right way.

course progresslesson 5 of 18

# in this lesson — every command, in real words

  • sudo <command>run one command with superuser power
  • useradd -m dev1create user dev1, with a home directory
  • passwd dev1set or change dev1’s password
  • groups dev1show which groups dev1 belongs to
  • idshow your user ID and all your group IDs

# module 2 · lesson 06 / 18

Linux Permissions

Who may read, write, or run a file — the rwx system explained until numbers like 755 feel obvious.

course progresslesson 6 of 18

# in this lesson — every command, in real words

  • chmod 755 deploy.sh755 = rwx r-x r-x → I do all, others read + run
  • chown muh app/make muh the owner of the app folder
  • chgrp webadmins /var/www/var/www now belongs to the webadmins group
  • chmod 600 secret.key600 = rw- --- --- → private, only the owner
  • SUID · SGID · sticky bitspecial bits for shared folders and programs

# module 2 · lesson 07 / 18

Process Management

See everything the machine is running, find what eats the CPU, and stop a program safely — or by force when needed.

course progresslesson 7 of 18

# in this lesson — every command, in real words

  • ps auxlist every process running right now
  • top · htoplive view of CPU and memory, per process
  • kill -15 <PID>ask a process to stop nicely (SIGTERM)
  • kill -9 <PID>force it to stop immediately (SIGKILL)
  • jobs · bg · fgpark tasks in the background, bring them back

# module 2 · lesson 08 / 18

Services & Logs

Keep programs running after every reboot, and read their story in the logs when something breaks.

course progresslesson 8 of 18

# in this lesson — every command, in real words

  • systemctl status nginxis the nginx service running or dead?
  • systemctl restart nginxrestart the service after a config change
  • systemctl enable nginxstart nginx automatically at every boot
  • journalctl -u nginxread nginx’s logs from the system journal
  • /var/log/…the folder where classic log files live

# module 2 · lesson 09 / 18

Package Management

Install, update, and remove software cleanly — on Ubuntu, Debian, and Red Hat family systems.

course progresslesson 9 of 18

# in this lesson — every command, in real words

  • apt updaterefresh the list of available packages
  • apt upgradeupdate everything that is installed
  • apt install nginxinstall the nginx package
  • dpkg -llist every package on the system
  • yum · dnfthe same jobs on Red Hat family systems
💻 laptop
myserver.com = which IP?
🌐 DNS
🌐 DNS
203.0.113.7
💻 laptop
💻 laptop
ssh muh@203.0.113.7 🔒
🖥️ server:22

name → IP → port — every connection makes this trip

sshSecure Shell

# module 3 · lesson 10 / 18

Linux Networking

IP addresses, DNS names, and the commands that show how your server talks to the rest of the internet.

course progresslesson 10 of 18

# in this lesson — every command, in real words

  • ip ashow this machine’s network interfaces and IPs
  • ping 8.8.8.8“can I reach the internet at all?”
  • curl -I https://site.comfetch a page — show only the response headers
  • wget <url>download a file from the internet
  • hostname -Iprint this machine’s IP address

# module 3 · lesson 11 / 18

Network Troubleshooting

A calm, step-by-step method for “why can’t I connect?” — from the DNS name all the way to the port.

course progresslesson 11 of 18

# in this lesson — every command, in real words

  • ss -tulpnwhich ports are open, and which process owns them
  • dig devopsbymuh.comask DNS: which IP is behind this name?
  • traceroute <host>show every network hop on the way to the server
  • nc -zv host 22test one thing: is port 22 open over there?

# module 3 · lesson 12 / 18

SSH & Remote Servers

The tool you will use every single working day — log in with keys instead of passwords, and copy files safely.

course progresslesson 12 of 18

# in this lesson — every command, in real words

  • ssh muh@serveropen a secure shell on the remote server
  • ssh-keygen -t ed25519create a key pair — much safer than passwords
  • ssh-copy-id muh@serverput your public key on the server
  • scp app.tar server:copy a file to the server, encrypted
  • sftp muh@serverbrowse and transfer files over SSH

# module 4 / 5

Bash Scripting

Turn manual command-line work into automation — from variables and loops to scripts you will keep.

3 lessons — one slide each, keep scrolling

  1. 13Bash BasicsYour first scripts — store values in variables, read input, make decisions, and repeat work with loops.
  2. 14Advanced BashScripts you can trust in production — functions, arguments, exit codes, and error handling that catches problems early.
  3. 15Automation ScriptsBuild four real tools an engineer would actually keep: backup, health check, log cleanup, and a server monitor.

After this module: You can write robust Bash scripts with error handling and automate repetitive ops tasks.

check-disks.shbash ▶
  1. 1#!/bin/bash
  2. 2for host in web1 web2 db1; do
  3. 3 ssh "$host" df -h /
  4. 4done
  5. 5echo "disk check done ✓"

0 2 * * * /opt/scripts/backup.sh  # cron: every night at 2 AM, no human needed

bashBourne Again SHell

# module 4 · lesson 13 / 18

Bash Basics

Your first scripts — store values in variables, read input, make decisions, and repeat work with loops.

course progresslesson 13 of 18

# in this lesson — every command, in real words

  • #!/bin/bashshebang — “run this file with bash”
  • name="muh"store a value in a variable
  • echo "Hello $name"print text, with the variable filled in
  • read answerask the user and store what they type
  • if · then · firun commands only when a condition is true
  • for · whilerepeat commands in a loop

# module 4 · lesson 14 / 18

Advanced Bash

Scripts you can trust in production — functions, arguments, exit codes, and error handling that catches problems early.

course progresslesson 14 of 18

# in this lesson — every command, in real words

  • my_func() { … }group commands into a reusable function
  • $1 · $@ · $#the script’s arguments: first, all, how many
  • exit 1stop the script and report “something failed”
  • set -euo pipefailsafety switch — stop on the first error
  • trap cleanup EXITalways run cleanup code when the script ends

# module 4 · lesson 15 / 18

Automation Scripts

Build four real tools an engineer would actually keep: backup, health check, log cleanup, and a server monitor.

course progresslesson 15 of 18

# in this lesson — every command, in real words

  • backup.shcompress important data and store dated copies
  • health-check.shtest the service and alert when it is down
  • log-cleanup.shdelete old logs before the disk fills up
  • monitor.shCPU, memory, and disk in one clean report

🖥️ prod-server-01

live

  • Create users & groups
  • Lock down SSH (keys only)
  • Install & configure Nginx
  • Deploy the sample app
  • Schedule automatic backups
  • Monitor logs & resources

lesson 18 — you build all of this yourself

cronGreek “chronos” — time

# module 5 · lesson 16 / 18

Linux in Real DevOps

The daily habits of the job — schedule tasks with cron, manage environment variables, and keep an eye on the disks.

course progresslesson 16 of 18

# in this lesson — every command, in real words

  • crontab -eedit your scheduled tasks (cron jobs)
  • 0 2 * * * backup.shcron line: run the backup every night at 2 AM
  • export APP_ENV=prodset an environment variable for your apps
  • df -h · du -sh *disk free / which folder is eating the space
  • tar -czf logs.tar.gz logs/pack and compress a folder into one file

# module 5 · lesson 17 / 18

Production Linux Tasks

A junior DevOps toolkit, built live: check CPU, RAM, and disk, restart services, analyze logs, and watch open ports.

course progresslesson 17 of 18

# in this lesson — every command, in real words

  • uptime · free -h · df -hthe first look on any slow server
  • systemctl restart apprestart the service after a change
  • grep -c ' 500 ' access.logcount server errors in the web log
  • ss -tulpn | grep 8080confirm the app is listening on its port

# module 5 · lesson 18 / 18

Capstone: Deploy a Production Server

The final project — build a secured, monitored server that serves a real application. From an empty machine to production, all by yourself.

course progresslesson 18 of 18

# in this lesson — every command, in real words

  • users + SSH keyscreate the admin user, log in with keys only
  • secure sshd_configno root login, no passwords — keys only
  • nginxthe web server that fronts your application
  • deploy the appput a real application live on the server
  • cron backupsbackups run every night without you
  • log monitoringknow about problems before the users do