>
~$linuxier
Read the blog
~$ home /Blog

Field notes from the terminal

Not another cheat sheet. These are the longer reads — the ideas, habits and hard-won reflexes behind the commands. Written by people who spend their days in a shell, for anyone who wants to think about Linux, not just type it.

~$ sudo ss -tlnp sport = :8080
State Recv-Q Local Address:Port
LISTEN 0 0.0.0.0:8080 users:(("node",pid=14820))
~$ ss -tn state established | wc -l
↳ faster than netstat, built-in
Networking

How to Use ss to Inspect Network Connections in Linux

List open sockets, find which process owns a port, filter by state, and monitor live connections. The modern iproute2 replacement for netstat.

read →
~$ sudo systemctl status myapp.service
● myapp.service - My App Daemon
Active: active (running) since Sun 2026年08月16日
~$ journalctl -u myapp -n 5
↳ run as non-root, restart on failure
DevOps

How to Create a systemd Service File on Linux

Write a complete .service unit file from scratch, enable it on boot, and configure automatic restart on failure. Run any script or app as a Linux daemon.

read →
~$ journalctl -u nginx -p err --since today
Aug 15 09:42:11 srv nginx[9812]: bind() failed
Aug 15 09:42:11 srv nginx[9812]: (98: Address in use)
~$ journalctl --disk-usage
↳ filter by unit, time, priority
DevOps

How to Use journalctl to View Systemd Logs

Filter systemd logs by unit, time window and priority level — and follow services live. Includes one-liners for on-call debugging and journal cleanup.

read →
~$ df -h /
Filesystem Size Used Avail Use%
/dev/sda1 50G 33G 15G 67%
~$ du -sh /var/log
↳ 4.2G /var/log
Shell

How to Check Disk Usage in Linux

Check how full your filesystems are with df, then drill down to the exact directory eating space with du. Includes the sort pipeline, inode checks, and a one-liner cron alert.

read →
$ cat backup.sh
#!/usr/bin/env bash
set -euo pipefail
SRC="${1:?Usage: 0ドル <src> <dst>}"
↳ runs clean — set -e caught the typo
Shell

How to Write a Bash Script

From shebang to a working backup tool — variables, arguments, conditionals, loops, functions, and the set -euo pipefail safety trio that stops silent failures.

read →
$ lsmod | grep ksmbd
ksmbd 458752 0
$ # CVE-2026-31705 — OOB write smb2_get_ea()
$ apt list --upgradable | grep linux-image
↳ CVSS 9.8 — network, no auth required
Security

Linux ksmbd Heap Overflow: CVE-2026-31705 Needs No Authentication

The in-kernel SMB server's EA handler overwrites kernel heap in compound SMB2 requests — no credentials, CVSS 9.8. Check if ksmbd is loaded and patch now.

read →
~$ systemctl list-timers --all
NEXT LEFT UNIT ACTIVATES
Thu 2026年08月13日 03:00:00 6h left backup.timer backup.service
↳ enabled · Persistent=true · logged to journald
DevOps

How to Use systemd Timers to Schedule Jobs

Replace cron with a .timer + .service pair — OnCalendar, persistence, and journald debugging.

read →
$ tar czf backup.tar.gz ./project/
$ tar tf backup.tar.gz | head -3
project/src/main.c
$ tar xzf backup.tar.gz -C /opt/
↳ bundle, inspect, extract — three flags
Shell

How to Use the tar Command in Linux

Create, list, and extract archives with gzip, bzip2, and xz compression. Plus piped SSH transfers, incremental backups, and deployment artifact packaging.

read →
$ find . -name "*.log" -mtime +7 | xargs rm
$ cat urls.txt | xargs -P 4 -I{} curl -sO {}
$ find . -name "*.conf" -print0 \
| xargs -0 grep -l "localhost"
↳ one pipe to run any command at scale
Shell

How to Use xargs in Linux

Turn any list of filenames, URLs or strings into command arguments — xargs, -I{}, -P for parallel runs, and -0 to handle spaces safely. With copy-paste recipes.

