Learn Everything

Core Systems

Linux & Bash

The foundational operating system of internet infrastructure, cloud servers, and containers.

Linux powers over 90% of the public cloud. Mastering POSIX fundamentals, process scheduling, Unix permissions, file descriptors, pipes, and text filtering tools like grep, awk, and sed is essential for diagnosing production incidents and managing infrastructure.

beginnerEst. 4-6 hrs study time7 Live LabsPart of DevOps Engineer Path ↗

Virtual Lab Ready

Automated testing sandbox running in your browser.

Launch First Lab ⚡

No local installation required

Hands-on Practice

Interactive Terminal Labs

Real environment tasks with automated validation. Write real commands, verify state, and debug errors.

7 tasks available
LAB 01
beginnerPractice Task

Create a Project Structure

Topic: Introduction

Create a project directory containing a src folder, a tests folder and a README.md. Follow the walkthrough below — every command is explained, and the validator checks what you actually built.

Key Checks:

  • Directory ~/project exists
  • Directory ~/project/src exists
Env: ubuntu:24.04Open Lab ↗
LAB 02
beginnerChallenge

Find the Largest Log

Topic: Introduction

Something is writing huge log files to /var/log/app. Inspect the filesystem, find the largest .log file in that directory and record it in ~/report/largest.txt. The walkthrough shows every command.

Key Checks:

  • Directory ~/report exists
  • File ~/report/largest.txt exists and names the largest log file
Env: ubuntu:24.04Open Lab ↗
LAB 03
beginnerPractice Task

Lock Down a Secret File

Topic: Filesystems & Permissions

Create a secrets file with restrictive permissions. Only the owner should be able to read and write it — nobody else. This is exactly how SSH private keys work.

Key Checks:

  • Directory ~/secure exists
  • File ~/secure/secret.txt exists
Env: ubuntu:24.04Open Lab ↗
LAB 04
beginnerGuided Task

Count Errors in a Log

Topic: Text Processing & Pipes

The application log at /var/log/app/app-2026-09-27.log is full of noise. Use grep and pipes to count the ERROR lines and save the result.

Key Checks:

  • Directory ~/report exists
  • File ~/report/error-count.txt exists and contains the number of ERROR lines
Env: ubuntu:24.04Open Lab ↗
LAB 05
beginnerPractice Task

Identify a Running Process

Topic: Processes

An application called 'app' is running on this machine. Find its PID with ps, confirm it from the command line arguments, and record it.

Key Checks:

  • Directory ~/report exists
  • File ~/report/app-pid.txt exists and contains the PID of the app process
Env: ubuntu:24.04Open Lab ↗
LAB 06
beginnerGuided Task

Write a Backup Script

Topic: Shell Scripting Basics

A backup you have to remember to run is a backup you do not have. Write a script that archives the project directory and can only be run by its owner.

Key Checks:

  • Directory ~/scripts exists
  • File ~/scripts/backup.sh exists and starts with a shebang
Env: ubuntu:24.04Open Lab ↗
LAB 07
intermediatePractice Task

Write a Health Check Script

Topic: Shell Scripting Basics

Monitoring is a script that reports a number instead of a feeling. Write a health check that reads the application log and prints a verdict a monitoring agent can scrape.

Key Checks:

  • Directory ~/scripts exists
  • File ~/scripts/healthcheck.sh exists
Env: ubuntu:24.04Open Lab ↗

System Design

Linux Kernel & Userspace Boundary

Understand how this tool operates internally before running production workloads.

Internal Mechanics

The Linux kernel controls hardware, memory paging, and process scheduling. Applications in userspace communicate with the kernel through system calls (syscalls like open, read, fork, clone, epoll).

Mental Model Rule of Thumb

Never treat Linux & Bash as a black box. Understanding its boundary with the kernel, filesystem, and network stack prevents 90% of production outages.

Core Architectural Subsystems

VFS (Virtual File System)

Abstracts ext4, xfs, overlayfs, procfs, and sysfs under a unified hierarchical tree.

Systemd / Init

PID 1 process manager supervising system services, cgroups, and journal logs.

Standard Streams

FD 0 (stdin), FD 1 (stdout), FD 2 (stderr) piped between composable Unix utilities.

Process Scheduler

Completely Fair Scheduler (CFS) allocating CPU time slices to runnable threads.

Developer Reference

Command Reference & Cheatsheet

Curated commands, flags, and one-liners tested for everyday operational productivity.

Processes
ps aux | grep -v grep | sort -nrk 3,3 | head -n 10

List top 10 CPU-consuming processes on the server

Permissions
chmod 755 script.sh && chown user:group script.sh

Set read/execute permissions and assign ownership

Text Processing
grep -rn 'ERROR' /var/log/ | awk '{print $1, $4}' | uniq -c

Filter error logs and calculate incident frequency

Storage
find / -type f -size +100M -exec ls -lh {} \;

Locate large files over 100MB consuming disk space

Archive
tar -czvf backup.tar.gz /path/to/data

Create a gzip-compressed archive from a target folder

Logs
journalctl -u nginx.service -f -n 50

Stream systemd service logs with 50 lines back-history

Fundamental Primitives

Key Terminology & Primitives

Core abstractions you must master to communicate and build with confidence.

Permissions (rwx / octal)

File modes split into User, Group, and Other (e.g. 755 = rwxr-xr-x; 644 = rw-r--r--).

Unix Philosophy

Write programs that do one thing well and compose them together via text streams and pipelines.

Signals (SIGTERM / SIGKILL)

Inter-process communications; SIGTERM (15) requests graceful shutdown, SIGKILL (9) halts process immediately.

Procfs (/proc)

Virtual filesystem providing a window into live kernel data structures, PID metrics, and networking.

Production War-Stories

Common Pitfalls & Debugging Playbook

The exact errors that take down production systems and how to diagnose and resolve them.

!

Permission Denied on executable

Symptom

bash: ./script.sh: Permission denied even though user owns the file.

Resolution

The executable bit is missing. Run 'chmod +x script.sh'.

!

Zombie processes piling up (defunct)

Symptom

ps aux shows status Z. Resources aren't freed.

Resolution

The parent process failed to reap child exit codes with waitpid(). Restart or terminate the parent process.

Reliability Standards

Production Readiness Checklist

Review this checklist before deploying workloads to staging or production clusters.

  • ✓Disable root SSH password login; require SSH key authentication.
  • ✓Configure logrotate to prevent system logs from exhausting disk inodes.
  • ✓Monitor system load averages relative to physical/virtual CPU core counts.
  • ✓Set proper ulimits for file descriptors on high-throughput database/proxy nodes.
  • ✓Audit sudoers configuration to enforce principle of least privilege.

Full Curriculum Track

Master Linux & Bash as part of the DevOps Engineer path

Tools do not exist in isolation. Learn how Linux & Bash connects with other systems, CI/CD pipelines, and infrastructure patterns.