Articles

Learning guides, tutorials and troubleshooting articles in one list. Filter by keyword or switch categories to narrow things down. LPIC-1 objective articles live in the LPIC-1 hub.

232 articles

Guides

Docker for Linux Users: An Introduction

Understand Docker from first principles by building on your knowledge of Linux processes, namespaces, and cgroups. Grasp images, containers, and Dockerfiles as mechanics, not memorization.

~11 min Read →
Guides

What to Learn After Linux: A Roadmap

After mastering basic Linux commands, see where Docker, Git, and AWS connect to your Linux knowledge. A roadmap for choosing your next step without detours.

~9 min Read →
Troubleshooting

"command not found" for Your Own Scripts

Fix command not found for a script you wrote. Tell it apart from Permission denied, then run with ./, chmod +x, add to PATH, and clear the hash cache.

~10 min Read →
Troubleshooting

Fixing "Cannot allocate memory"

Fix Cannot allocate memory (ENOMEM) even when RAM looks free by diagnosing overcommit accounting, ulimit, and max_map_count, then fixing it permanently.

~12 min Read →
Troubleshooting

"No such file or directory" When the File Exists

ls shows the file, yet you get No such file or directory. Isolate hidden chars, CRLF, broken links, and a missing dynamic linker.

~10 min Read →
Guides

Should You Switch? zsh and fish vs bash

When it is worth switching from bash to zsh or fish, migration steps, carrying over your config, compatibility traps, and how to roll back.

~11 min Read →
Tutorials

chroot: Changing the Root Directory to Isolate an Environment

Switch the root directory a process sees with chroot. Covers preparing shared libraries, recovering a broken system from a live USB, and why chroot is not a security boundary.

~10 min Read →
Troubleshooting

Fixing Clock Skew and Certificate Errors

Diagnose "Clock skew detected" build warnings and "certificate is not yet valid" errors from a wrong clock, verify with date/openssl, and fix it for good.

~10 min Read →
Tutorials

comm and join: Comparing and Joining Files

Use comm to show common lines and differences across two files in 3 columns, and join to merge rows on a shared key. Includes the sorted-input gotcha.

~10 min Read →
Troubleshooting

Diagnosing "Connection timed out"

A silent, long wait with no reply. Triage a firewall DROP, an unopened security group, a dead service, and a path blackhole, from your host outward.

~12 min Read →
Guides

Containers vs Virtual Machines (VMs): The Basics

Understand containers vs virtual machines through kernel sharing, namespaces, and cgroups. See the speed-vs-isolation trade-off and how to choose before learning Docker.

~12 min Read →
Guides

Setting Up Linux for Developers

A practical guide to setting up a Linux dev environment — the essential tools to install first.

~12 min Read →
Troubleshooting

Fixing "device is busy" on umount

umount fails with busy. Find who holds the filesystem with fuser/lsof and detach it safely.

~11 min Read →
Guides

Choosing an Editor: vim, nano, emacs, VS Code

vim, nano, emacs, VS Code — which one should you actually use? Let's sort out each editor's strengths and how to choose, together with Lina.

~11 min Read →
Tutorials

env Command

Run a command with a modified environment without touching your shell. Set variables temporarily, use env -i / -u / -C, and write portable shebangs.

~9 min Read →
Guides

A Mental Model for Permissions

What do rwx and owner/group/other actually mean? Let's turn the cryptic string in ls -l into a simple grid of three people times three actions, together with Lina.

~11 min Read →
Troubleshooting

Repairing Filesystem Corruption with fsck

Repair ext4 corruption safely. Why you must unmount first, how to check the root FS, -n/-y/-f options, and the XFS difference.

~12 min Read →
Tutorials

fuser: Finding Processes Using Files

Find the culprit behind umount "target is busy" with fuser, then kill it safely. Includes a fuser vs lsof comparison.

~10 min Read →
Tutorials

GNU parallel

Run shell commands in parallel to speed up batch work. Placeholders, job control, output ordering, and joblog resume explained, with how parallel differs from xargs.

~10 min Read →
Troubleshooting

Fixing Repository GPG Key Errors (NO_PUBKEY)

Tell a NO_PUBKEY error from an expired EXPKEYSIG one, fetch the public key into a keyring, bind it with signed-by, and restore apt signature verification safely.

~11 min Read →
Tutorials

hexdump and xxd: Inspecting Binary Data in Hex

Compare hexdump, xxd, and od at a glance. Use -C, xxd -r, and od -t x1z to peek at binary, spot CRLF and BOM bytes, and edit bytes by hand.

~9 min Read →
Guides

How Linux Boots: From BIOS/UEFI to Login

What actually happens between power-on and the login prompt? Walk through BIOS/UEFI, GRUB, the kernel, initramfs, and systemd, with a way to diagnose each stage.

~13 min Read →
Troubleshooting

Diagnosing "Input/output error"

A file op returns EIO. Read the kernel log with dmesg, then tell a failing disk from FS corruption or a disconnect.

~11 min Read →
Tutorials

ionice: Controlling Disk I/O Priority

Stop backups and rsync from slowing down your server. Use ionice to set idle/best-effort/realtime classes, apply to running PIDs, and check the BFQ scheduler when it has no effect.

~9 min Read →
Troubleshooting

When Linux Won't Boot - Kernel Panic and Emergency Mode

First steps when Linux won't boot. Triage kernel panic, the initramfs prompt, GRUB and systemd emergency mode, then recover with fstab fixes, fsck and an older kernel.

~12 min Read →
Guides

Choosing a Linux Distribution: Ubuntu, Debian, Rocky, Arch

Compare Ubuntu, Debian, Rocky, and Arch by release model, support window, and packaging. Work backward from your use case to the right distro.

~13 min Read →
Guides

Linux Filesystem Types: ext4 vs xfs vs btrfs

Compare ext4, xfs, and btrfs in practice. Decide by CoW, snapshots, and resize limits, and check your own filesystem with df -T and lsblk.

~13 min Read →
Troubleshooting

Fixing "cannot set LC_ALL" Locale Warnings

Diagnose "cannot set LC_ALL" and "setlocale" warnings from a missing locale, confirm with locale -a, generate it with locale-gen, and stop SSH forwarding for good.

~10 min Read →
Tutorials

mktemp Command: Creating Safe Temporary Files

