Blog
Thoughts on engineering, design, and building great products.
Disks and Capacity: df, du, lsblk, mount
\"The server is out of disk\" is a classic incident. This article teaches the troubleshooting workflow: df to see which filesystem is full, du to trace which directory is eating space, find for large files, plus lsblk and mount to understand storage devices.
Compress and Decompress: tar, gzip, zip
Bundle many files into one and compress them for backups or moving data. Understand the difference between archiving (tar) and compressing (gzip), memorize the confusing tar flags, and know when to use tar.gz vs zip.
Processes and Signals
A deep dive into what's running on the system: processes and the parent-child relationship, viewing with ps/top, running in the background with &, and controlling with signals — why kill -9 differs from a plain kill, and when to use which.
Permissions: User, Group, and chmod
A deep dive into Linux's permission mechanism: reading the rwx string, the three groups user/group/other, octal notation, changing permissions with chmod (octal and symbolic), changing ownership with chown, and the umask that decides default permissions.
Pipes, Redirects, and Data Streams
A deep dive into the mechanism behind the command line's power: the three streams stdin/stdout/stderr (file descriptors 0/1/2), how to redirect them into files, merge errors, discard with /dev/null, and chain commands with pipes.
Reading and Processing Text: grep, sed, awk and Friends
The toolset behind the power of the Linux command line: viewing files (cat, less, head, tail), filtering (grep), cutting columns (cut), sorting (sort, uniq), counting (wc), and transforming (sed, awk). Each tool does one thing well.
Editors: nano and vim
Edit files right in the terminal — a must-have skill when working on a server with no GUI. nano for beginners, and survival vim: understand the modes, open/edit/save/quit, search, undo.