read →
$ curl -sS https://api.example.com/users | jq '.[0].name'
"alice"
$ curl -X POST -H "Content-Type: application/json" \
-d '{"name":"bob"}' https://api.example.com/users
↳ HTTP from the shell, fully scriptable
Shell

How to Use curl in Linux: Practical Guide

Download files, probe REST APIs, send JSON payloads, set headers and tokens, follow redirects, and debug HTTP connections — all from the terminal.

read →
$ export API_URL=https://api.local
$ bash -c 'echo "$API_URL"'
https://api.local
$ printenv API_URL
↳ export = children inherit it
Shell

How to Set Environment Variables in Linux

Read, set and persist environment variables — from export and ~/.profile to systemd, cron, Docker and .env files, plus the security caveats.

read →
$ apt show linux-image-generic-hwe-24.04 | grep Version
Version: 7.0.0.11.12
$ uname -r
7.0.0-11-generic
↳ kernel 7.0 on Mint 22.3 LTS base
Ubuntu

Linux Mint 22.3 HWE ISOs Now Ship Kernel 7.0 and a Redesigned Kernel Manager

New Hardware Enablement images for Mint 22.3 "Zena" land kernel 7.0 with updated GPU and firmware support, plus a series-tracking Kernel Manager with auto-cleanup and protected-kernel marking.

read →
$ uname -r
7.1.7
$ apt list --upgradable | grep linux-image
linux-image-generic 7.1.8 [upgradable]
↳ 200+ commits: net UAF + GPU fixes
Security

Linux 7.1.8 Stable: 200+ Commits Fix Networking UAF and GPU Bugs

Greg Kroah-Hartman's August 9 release patches use-after-free bugs in SCTP, TIPC, and mac80211, closes USB serial heap overflows, and fixes AMD/Intel/VMware GPU driver issues.

read →
$ tmux new -s deploy
# Ctrl-b d ← detach, session lives on
$ tmux attach -t deploy
build still running: 47% done
↳ close the laptop, come back later
Shell

How to Use tmux: Persistent Terminal Sessions

Sessions survive disconnection, windows are tabs, panes are splits — master the three-concept model that makes long-running remote work bulletproof.

read →
$ docker compose up -d
✓ web Started
✓ db Started
$ docker compose ps
↳ two containers, one file, one command
DevOps

How to Write a Docker Compose File

Define services, networks, volumes and environment variables in one docker-compose.yml, then bring a whole multi-container app up with a single command.

read →
$ sed 's/http:/https:/g' urls.txt
https://example.com
$ sed -i.bak '/^#/d' config.conf
$ diff config.conf.bak config.conf
↳ global replace, in-place, with backup
Shell

How to Use sed in Linux

Substitute, delete, insert and transform text from the command line — sed works on any file size, composes into pipelines, and runs on every Linux system with no dependencies.

read →
$ awk -F: '{print 1,ドル 3ドル}' /etc/passwd
root 0
daemon 1
$ awk '/error/ { count++ } END { print count }' app.log
↳ field split, filter, count — one pass
Shell

How to Use awk in Linux

Split lines into fields, filter by pattern, compute totals and group with arrays — awk turns a wall of text into a structured answer without leaving the terminal.

read →
$ sudo pacman -Syu
shelly-2.0-zig chwd-3.1-rust
$ cachyos-install --list-profiles
desktop / server (experimental)
↳ Shelly in Zig, chwd in Rust, Server Edition ready
DevOps

CachyOS August 2026: Server Edition, Zig and Rust Rewrites

The August 2026 ISO ships the first experimental Server Edition installer profiles, rewrites the Shelly package manager from C# to Zig, and migrates the chwd kernel-manager backend from C++ to Rust.

read →
$ ssh-copy-id deploy@server
$ ssh deploy@server
↳ Welcome — key accepted, no password
Security

How to Set Up SSH Key Authentication on Linux

Generate an ed25519 keypair, copy it to your server, and turn off password logins — the standard, safer way to reach a Linux box.

read →
$ uname -r
7.2.0-rc7
$ git log --oneline -- fs/btrfs/ | head -2
btrfs: restore COW fixup worker
↳ silent data loss + 8yr UAF — fixed
Security