Why fixed-name or $$ temp files are dangerous, and how mktemp creates unique, owner-only temporaries that trap cleans up reliably.

~8 min Read →
Tutorials

nl Command: Numbering Lines

Learn the nl command through a friendly dialogue. Add line numbers to text, see how nl differs from cat -n on blank lines, and tune width, separator, start number, and format.

~9 min Read →
Troubleshooting

Fixing Broken Dependencies and Held Packages

When apt holds updates back or stops with unmet dependencies, learn to tell held from broken and repair the dependency tree without making it worse.

~10 min Read →
Guides

Package Managers Compared: apt, dnf, pacman, zypper

See apt, dnf, pacman, and zypper on one map. Learn the command pattern once and handle any distro you land on.

~12 min Read →
Guides

Process States and Lifecycle in Linux

What do ps R / S / D / T / Z mean? The flow from fork to exit and reap, plus the truth about zombie and orphan processes.

~12 min Read →
Tutorials

pv: Monitoring Pipe Progress with a Progress Bar

Use pv (Pipe Viewer) to put a progress bar on any pipe. End the anxiety of staring at a silent dd or cp wondering if it is still running.

~9 min Read →
Tutorials

read Command: Interactive Input in Shell Scripts

Learn how to use the read command to capture keyboard input and read files line by line, explained through a friendly conversation. Covers -p, -s, and the while read pattern.

~9 min Read →
Tutorials

realpath and readlink

Learn how realpath and readlink resolve symlinks and relative paths into absolute paths. Covers -f / -e / -m, --relative-to, and safe scripting patterns.

~8 min Read →
Guides

root vs sudo

Is root the godlike account that can delete anything? Why shouldn't you use it day to day, and use sudo instead? Let's sort out what admin rights really are, together with Lina.

~10 min Read →
Troubleshooting

Fixing SSH Disconnects: Keepalive and Timeouts

When SSH drops after a pause, triage idle timeouts vs missing keepalive and fix it for good with ServerAlive / ClientAlive.

~12 min Read →
Guides

SSH Key vs Password Authentication

Why SSH key authentication is safer than passwords. The public-key crypto behind it, plus how to create, install, and lock down keys in practice.

~11 min Read →
Troubleshooting

Fixing "sudo: unable to resolve host"

Treat the "unable to resolve host" warning as a mismatch between hostname and /etc/hosts, then fix the 127.0.1.1 line to clear both the warning and the delay.

~9 min Read →
Troubleshooting

Diagnosing Swap Thrashing

Spot swap thrashing with vmstat si/so when a server suddenly slows, find the culprit process, and fix it permanently with swappiness and cgroups.

~11 min Read →
Troubleshooting

Decoding "syntax error near unexpected token"

