Skip to main content

Linux

Dig into the Linux ecosystem, from command-line basics to system administration. Learn to manage servers, troubleshoot issues, and optimize performance.

29posts

Guides

Posts

Linux
|10 min read

Disk Full but du Disagrees: Finding Deleted Files That Still Use Space

When df reports a full filesystem but du cannot find the bytes, an unlinked log held open by a process is often the missing space. Find the holder, release space safely, and prevent the next midnight disk-full incident.

Linux
|24 min read

cgroup v2 memory.high Throttles, memory.max Kills: Measured on a Host Without Swap

We ran one allocating workload under memory.max, memory.high and both on a Linux 6.8 host with no swap. memory.max killed it in under half a second. memory.high did not kill it: new allocations waited, once per 64-page batch at best and once per page next to a busy neighbour on the same CPU. Here are the numbers, the kernel formula behind them, and what systemd, Docker and Kubernetes write.

Linux
|17 min read

Node.js October 2026 Security Release: Finding Every Node You Actually Run

Node.js 22.23.4, 24.22.1 and 26.12.1 fix a Brotli decoder bug that the project says permits remote code execution, plus TLS and DNS bugs. The version bump is one line. pm2 entries, the pm2 daemon, systemd units, cron jobs and containers each keep their own Node, so here is how to find every one and prove it moved.

Linux
|19 min read

PHP2Shell: How to Check That Every PHP You Run Is Actually Patched

PHP 8.5.12, 8.4.27, 8.3.36 and 8.2.35 fix two critical remote code execution bugs. Installing the update is the easy part. A patched Ubuntu PHP still says 8.3.6, running workers keep the old code, and 4.4 hours after the release 8 of 39 popular images still shipped a vulnerable PHP. Here is how to find the PHP you run and prove it is fixed.

Linux
|13 min read

Ubuntu 26.10 Moves cp, mv and rm to Rust. We Ran 162 Shell Commands Through GNU and uutils to See What Changes

Ubuntu 26.10 ships on October 15 with Rust coreutils for every tool. On the same system, 150 of our 162 shell test cases gave byte-identical results with GNU and uutils. The other 12 come down to four changes that can break a script (GNU detection, cut -c, timeout -s KILL, base64 -d) and five error messages.

Linux
|13 min read

OpenSSH 10.6 Refuses DOMAIN\user and Weakens ssh -C. We Measured Both

OpenSSH 10.6 came out on October 6. It refuses usernames with a backslash or a dollar sign before it connects, which breaks ssh, scp, rsync, git and Ansible logins written as CORP\alice. It also cuts ssh -C to Huffman coding only, so a 32 MiB log now compresses to 21 MiB instead of 3.7 MiB. We built 10.5 and 10.6 side by side and tested 13 ways of passing a username, 4 kinds of data and 8 SSH clients.

Linux
|11 min read

CVE-2026-80521: The Ubuntu Container Escape Is Not Just an Ubuntu Problem

A public exploit breaks out of default Docker and Kubernetes containers through a bug in the AF_UNIX garbage collector, and Ubuntu 24.04 and 26.04 still have no kernel fix. The same code sits in the 6.1 and 6.6 LTS kernels, where upstream has no fix either. Here is how to check any node in one command, and what to do while you wait for a patch.

Linux
|10 min read

Omarchy 4 Makes the Linux Desktop Feel Like a Product, Finally

DHH's Arch-based distro shipped its biggest release in August: a full desktop shell rewrite, sub-minute installs, dual boot, and coding agents treated as system citizens. With an $8M foundation behind it and hardware vendors paying attention, Omarchy is the most serious run at the developer workstation in years.

Linux
|7 min read

What do PTY and TTY Mean?

TTY and PTY are interfaces for text input and output in Unix systems. Learn the difference between physical terminals (TTY), pseudo-terminals (PTY), and how they enable SSH sessions, terminal emulators, and command-line tools.

Linux
|6 min read

Why Does the C Preprocessor Interpret "linux" as "1"?

Discover why the word 'linux' is predefined as the constant 1 in the C preprocessor on Linux systems, and how this historical quirk can cause unexpected compilation errors.

Linux
|8 min read

How to Measure the Actual Memory Usage of an Application or Process