Linux 7.2-rc7: Btrfs Data Loss Fixed and 8-Year UAF Patched

RC7 restores the Btrfs COW fixup worker removed during the merge window, ending silent data loss with no user-visible warning, and closes an eight-year-old use-after-free race in the kernel page-table walker. Stable 7.2 targets mid-August.

read →
$ dxdiag /t out.txt && grep DirectX out.txt
DirectX Version: DirectX 11
$ cat /proc/driver/vhost_triton/status
driver: Triton v0.2.1 | mode: DDI
↳ GPU accel in QEMU — no passthrough needed
DevOps

Triton Brings DirectX 11 to QEMU Windows VMs

Developer osy releases Triton v0.2.1 — the first open-source DirectX 11 GPU driver for QEMU/KVM. DDI-level translation routes D3D11 through Neptune VirtIO to DXVK on the Linux host, skipping DLL replacement entirely and passing anti-cheat checks.

read →
$ wine --version
wine-11.15
$ wineboot -u 2>&1 | grep display
Using Wayland display driver
↳ Bug #4811 (2006) — finally closed
Development

Wine 11.15: Wayland Fixes and a 20-Year-Old Bug Gone

The 8 August development release patches Wayland's double-sRGB colour wash and 4:3 fullscreen offset, closes a 2006 MSXML3 crash, adds BCrypt KDF algorithms, and brings ARM64EC MinGW support in 41 bug fixes.

read →
$ docker build -t myapp:1.0 .
=> [1/5] FROM python:3.12-slim
=> [4/5] RUN pip install -r requirements.txt
↳ writing image sha256:9f2a… (61MB)
DevOps

How to Write Your First Dockerfile

A hands-on walkthrough: pick a base image, layer in COPY, RUN and CMD, build and run — then make it production-shaped with .dockerignore, a non-root user and a multi-stage build.

read →
$ glxinfo -B | grep -i mesa
OpenGL renderer: Mesa 26.2.0 (RADV)
$ clinfo | grep "OpenCL C"
OpenCL C Version 3.1
↳ NVK mesh shaders, KRAID for Mali
Development

Mesa 26.2: NVK Mesh Shaders, OpenCL 3.1 and Vulkan 1.4

The 5 August quarterly drop lands VK_EXT_mesh_shader in NVK, Rusticl crosses OpenCL 3.1, Vulkan 1.4 arrives on Apple Silicon via KosmicKrisp, and the new KRAID compiler replaces the old shader path on Arm Mali.

read →
$ uname -r
7.1.5-generic
$ apt upgrade && reboot
$ uname -r
↳ 7.1.6 — 646 of 740 commits tagged Fixes:
DevOps

Linux 7.1.6: 741 Commits and Why 87% Are Fixes

Greg Kroah-Hartman signed off Linux 7.1.6 on August 3 with 741 commits from 403 developers — 646 carry a Fixes: tag. Networking (169 patches), AMD GPU, KVM/SVM, CIFS, OpenVPN and 150+ memory-safety fixes. How to update any distro and verify the running kernel.

read →
$ uname -r
6.6.148-generic
$ cat /sys/devices/system/cpu/vulnerabilities/spectre_v2
Mitigation: Safe RET
↳ CVE-2026-68480 → interrupt slips past it
Security

TONTOU: The Interrupt That Defeats Spectre v2

MIT CSAIL's TONTOU attack (CVE-2026-68480) fires a timed interrupt into the two-instruction window where AMD's Safe-RET isn't yet safe, leaking kernel memory as an unprivileged user. Affected Zen 1–4, the six-byte window, and the patched kernels to reboot into.

read →
$ lsmod | grep openvswitch
# empty — never configured OVS
$ unshare -Urn true; lsmod | grep openvswitch
openvswitch 212992 0
↳ autoloads → CVE-2026-64531 → root
Security

OVSwrap: The Open vSwitch Flaw That Hands Out Root