Read the bash syntax error near unexpected token message correctly. Understand what the token points to, then debug fi/then/done, (, newline, and end of file.

~10 min Read →
Tutorials

tac and rev - Reversing Lines and Characters

Learn with Lina and Linny-senpai! tac flips the order of lines, rev flips the characters inside each line. Two reverse commands with opposite jobs, explained for beginners.

~7 min Read →
Tutorials

tar in Practice: Incremental Backups and Exclusions

A practical tar workflow for incremental backups. Use --listed-incremental for level-0/level-1 diffs, --exclude to skip noise, and -C plus --strip-components to control where and how archives extract.

~10 min Read →
Tutorials

taskset: Setting CPU Affinity in Linux

Pin a process to specific CPU cores with taskset. Launch-time pinning with -c, runtime reassignment with -p, plus benchmarking and core-isolation workflows.

~10 min Read →
Guides

Character Encoding: UTF-8 and Mojibake Explained

Understand character encoding and UTF-8, why mojibake happens, and how to check and convert encodings with file, iconv, nkf, and locale.

~11 min Read →
Troubleshooting

Fixing "Text file busy"

A running binary can't be overwritten with cp. Find the process with lsof and swap it in safely with rename.

~9 min Read →
Troubleshooting

Fixing "Too many authentication failures"

Understand how offering too many ssh-agent keys exceeds MaxAuthTries, and fix it for good with IdentitiesOnly and ~/.ssh/config.

~11 min Read →
Tutorials

tree Command: Visualizing Directory Structure

When ls alone makes it hard to grasp a layout, tree visualizes the whole directory structure at once. Learn to limit depth with -L, show folders only with -d, and exclude node_modules with -I, explained step by step.

~8 min Read →
Tutorials

yes Command: Automating Confirmations

Learn with Lina and Linny-senpai! When typing y to every "Are you sure?" prompt gets old, see how yes auto-answers them, why it is dangerous, and the safer alternatives.

~8 min Read →
Guides

Absolute vs Relative Paths

How do you read a path? Let's sort out absolute paths (starting from /), relative paths (from where you are), and what ., .., and ~ mean, together with Lina.

~10 min Read →
Troubleshooting

Fixing "Address already in use"

Find the process holding the port with ss / lsof / fuser, release it safely, and handle TIME_WAIT and double-start cases.

~10 min Read →
Tutorials

Bash Arrays: Indexed and Associative Arrays

Learn bash indexed and associative arrays step by step - declaring, accessing, looping, and editing elements - plus quoting and sparse-array pitfalls.

~9 min Read →
Tutorials

at Command: One-Time Job Scheduling on Linux

Schedule one-time jobs with the at command. Confirm atd, write time specs, manage jobs with atq and atrm, and know when to use at instead of cron.

~8 min Read →
Troubleshooting

Fixing "bad interpreter"

A script fails with bad interpreter. Tell CRLF line endings from a wrong shebang path using file/cat -A, then fix it with dos2unix/sed.

~9 min Read →
Tutorials

base64 Command: Encoding and Decoding Basics

Learn the base64 command with Lina and Linny-senpai. Encode and decode strings and files, avoid the echo newline trap, control wrapping with -w, and learn the key point that base64 is not encryption.

~9 min Read →
Tutorials

Bash Strict Mode: set -euo pipefail Explained

Catch hidden bugs early with set -euo pipefail. Learn errexit, nounset, pipefail, their pitfalls, and IFS settings for safer shell scripts.

~10 min Read →
Tutorials

bat: A cat Clone with Syntax Highlighting

A beginner-friendly walkthrough of bat. Display files with syntax highlighting, line numbers, and Git diff markers; fix the Ubuntu batcat naming issue; strip decorations to behave like cat; and colorize man pages.

~9 min Read →
Tutorials

Brace Expansion: {1..10} and More

Learn with Lina and Linny-senpai! Master {1..10} and {a,b,c} to create numbered files and directories fast, explained step by step for beginners.

~10 min Read →
Tutorials

md5sum and sha256sum - Verifying File Integrity

Learn with Linny-senpai and Lina! What a hash is, computing one with sha256sum, verifying with -c, the difference between corruption and tampering, and why MD5 is discouraged today — all from a beginner's perspective.

~10 min Read →
Tutorials

chmod: Numeric vs Symbolic Modes

Learn with Lina and Linny-senpai! Understand chmod numeric mode (644, 755) and symbolic mode (u+x, go-w), the r=4 w=2 x=1 math, and when to use each in a beginner-friendly walkthrough.

~10 min Read →
Guides

Terminal Shortcuts: Readline Keybindings

What are Ctrl+R and Ctrl+A even for? Learn the Readline shortcuts that make your terminal fly, hands-on with Lina.

~9 min Read →
Tutorials

Command Substitution: Capturing Output with $(...)

Learn with Lina and Linny-senpai! Capture command output into variables with `$(...)`, see how it differs from backticks, and understand why you should quote it.

~10 min Read →
Troubleshooting

Diagnosing "Connection refused"

The host is reachable but actively rejects you. Tell a stopped service from a blocked port, and refused from timeout, in the fewest steps.

~11 min Read →
Troubleshooting

When Cron Jobs Don't Run

Diagnose why a cron job won't run fast. A checklist that walks the daemon, logs, PATH, environment, schedule syntax, and permissions in order.

~11 min Read →
Tutorials

date Command - Formatting and Calculating Dates

Learn with Lina and Linny-senpai! Use date to show the current time, format output with %Y, calculate dates like yesterday or 3 days ago, convert epoch seconds, and switch time zones.

~10 min Read →
Tutorials

dd Command: Disk Imaging and Safe Usage

Clone disks and write ISO images to USB with dd safely. Verify the target with lsblk and avoid wiping the wrong device, from imaging to progress display.

~10 min Read →
Troubleshooting

Disk Full but df Shows Space

Diagnose deleted-file handles and inode exhaustion with lsof / df -i.

~9 min Read →
Tutorials

dmesg: Reading Kernel Ring Buffer Messages

Read the kernel ring buffer with dmesg. From permissions, timestamps, and level filters to triaging disk I/O, OOM, and hardware faults.

~9 min Read →
Troubleshooting

Fixing "Could not get lock"

When apt stalls with "Could not get lock", find the process holding the lock, release it safely, and recover an interrupted dpkg - in the fewest steps.

~10 min Read →
Tutorials

Exit Codes: Using $? and && ||

Learn with Lina and Linny-senpai! Understand exit status, check results with $?, and branch your commands with && and || in a beginner-friendly walkthrough.

~10 min Read →
Tutorials

fd: A Simpler, Faster Alternative to find

find has complex syntax and is slow. With fd, just type `fd pattern` for a recursive search that respects .gitignore. From install gotchas to real-world patterns.

~9 min Read →
Tutorials

file Command: Detecting File Types

Extensions can lie. Learn how the file command inspects content to reveal what a file really is, explained through Lina and Linny-senpai's dialogue.

~8 min Read →
Tutorials

flock: Preventing Concurrent Runs with File Locks

Stop cron jobs and scripts from overlapping with flock. Exclusive locks, timeouts, and self-locking patterns explained for real-world ops.

~8 min Read →
Troubleshooting

Fixing "fork: Resource temporarily unavailable"

Diagnose why fork fails with EAGAIN by checking the per-user ulimit, system pid_max, and cgroup TasksMax in order, then fix it permanently.

~11 min Read →
Tutorials

fzf: Fuzzy Finder for the Command Line

fzf is a command-line fuzzy finder. Search history with CTRL-R, pick files with CTRL-T. Covers install, shell integration, search syntax, and preview.

~9 min Read →
Tutorials

getopts Basics

Parse command-line options (-a, -b value) robustly in Bash with getopts. Covers optstring, OPTARG, OPTIND, silent-mode error handling, and how getopts differs from getopt.

~11 min Read →
Tutorials

Globbing and Wildcards

A beginner-friendly dialogue tutorial. Learn how `*`, `?`, and `[]` differ, how brace expansion is a separate mechanism, and avoid the classic traps with extglob, dotfiles, and no-match behavior.

~12 min Read →
Tutorials

GPG Basics: Encrypting, Decrypting, and Signing Files

Encrypt and decrypt files with gpg and verify signatures. Learn when to use public-key vs password mode, with copy-paste examples.

~10 min Read →
Troubleshooting

Diagnosing High Load Average

Tell CPU-bound from I/O-bound when load average is high. How to read uptime, top, vmstat, and iostat to find the cause.

~11 min Read →
Tutorials

History Expansion: Reusing Commands with !! and !$

From !! / !$ to !string / !:n / :h:t:r / ^old^new^. Use bash history expansion to reuse past commands fast, explained for beginners.

~13 min Read →
Troubleshooting

Fixing "Host key verification failed"

When a rebuilt server or reused IP makes the known_hosts key mismatch, remove the entry with ssh-keygen -R and reconnect safely.

~11 min Read →
Tutorials

inotifywait: Watching Filesystem Events

Trigger automation on file changes with inotifywait. close_write vs modify, recursive watch limits, and a copy-paste processing loop.

~10 min Read →
Tutorials

lsblk and blkid: Inspecting Block Devices and UUIDs

Map device topology with lsblk and read UUID, LABEL, and FS type with blkid. Learn how to grab a stable device identifier for fstab.

~10 min Read →
Tutorials

lsof

Use lsof to find which process holds a file, socket, or port. Solve device is busy, port conflicts, and deleted-but-open files with copy-paste commands.

~10 min Read →
Tutorials

modprobe and lsmod: Managing Kernel Modules

Use lsmod to inspect loaded kernel modules and modprobe to load or remove them with dependencies. Covers modinfo, blacklist, and load-at-boot.

~10 min Read →
Tutorials

ncdu: Interactive Disk Usage Analyzer

A beginner-friendly walkthrough of ncdu. Navigate the largest directories with arrow keys, delete files safely on the spot, see how it differs from du, and scan remote servers over ssh.

~9 min Read →
Tutorials

nmcli: Managing Networks from the Command Line

Manage NetworkManager with nmcli. Check status, connect to Wi-Fi, set static IPs, and activate connections with copy-paste commands.

~10 min Read →
Troubleshooting

Diagnosing "No route to host"

There is no path to deliver packets to the host. Triage a missing route, failed ARP, a router, and a firewall REJECT, from your host outward.

~11 min Read →
Tutorials

openssl Command Basics

Learn practical openssl in one pass. Create certificates, compute hashes, encrypt files with AES, and check server certificate expiry with copy-paste commands.

~10 min Read →
Tutorials

passwd and chage: Password and Account Aging

Manage passwords and account locking with passwd, and password aging and expiry with chage. Includes how to read /etc/shadow.

~9 min Read →
Troubleshooting

Fixing "Permission denied (publickey)"

Check whether the key is offered, authorized_keys, permissions, and sshd_config from both client and server sides.

~11 min Read →
Tutorials

printf Command: Formatted Output

Learn printf with Linny-senpai and Lina. Covers the difference from echo, format specifiers like %s, %d, and %f, width padding, and escape sequences.

~9 min Read →
Troubleshooting

Fixing "Read-only file system" Errors

A sudden read-only mount? Decide fast whether to remount or run fsck.

~11 min Read →
Tutorials

rename Command: Bulk Renaming

Learn with Lina and Linny-senpai! Rename many files at once with the rename command in a beginner-friendly walkthrough, covering the -n dry-run, s/// substitution, and the Perl vs util-linux versions.

~10 min Read →
Tutorials

ripgrep (rg): Fast Code Search

ripgrep (rg) is a fast grep alternative that respects .gitignore. Covers the difference from grep, install, type/glob filtering, context, and replacement preview.

~9 min Read →
Tutorials

rsync in Practice: Backups and Mirroring

Use rsync differential sync for real work - mirroring with --delete, generational backups with --link-dest, excludes, and bandwidth control done safely.

~12 min Read →
Tutorials

seq Command: Generating Sequences of Numbers

How do you build the numbers 1 to 100? A beginner-friendly walkthrough of seq. Generate sequences and feed them into for loops to create numbered files. Covers ranges, increments, zero padding, separators, and counting down.

~8 min Read →
Guides

Understanding Linux Signals

How do SIGTERM, SIGKILL, and SIGHUP differ? Learn how signals work, when to use each, and the logic behind graceful shutdown.

~11 min Read →
Tutorials

split Command: Splitting and Joining Large Files

A beginner-friendly walkthrough of split. Break a file that is too big to handle into pieces, join them back with cat, and verify nothing was lost. Covers size, line, and count splits plus numbered suffixes and integrity checks.

~8 min Read →
Tutorials

SSH Port Forwarding: Local, Remote, and Dynamic Tunnels

Use -L, -R, and -D to reach databases behind bastions, expose local apps, and run a SOCKS proxy with safe, repeatable SSH tunnels.

~10 min Read →
Tutorials

sshfs: Mounting Remote Filesystems over SSH

Mount a remote directory locally over SSH with sshfs. Installation, auto-reconnect, fstab automation, unmounting, and common fixes from a practical angle.

~10 min Read →
Troubleshooting

Fixing "certificate verify failed"

Fix "SSL certificate verify failed" in curl and Python. Triage CA bundle, incomplete chain, and clock skew with openssl s_client, then fix each cause.

~11 min Read →
Troubleshooting

Fixing "Stale file handle" on NFS

Recover an NFS Stale file handle with a remount, then pin fsid to stop it recurring.

~11 min Read →
Guides

Understanding stdin, stdout, and stderr

Why are there two kinds of output? Let's untangle stdin, stdout, and stderr — and when to use redirection and pipes — together with Lina.

~10 min Read →
Tutorials

sysctl: Tuning Kernel Parameters on Linux

Read, change, and persist Linux kernel parameters with sysctl. Covers runtime changes, /etc/sysctl.d drop-ins, precedence, and verification.

~9 min Read →
Troubleshooting

Debugging "Failed to start" systemd Services

Diagnose systemctl "Failed to start" fast. Work through status, journalctl, and exit codes to fix ExecStart, permissions, dependencies, and start-limit issues.

~12 min Read →
Tutorials

tcpdump Basics: Capturing and Reading Packets

Capture packets with tcpdump. From first capture to BPF filters, pcap files, and Wireshark - a practical playbook for diagnosing network issues.

~10 min Read →
Tutorials

test and [[ ]] - Conditionals in Shell Scripts

A practical guide to test, [ ], and [[ ]]. Master string, numeric, and file comparisons and avoid quoting bugs with copy-paste templates.

~9 min Read →
Tutorials

timeout Command Basics

Learn with Lina and Linny-senpai! Limit how long a command runs and automatically stop hung commands, with exit status 124 and forced kill via -k, explained for beginners.

~10 min Read →
Tutorials

traceroute and mtr: Tracing Network Paths and Finding the Slow Hop

Use traceroute to map the path and mtr to measure per-hop loss and latency. Learn what * means and how to read loss to find the slow or lossy segment.

~9 min Read →
Tutorials

trap - Signals and Cleanup

Use trap to catch signals and run reliable cleanup. Covers the EXIT pseudo-signal, cleanup functions, and combining trap with set -e for robust scripts.

~11 min Read →
Tutorials

ulimit: Understanding Resource Limits

Control how many resources a process can use with ulimit. Covers soft vs hard limits, the open files limit, persisting limits via limits.conf and systemd, and diagnosing Too many open files.

~10 min Read →
Tutorials

watch Command: Monitor Output at Intervals

Learn with Linny-senpai and Lina! Rerun a command at a set interval and watch its output change. Covers -n intervals, -d highlighting, and quoting pipes.

~10 min Read →
Tutorials

wc Command: Counting Lines, Words, and Bytes

Learn with Linny-senpai and Lina! Master wc basics (-l lines / -w words / -c bytes / -m characters), the `ls | wc -l` counting pattern, and why bytes and characters differ for multibyte text.

~9 min Read →
Guides

What Is a Shell?

What exactly is a shell? Let's untangle bash, sh, and zsh — and how they talk to the kernel — together with Lina.

~10 min Read →
Tutorials

who, w, and last

Who is logged into this server right now? When did they log in? Use who, w, and last to inspect logged-in users, what each one is doing, and past login history. Covers reboot history and failed logins too, explained step by step in a friendly dialogue.

~8 min Read →
Tutorials

gzip vs bzip2 vs xz vs zstd - Choosing a Compression Format

Compare gzip, bzip2, xz, and zstd on ratio and speed, then choose per use case. Covers tar integration, compression levels, and multithreading.

~10 min Read →
Tutorials

zip and unzip Basics

Learn with Lina and Linny-senpai! Cross-platform compression made simple. Zip it up, unzip it open, and fix garbled filenames from Windows archives along the way.

~10 min Read →
Tutorials

bash Parameter Expansion — Understanding ${var:-x} and Related Syntax

bash parameter expansion cheat sheet covering default values, substring extraction, pattern removal, replacement, and case conversion with practical examples.

~12 min Read →
Guides

bash vs zsh vs fish - Choosing the Right Shell for You

Compare bash, zsh, and fish shells — key differences in compatibility, auto-completion, and configuration cost. Choose the right shell for your workflow.

~12 min Read →
Tutorials

User and Group Management in Practice - Setting Up Multi-User Environments

A practical guide to managing users and groups with useradd, usermod, and groupadd. Covers multi-user setup and reading /etc/passwd on Linux.

~15 min Read →
Tutorials

awk One-Liners - 30 Practical Patterns for Real-World Use

30 practical awk one-liners organized by use case. Field extraction, aggregation, log analysis, and CSV processing — copy-paste ready patterns for real-world use.

~15 min Read →
Tutorials

bash History Tips - Making the Most of Your Command History

Learn to reuse bash commands with Ctrl+R search, !!, !$, and history numbers. Covers HISTSIZE and HISTCONTROL settings for efficient shell use.

~15 min Read →
Tutorials

chown and chgrp Basics - Changing File Ownership in Linux

Learn how to change file owner and group with chown and chgrp. Covers user:group syntax, -R recursive changes, and common web server deployment patterns.

~9 min Read →
Tutorials

column, pr, and fmt - Understanding Text Formatting Commands

Learn Linux text formatting commands column, pr, and fmt — align tabular data, paginate output for printing, and reformat paragraph text on the command line.

~10 min Read →
Tutorials

cut, paste, and tr Basics - Column Extraction and Character Conversion

Use cut to extract CSV/TSV columns, paste to merge files side by side, and tr to translate or delete characters. Combine them in pipelines for powerful text processing.

~10 min Read →
Tutorials

diff and patch Basics - Getting and Applying Diffs

Learn how to generate file diffs with diff -u and apply them with patch. Covers unified diff format, directory comparison, -p0 vs -p1 strip levels, dry runs, and reverting with patch -R.

~10 min Read →
Tutorials

Disk Management Basics - Inspecting Storage with fdisk and lsblk

Learn how to inspect Linux storage layout using fdisk -l and lsblk. Covers partition types, block device trees, device naming conventions, and when to use df vs du for disk space investigation.

~10 min Read →
Tutorials

/etc/hosts and /etc/resolv.conf - Understanding DNS Resolution Priority

How /etc/hosts and /etc/resolv.conf shape DNS resolution on Linux — priority rules in nsswitch.conf, systemd-resolved, and practical override patterns.

~10 min Read →
Tutorials

find -exec vs xargs: Choosing the Right Approach

Learn when to use find -exec (semicolon vs plus form) vs xargs. Covers the -print0 | xargs -0 safety pattern for filenames with spaces, parallel execution with -P, and practical one-liners for common file management tasks.

~15 min Read →
Tutorials

Heredoc Basics - Embedding Multiline Strings in Shell Scripts

Learn how to use heredoc (<<EOF) to embed multiline strings in shell scripts. Covers variable expansion control, stripping indentation with <<-, writing to files, and practical use cases with SSH and databases.

~12 min Read →
Tutorials

iptables and nftables Basics - Introduction to Packet Filtering

Learn the fundamentals of iptables and nftables on Linux. Set up SSH and HTTP rules, block ports, and persist your firewall configuration on Ubuntu.

~12 min Read →
Tutorials

journalctl in Practice - Filtering Logs from the systemd Journal

Master journalctl filtering. Filter logs by unit, time range, priority, and fields to quickly extract exactly what you need from the systemd journal.

~12 min Read →
Tutorials

Reading Logs with less, more, and tail

Learn with Lina and Linny-senpai! Tired of `cat` scrolling past? Master less for page navigation and search, tail for the newest entries, and tail -f for real-time log monitoring.

~15 min Read →
Tutorials

locate, which, and whereis - Three Ways to Find Commands in Linux

Learn the differences between locate, which, and whereis. Solve "where did it install?" and "which python is running?" with the right command for the job.

~15 min Read →
Tutorials

logrotate Basics - Keeping Logs Manageable with Automatic Rotation

Learn logrotate config structure and key directives. Covers rotate, compress, delaycompress, postrotate, and how to debug with dry-run mode on Linux.

~10 min Read →
Tutorials

LVM and Partition Management in Practice: Flexible Storage Operations

LVM and partition management guide for Linux. Learn to create PV, VG, and LV, extend volumes online, use snapshots, and manage storage flexibly.

~15 min Read →
Guides

Using man, info, and --help - How to Read Official Documentation

Learn how to use man, info, and --help to look up Linux documentation. Covers man page navigation, keyword search with man -k, and when to use each tool.

~10 min Read →
Tutorials

Mount and fstab Basics - How to Attach Filesystems in Linux

Learn how to use the mount command and /etc/fstab. Covers attaching devices to directories, using UUID for safe device identification, and writing persistent mounts that survive reboots.

~12 min Read →
Tutorials

Getting Started with nc (netcat) - The Versatile Tool for Port Testing and Debugging

Learn nc (netcat) for port testing, simple server setup, file transfer, and banner grabbing. Practical debugging patterns for Linux network diagnostics.

~12 min Read →
Tutorials

Network Troubleshooting in Practice - ping, traceroute, and dig

A 3-step approach to diagnosing network failures: ping for reachability, traceroute for routing, dig for DNS. Covers common patterns — gateway stops, DNS failures, and blocked ports — with real examples.

~12 min Read →
Tutorials

nice and renice Basics - Controlling Process Priority

Control CPU scheduling priority with nice and renice. Covers the nice value range (-20 to 19), setting priority at launch, changing it dynamically for running processes, and root vs user permission rules.

~12 min Read →
Tutorials

nohup/disown/screen - Keeping Processes Running After Logout

Three ways to keep processes running after SSH disconnect or terminal close. Learn nohup (before start), disown (after start), and screen (full session reattach), plus when to use each.

~12 min Read →
Troubleshooting

Fixing Server Time Skew - Synchronizing NTP with chrony and timedatectl

How to fix server time skew on Linux. Use timedatectl status to check NTP state, chronyc tracking to diagnose drift, and chronyc makestep to force immediate sync.

~12 min Read →
Tutorials

SELinux Introduction: Your First Step to Reading Denial Logs

Learn SELinux basics — check modes with getenforce, read AVC denial logs, and use ausearch and audit2why to identify what is being blocked and why.

~12 min Read →
Tutorials

Getting Started with stat - Reading File Metadata

Learn to read stat output on Linux. Covers atime/mtime/ctime timestamp differences, inode number usage, format options for scripting, and filesystem-level statistics with stat -f.

~12 min Read →
Tutorials

strace Basics - Tracing System Calls for Troubleshooting

Learn to trace system calls with strace on Linux. Filter by call type, attach to running processes with -p, interpret errno values like ENOENT and EACCES, and diagnose Permission denied and connection failures in minutes.

~12 min Read →
Tutorials

sudoers Configuration Basics - Delegating Privileges Safely

Learn how to configure /etc/sudoers safely using visudo. Covers syntax, NOPASSWD, per-command delegation, and sudoers.d best practices on Ubuntu.

~12 min Read →
Tutorials

Understanding SUID, SGID, and Sticky Bit - Special Permission Bits in Linux

Learn how SUID, SGID, and Sticky Bit work in Linux. Understand special permission bits with practical chmod examples and security guidance.

~12 min Read →
Tutorials

Swap Management - Avoiding Memory Exhaustion in Linux

Learn what Linux swap is, how to create a swapfile, tune swappiness for your workload, and diagnose OOM killer events before they take down production.

~12 min Read →
Tutorials

systemd Timer vs cron: Choosing the Right Scheduler

Compare systemd timer and cron for Linux job scheduling. Prefer systemd timer for logging, dependencies, and missed-run recovery; cron for simple one-liners.

~12 min Read →
Tutorials

/tmp Cleanup Best Practices - tmpfiles.d and systemd-tmpfiles

Manage /tmp cleanup with systemd-tmpfiles and tmpfiles.d. Write declarative rules for automatic deletion, permissions, and boot-time directory creation.

~10 min Read →
Tutorials

Understanding umask - Controlling Default File Permissions

Learn how umask determines default permissions for new files and directories. Covers the AND NOT calculation, common values like 022/077/002, and how to make changes persistent via .bashrc or /etc/profile.

~9 min Read →
Tutorials

vmstat, iostat, and sar - Linux Performance Analysis Tools

Learn to identify CPU, memory, and I/O bottlenecks using three complementary tools. Use vmstat for a system-wide overview, iostat to pinpoint slow devices by await and util%, and sar to review historical trends after an incident.

~15 min Read →
Troubleshooting

Understanding and Handling Zombie Processes in Linux

Zombie processes are terminated processes that linger in the process table. Learn what causes them, how to find them, and how to clean them up safely.

~8 min Read →
Tutorials

Setting Up Aliases - How to Shorten Linux Commands

Learn with Lina and Linny-senpai! Create short nicknames for long commands using alias, persist them in .bashrc, and remove them with unalias.

~12 min Read →
Troubleshooting

Fixing "Argument list too long"

Why rm * fails and how to fix it with find -delete and find + xargs.

~8 min Read →
Tutorials

dnf Package Management - Modern Tool for Fedora and RHEL-Based Systems

Learn dnf, the standard package manager for Fedora and RHEL-based systems. Covers install, update, remove, search, repo management, module streams, and rollback with practical examples.

~12 min Read →
Tutorials

Firewall Configuration Basics: Getting Started with ufw and firewalld

Learn how to configure Linux firewalls with ufw (Ubuntu) and firewalld (RHEL/CentOS). Covers port rules, default policies, zones, and practical patterns for web and database servers.

~12 min Read →
Tutorials

Linux Group Management Basics: groupadd, groupmod, and Access Control

Learn how to create groups with groupadd, modify them with groupmod, and manage members with usermod -aG and gpasswd. Covers /etc/group format, shared directory setup, and sudo privilege patterns.

~12 min Read →
Tutorials

How to Read Log Files - Introduction to System Log Analysis

Learn to read Linux log files in /var/log/. Covers syslog, auth.log, kern.log structure plus practical commands — tail -f, grep, less — for effective log analysis and troubleshooting.

~12 min Read →
Troubleshooting

Handling OOM killer events

When a process is killed without explanation. Confirm with dmesg/journalctl, adjust oom_score_adj, and add swap.

~12 min Read →
Tutorials

Package Management Troubleshooting: Resolving Dependency Errors

Systematically fix apt and yum/dnf dependency errors. Covers dpkg repair, lock file conflicts, GPG key issues, and a step-by-step diagnosis flow for Ubuntu, CentOS, and Fedora.

~10 min Read →
Tutorials

~/.ssh/config Tips - Organizing Your SSH Connection Settings

Replace long ssh commands with short aliases using ~/.ssh/config. Covers ProxyJump for bastion host connections, per-host IdentityFile selection, KeepAlive settings, and Host * for global defaults.

~8 min Read →
Tutorials

SSH Key Authentication Setup - Passwordless and Secure Login

Generate an ED25519 key pair with ssh-keygen, deploy the public key using ssh-copy-id, and connect without a password. Covers permissions, ~/.ssh/config for multi-server management, and ssh-agent for passphrase caching.

~12 min Read →
Tutorials

Understanding sudo vs su - Safe Privilege Escalation in Linux

Learn the difference between sudo and su, why sudo is the recommended approach, and how to configure sudoers safely with visudo. Covers common mistakes and a practical quick-reference for daily use.

~12 min Read →
Tutorials

Symbolic Links and Hard Links - Understanding File References in Linux

Learn the difference between symbolic and hard links. Covers the ln command, inodes, reference counting, cross-filesystem constraints, and practical patterns like dotfiles and version-managed directories.

~10 min Read →
Tutorials

How to Write systemd Unit Files - Registering Custom Services

Learn to daemonize scripts and applications using systemd. Covers the [Unit], [Service], and [Install] sections, ExecStart, Restart policies, EnvironmentFile, and the full systemctl enable/start workflow.

~10 min Read →
Troubleshooting

Fixing "Too many open files" - Resolving File Descriptor Exhaustion

"Too many open files" means you hit the file descriptor limit. Use ulimit, lsof, limits.conf and sysctl to diagnose and fix it permanently.

~10 min Read →
Tutorials

User Management Basics: useradd, usermod, and userdel

Learn how to create users with useradd, modify group memberships and attributes with usermod, and delete accounts with userdel. Covers sudo privileges and group management patterns.

~12 min Read →
Guides

WSL2 Introduction - How to Use Linux on Windows

Learn how to set up a Linux environment on Windows using WSL2. Covers installation, choosing a distribution, basic Linux operations, and sharing files between Windows and Linux.

~15 min Read →
Tutorials

curl and wget Basics - HTTP Communication from the Command Line

Learn with Linny-senpai and Lina! Understand the curl vs wget split, the -O/-o trap, redirect follow with -L, header inspection with -I, JSON POST, and Bearer token auth — all from a beginner's perspective.

~12 min Read →
Tutorials

Getting Started with Job Control - jobs, fg, bg, and Ctrl+Z

Learn shell job control through Linny-senpai and Lina's dialogue: pause with Ctrl+Z to free your terminal, swap with fg/bg, list with jobs, and run with & — including the kill %1 pitfall — for absolute beginners.

~12 min Read →
Tutorials

Getting Started with tmux - Terminal Multiplexing Basics

Learn tmux fundamentals through a friendly dialogue between Lina and Linny-senpai. Keep your work alive after SSH disconnects, master the session/window/pane hierarchy, the prefix key (Ctrl+b), and detach/attach with beginner-friendly examples.

~15 min Read →
Tutorials

top and htop Mastery - Identifying System Bottlenecks

Read top's summary lines in 30 seconds to decide whether the bottleneck is CPU, memory, or I/O. Master %us/%sy/%wa thresholds, htop's tree view, filters, and F-keys for production-grade triage.

~14 min Read →
Tutorials

Understanding du vs df - Measuring Disk Usage Correctly

A beginner-friendly walkthrough of how du and df differ. Learn why "df is full but du doesn't add up" — covering deleted-open files, mount boundaries, and root-reserved blocks with a practical investigation playbook.

~10 min Read →
Troubleshooting

Handling inode exhaustion

"No space left on device" while df -h shows free? Diagnose with df -i and recover.

~10 min Read →
Tutorials

jq Basics - How to Process JSON in the Shell

A practical guide for shaping JSON from curl and APIs with jq. Master filters, select, map, raw vs compact output, and safe patterns for piping JSON in production scripts.

~12 min Read →
Tutorials

xargs in Practice - Converting Standard Input to Command Arguments

Master xargs to "paste" pipe contents into the argument slot of the next command. Learn safe patterns with find -print0 | xargs -0, the -I {} placeholder, and -P parallel execution while avoiding common pitfalls.

~10 min Read →
Tutorials

sed Basics - Text Substitution with the Stream Editor

Master the five core sed patterns (substitute, delete, print, address, multi-expression), the safe pattern for in-place editing with `-i.bak`, and when to choose BRE vs ERE.

~12 min Read →
Tutorials

Getting Started with sort and uniq

Learn with Linny-senpai and Lina! Master sort and uniq for sorting, deduplicating, and counting data, including the classic `sort | uniq -c | sort -rn` frequency ranking pattern.

~10 min Read →
Tutorials

Linux Error Messages Dictionary

A reverse-lookup dictionary of common Linux error messages. Quickly find the cause and fix for command not found, Permission denied, No space left on device, OOM, and more.

~14 min Read →
Tutorials

netstat and ss Basics: Monitoring Ports and Connections

Learn how to check listening ports, established connections, and TCP states with netstat and ss, including a netstat-to-ss migration cheat sheet for everyday use.

~10 min Read →
Tutorials

Network Commands Basics - Checking Connectivity with ip and ifconfig

Learn the difference between ip and ifconfig and isolate "no network" issues layer by layer: link → IP → route → reachability → DNS, plus a net-tools migration cheat sheet.

~11 min Read →
Guides

Linux Directory Structure Overview

A beginner-friendly guide to the Linux directory structure. Learn the roles of /, /etc, /var, /home, /bin and how to never get lost in the filesystem tree.

~12 min Read →
Tutorials

Git and Linux Basics - Version Control

Learn Git basics on Linux: install, configure, init, add, commit, and push. Covers Permission denied, SSH key auth, line endings, and exec bit pitfalls specific to Linux.

~14 min Read →
Tutorials

Package Management Basics: apt and yum

Practical guide to apt (Debian/Ubuntu) and yum/dnf (RHEL/CentOS) package management. Side-by-side command map, install/update workflows, and troubleshooting steps.

~14 min Read →
Tutorials

Fixing "command not found" Errors

Diagnose and fix "command not found" on Linux. Covers PATH, hash cache, sudo secure_path, pip --user, and cron with practical templates.

~12 min Read →
Tutorials

Environment Variables Basics - Configuration and Practical Usage

Learn Linux environment variables for beginners. From echo and env to export, PATH, and persistence with .bashrc, taught through Lina and Linny-senpai's dialogue.

~15 min Read →
Tutorials

Vim Basics - Essential Commands and Practical Techniques

A practical Vim guide covering modes, motions, edits, search/replace, and save/quit. Stop getting stuck and learn the minimal .vimrc setup that works on any server.

~14 min Read →
Tutorials

Pipes and Redirection Basics

A beginner-friendly dialogue tutorial. Learn how `|`, `>`, `>>`, and `2>&1` work by following the flow of stdin, stdout, and stderr — and combine commands with confidence.

~12 min Read →
Tutorials

How to Use pwd, cd, and ls

Learn with Linny-senpai and Lina! Master pwd (location), ls (list), and cd (move) - the 3 essential commands for beginners.

~10 min Read →
Tutorials

How to Use mkdir, touch, and echo

Learn with Linny-senpai and Lina! Master mkdir (create directories), touch (create files), and echo/cat (view contents).

~12 min Read →
Troubleshooting

Diagnosing 100% CPU usage

Identifying culprit processes with top / ps / load average.

~10 min Read →
Tutorials

Why cron Is Not Running - Troubleshooting crontab on Linux

Fix cron jobs that aren't running on Linux. Learn how to check crontab, view logs, and avoid common PATH and permission pitfalls.

~10 min Read →
Troubleshooting

Diagnosing slow disk I/O

iostat / vmstat to pinpoint disk bottlenecks.

~10 min Read →
Troubleshooting

DNS resolution troubleshooting

dig / host / nslookup usage and /etc/resolv.conf inspection.

~12 min Read →
Tutorials

journalctl Basics: Log Investigation

Learn how to check logs in Ubuntu (systemd) environments. Master filtering by time, service, and priority level for effective troubleshooting.

~10 min Read →
Troubleshooting

Investigating memory pressure

free / top / ps usage and OOM Killer mitigation.

~12 min Read →
Troubleshooting

Reading Nginx/Apache logs

access.log / error.log paths and how to read incident causes.

~12 min Read →
Troubleshooting

Port connectivity troubleshooting

nc / telnet / curl for connection check, ss / netstat for port state.

~12 min Read →
Tutorials

Ubuntu scp/rsync Basics: File Transfer Between Servers

Learn how to transfer files between servers using scp and rsync on Ubuntu. Includes copy-paste templates for common scenarios.

~10 min Read →
Tutorials

How to Use systemctl - Linux Service Management Guide

Manage Linux services with systemctl. Learn status, start, restart, and enable commands for Nginx, Apache, SSH, and other services.

~8 min Read →
Troubleshooting

ufw firewall and SSH connection

Recovering when ufw enable cuts off SSH.

~12 min Read →
Troubleshooting

Identifying Docker disk usage

docker system df to break down image / container / volume usage.

~10 min Read →
Troubleshooting

Safely deleting files with find

print0 / xargs -0 for filename-safe deletion.

~10 min Read →
Troubleshooting

Handling "No space left on device"

df / du to find bloated files and reclaim space.

~10 min Read →
Troubleshooting

How to fix Permission denied

chmod / chown / sudo usage and avoiding common pitfalls.

~10 min Read →
Troubleshooting

SSH connection troubleshooting checklist

Permission denied (publickey), Host key verification failed, Connection timeout.

~12 min Read →
Tutorials

tar Basics: Compression, Extraction & Avoiding Mistakes

Learn tar command for compression, extraction, and listing contents. Understand .tar.gz/.tgz/.tar differences and how to prevent extraction accidents.

~8 min Read →
Tutorials

How to Use find, grep, and awk

Practical learning of advanced file search and processing techniques using find, grep, awk. Aimed at professional-level mastery.

~10 min Read →
Tutorials

grep and awk Advanced Techniques

Learn advanced techniques including complex search conditions, regular expressions, and awk programming.

~25 min Read →
Tutorials

How to Use find, grep, and awk - Basics

Systematic learning of basic file search and text processing commands.

~20 min Read →
Tutorials

How to Combine find, grep, and awk

Detailed explanation of practical use cases and best practices used in real-world work.

~25 min Read →
Tutorials

find, grep, and awk Exercises

Detailed learning of professional-level advanced techniques and optimization methods.

~20 min Read →
Guides

How to Use the Terminal - Linux Command Line Basics

Beginner-friendly explanation of what the terminal is, basic operations, and essential concepts. Perfect content as your first step in command line operations.

~10 min Read →
Guides

What is Linux?

Easy-to-understand explanation of Linux's basic concepts, history, and features for beginners. Learn why Linux is important and where it's used, with specific examples.

~10 min Read →
Guides

Why Learn Linux?

Detailed explanation of the benefits of Linux learning, career impact, and importance in modern IT industry. Content that helps boost learning motivation.

~8 min Read →
Tutorials

How to Use head, tail, and Pipes

Learn advanced file operation techniques including links, compression/decompression, and backup technologies.

~22 min Read →
Tutorials

How to Use cp, mv, and rm

Learn basic file operations: creation, editing, copying, moving, and deletion. Includes introduction to text editor basics.

~10 min Read →
Guides

Getting Started

Explains how to use Penguin Gym Linux and effective learning methods. A complete guide that beginners can start with confidence. Detailed introduction of learning progression, common pitfalls, and tips for continuity.

~10 min Read →
Tutorials

How to Choose Between chmod, chown, and sudo

Turn chmod, chown, and sudo into a decision framework, learn how to avoid chmod 777 and chown -R accidents, and understand what umask actually does.

~12 min Read →
Tutorials

How to Use chmod and chown

Detailed explanation of file and directory permissions, chmod, chown, umask and other permission-related commands.

~12 min Read →
Tutorials

Fixing Permission Denied at the Root Cause

Detailed explanation of permission configuration best practices and real-world examples used in system administration.

~12 min Read →
Tutorials

How to Use ps, top, and kill

Learn process concepts and process management commands including ps, kill, jobs, and nohup.

~10 min Read →
Tutorials

Linux Process Management in Practice

Learn practical techniques including system monitoring, performance tuning, and troubleshooting.

~12 min Read →
Tutorials

How to Write Shell Scripts

Systematic learning of shell script writing basics, variables, control structures, and functions.

~15 min Read →
Tutorials

Shell Scripting in Practice

Learn practical shell script creation methods, debugging techniques, and performance optimization.

~20 min Read →
Tutorials

Understanding .bashrc and .profile Load Order

Learn with Linny-senpai and Lina! Why aliases disappear over SSH, the difference between login and interactive shells, and how to reload settings instantly with source — all explained for beginners.

~15 min Read →
Tutorials

Getting Started with nano - The Beginner-Friendly Editor Before Vim

Learn nano through dialogue with Lina and Linny-senpai! Open, edit, save (Ctrl+O), and exit (Ctrl+X) without memorizing anything — shortcuts are always shown at the bottom of the screen.

~10 min Read →
Tutorials

Getting Started with tee - Splitting Command Output

Learn with Lina and Linny-senpai! Save pipeline output to a file while keeping it flowing to the next command. Covers -a append, multiple file targets, the sudo tee pattern for root-owned files, and using tee as a pipeline debugger.

~12 min Read →