Learn how to accurately measure real memory usage of processes in Linux, understand the difference between virtual, resident, and shared memory, and use the right tools for memory analysis.

Linux
|11 min read

How to Get the Current Date, Time and Epoch Seconds in Linux and Bash

Print and format the current date and time with date, get Unix epoch seconds and milliseconds, convert between dates and timestamps, measure how long a command takes, and turn your favorite format into a custom command.

Linux
|14 min read

Increasing the Maximum Number of TCP/IP Connections in Linux and Monitoring Network Usage

Find the limit you actually hit, then raise it: file descriptors, the ephemeral port range, listen backlogs, TIME_WAIT and connection tracking. Then watch bandwidth per process, per connection and per interface with nethogs, iftop, nload and ss.

Linux
|7 min read

How to Tar a Directory While Excluding Files and Folders

Create tar archives without including unnecessary files like node_modules, .git, or build artifacts. Learn to use --exclude patterns effectively for cleaner backups.

Linux
|8 min read

How to Force cp to Overwrite Files Without Confirmation

Learn how to use cp command to overwrite existing files without prompts, understand the -f flag, and handle alias conflicts that cause unexpected confirmation requests.

Linux
|11 min read

How to Create and Remove Symbolic Links and Get the Full Path of a File in Linux

Create symlinks with ln -s and get relative targets right, replace a link to a directory safely, remove a symlink without deleting the target, find broken links, and get the absolute path of any file with realpath.

Linux
|7 min read

How to Find Files Containing Specific Text on Linux

Need to locate files with specific content? Learn how to use grep, find, and other Linux tools to search through files and directories efficiently.

Linux
|6 min read

How to Check Which Version of PostgreSQL You Are Running

Learn multiple ways to check your PostgreSQL version, including psql commands, SQL queries, and system commands. Find version numbers from the server, client, and package manager.

Linux
|13 min read

How to Recursively Grep All Directories and Subdirectories

Learn how to use grep with recursive options to search through entire directory trees efficiently, exclude directories, list only matching file names, and filter live log streams without buffering delays.

Linux
|15 min read

How to Find Files Using Wildcards in Linux, Exclude Directories and Count Files

Use find with wildcards to search directory trees by name, skip directories such as node_modules and .git with -prune, count files and lines correctly, and change permissions for folders and files separately.

Linux
|8 min read

How to Profile C++ Code Performance on Linux

Learn how to use profiling tools like gprof, Valgrind, and perf to analyze C++ application performance and identify bottlenecks on Linux systems.

Linux
|6 min read

How to Use sudo to Redirect Output to a Privileged Location

When you try to redirect output to a file you don't have permission to write, sudo doesn't help the way you'd expect. Learn the right techniques to write to protected files.

Linux
|7 min read

How to Fix "Argument List Too Long" Error for rm, cp, and mv Commands

Solve the 'argument list too long' error when working with thousands of files. Learn to use find, xargs, and loops as alternatives to wildcards for bulk file operations.

Linux
|13 min read

How to Permanently Set $PATH on Linux and Unix

Learn how to permanently modify your PATH environment variable on Linux and Unix systems so your custom directories persist across shell sessions and reboots, then reload .bashrc, export or delete variables, and write aliases that take parameters.

Linux
|9 min read

How to Copy Command Output Directly to Your Clipboard in Linux

Pipe command output to the clipboard with wl-copy on Wayland, xclip or xsel on X11, pbcopy on macOS and clip.exe on WSL. Paste it back, write clipboard functions for scripts, and copy to your local clipboard over SSH.

Linux
|11 min read

How to Parse and Check Command Line Arguments in Bash

Read positional arguments with $1 and "$@", check that the user passed the arguments a script needs, parse short options with getopts and long options such as --env=prod with a while loop.

Linux
|9 min read

How to Change the Output Color of Echo and Fix Newlines in Bash

Print colored text in a Linux terminal with ANSI escape codes or tput, turn colors off when output is not a terminal, and fix echo when it prints a literal \n instead of a new line.

Linux
|13 min read

How to Check if a File, Directory, Variable or Command Exists in Bash

The Bash tests you use in almost every script: check if a directory or file exists, if a variable is set or empty, if a string contains a substring, how to compare text without case, and if a program is installed.