A 16-bit length wraparound in the Open vSwitch datapath (CVE-2026-64531, CVSS 7.8) lets any local user reach root — and the module autoloads even on hosts that never touch OVS. Patched kernels, the unshare door, and how to blacklist the module today.

read →
$ grep -rn 'TODO' src/
src/api.py:42: # TODO: retries
$ grep -i 'error' app.log | wc -l
37
↳ pattern first, then files or a pipe
Shell

How to Use grep to Search Text in Linux

Search files and pipelines by pattern with -i, -r, -n and -w, invert with -v, count with -c, and print context with -A/-B/-C — plus the regex gotcha (-F for literal strings) that trips everyone up.

read →
$ apt-cache policy libglib2.0-0
Installed: 2.88.1-1
$ sudo apt update && sudo apt upgrade
libglib2.0-0 → 2.88.3, gdm → 50.2
↳ CVE-2026-15588 + GDM autologin fix
Security

GNOME 50.4 Ships Critical GDM and GLib Security Fixes

The Aug 5 point releases patch a GDM autologin bypass and login-daemon DoS, plus GLib CVE-2026-15588 — a D-Bus pre-auth flaw that ships far beyond the desktop. What to update, and the lsof step people skip.

read →
$ cargo install wild-linker
Installed `wild-linker v0.10.0`
$ gcc -g main.c -fuse-ld=wild \
-Wl,--gdb-index -o app
↳ faster GDB start, Btrfs mmap fix
Development

Wild 0.10: The Fast Rust Linker Adds gdb-index

The Rust-written linker that wants to out-run mold reached 0.10 on Aug 4. New: --gdb-index for quicker debugger startup, a Btrfs/VFAT mmap fix that speeds up your builds for free, plus early 32-bit and WebAssembly work.

read →
$ dpkg -l | grep libexpat1
ii libexpat1 2.7.1-2
$ sudo apt update && sudo apt upgrade
expat → 2.8.2, kernel → 6.12.100
↳ DSA-6404-1 + CVE-2026-64560 patched
Security

Tails 7.10.1 Is an Emergency Kernel and Expat Fix

The Aug 5 out-of-band release patches a kernel privilege-escalation bug (CVE-2026-64560) and 21 Expat XML flaws (DSA-6404-1). Both sit on stock Debian and Ubuntu too — what to check, update and reboot.

read →
$ find . -name '*.log' -size +10M
./var/app/error.log
$ find /tmp -type f -mtime +7 -delete
↳ path first, then tests, then action
Shell

How to Use the find Command in Linux

Search by -name, -type, -size, -mtime and -perm, combine tests with -o and !, then act on the matches with -exec, -delete and xargs — with safe, copy-paste examples and the off-by-one -mtime gotcha explained.

read →
$ nano --version | head -1
GNU nano, version 9.2
$ echo hi | nano
Error: standard output is not a terminal
↳ fails fast instead of hanging
DevOps

GNU nano 9.2 Won't Launch Outside a Terminal

The July 31 release adds a startup check: nano now refuses to run when its output isn't a real terminal — quietly fixing hung git commit, cron and CI jobs that set EDITOR=nano. Plus a --newbuffer synonym and crash fixes.

read →
$ dpkg --print-architecture
arm64
$ sudo apt install \
./google-chrome-stable_current_arm64.deb
↳ Google Chrome 150.0 (arm64)
DevOps

Chrome Finally Ships Native ARM64 Builds for Linux

Google now publishes official aarch64 .deb and .rpm Chrome packages — Widevine included — closing a six-year gap for Raspberry Pi, Ampere and cloud Arm Linux users.

read →
$ uname -r
6.8.0-40-generic
$ ./bad-epoll
[*] widening the race window...
↳ uid=0(root) — 99% reliable
Security

Bad Epoll: A Root Flaw in Every Recent Linux Kernel

CVE-2026-46242 is a use-after-free race in ep_remove() that turns any unprivileged user into root on kernels 6.4+. The exploit is public and ~99% reliable — what's hit and how to patch it.

read →
$ crontab -e
0 2 * * * /bin/backup.sh
*/5 * * * * healthcheck.sh
@reboot start-tunnel.sh
↳ min hour dom mon dow
DevOps

How to Schedule Jobs with Cron on Linux

The five time fields, crontab -e, @daily shortcuts, and the two silent killers — a bare PATH and unread output — that break jobs. Plus when a systemd timer fits better.

read →
$ rsync -avhn --delete \
~/site/ nas:/vol/site/
sending incremental file list
*deleting old/stale.log
↳ dry run: 2 to send, 1 to drop
DevOps

How to Use rsync to Sync and Back Up Files

Copy, mirror and back up with one command that moves only what changed. The flags that matter — -avh, --dry-run, --delete — syncing over SSH, and the trailing-slash rule everyone gets wrong.

read →
$ ls -l deploy.sh
-rwxr-x--- you devs
$ chmod 640 notes.txt
$ chown www-data:www-data .
↳ least privilege, restored
Linux Basics

Understanding Linux File Permissions

What -rwxr-xr-- really means, how chmod's symbolic and octal modes map to the same nine bits, plus chown, umask and the setuid/setgid/sticky bits behind every "Permission denied".

read →
$ systemctl status nginx
Active: active (running)
$ sudo systemctl enable --now app
$ systemctl --failed
↳ 0 loaded units failed
DevOps

Managing systemd Services with systemctl

Start, stop, enable and debug daemons from one command. The systemctl moves every admin actually uses — plus --now, masking, drop-in overrides and daemon-reload.

read →
$ cat ~/.ssh/config
Host prod
HostName 203.0.113.10
Port 2222
$ ssh prod
↳ deploy@prod-web-01
DevOps

The SSH Config File: One Place for Every Server

Stop retyping long ssh commands. A few lines in ~/.ssh/config turn every host into a one-word alias — with keys, jump boxes and connection reuse handled for you.

read →
$ alias | wc -l
42

$ time make build
real 0m3.11s
↳ no mouse required
Craft

Why the Command Line Still Wins in 2026

Interfaces get redesigned every year, yet the shell you learned still runs. A look at why text keeps beating the button — and how to make the terminal feel like home.

read →
$ journalctl -p err -b

17:02 sshd: auth fail
17:02 nginx: 502 upstream
17:02 php-fpm: killed
↳ one root cause
Troubleshooting

Reading Logs Like a Detective

An outage leaves fingerprints. Here is a repeatable method for turning a wall of journalctl noise into the single line that actually explains what broke.

read →
$ duckdb -c "SELECT
status, count(*) c
FROM 'access.log'
GROUP BY 1"
200 → 48210
Labs

From Sysadmin to Data Analyst

The pipes, filters and glue you use to keep servers alive are most of a data pipeline already. This is the short path from grepping logs to answering real questions with them.

read →
what the blog covers

Three threads, one terminal.

The tutorials teach you the syntax. The blog is where we sit with the ideas — why a tool exists, how to reason under pressure, and where the command line goes next.

Craft

The habits that separate someone who tolerates the shell from someone who's fluent in it — aliases, muscle memory, and the small ergonomic choices that compound over a career.

Troubleshooting

How to stay calm and systematic when a box is on fire. Reading logs, isolating variables and following a timeline instead of guessing — the detective work behind every clean fix.

Labs — data & AI

Where the command line meets analytics and machine learning. Turning logs into datasets, running models locally, and the surprisingly short bridge from sysadmin to data work.

linuxier labs

From keeping servers alive to asking them questions.

The Labs track follows the same tools you already trust — pipes, cron, containers — one step further, into analytics and AI you can run on the machines you administer.

Start with Labs

Answers from logs

Treat access logs and CSVs as tables you can query on the spot.

  • awk, jq & DuckDB pipelines
  • ad-hoc analysis in the shell
  • scheduled reports with cron

Models, locally

Keep the whole workflow on your own hardware — private and repeatable.

  • local LLMs with Ollama
  • Python & venv the right way
  • GPU & driver sanity checks

Ship it

Move a script from your laptop to something that runs itself.

  • containerise a data app
  • systemd service units
  • quiet, dependable rollouts

AltStyle によって変換されたページ (->オリジナル) /