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.
Read more →A collection of hands-on tutorials to learn Linux techniques step by step. From basic commands to advanced skills, each tutorial includes rich examples and detailed explanations.
Why fixed-name or $$ temp files are dangerous, and how mktemp creates unique, owner-only temporaries that trap cleans up reliably.
Read more →Learn how the read command captures keyboard input and reads files line by line, explained through Lina and Linny-senpai's dialogue. Covers -p, -s, and while read.
Read more →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.
Read more →Learn printf with Linny-senpai and Lina. Covers the difference from echo, format specifiers like %s, %d, and %f, width padding, and escape sequences.
Read more →Learn with Linny-senpai and Lina! Rerun a command at a fixed interval and monitor how its output changes. Covers -n intervals, -d diff highlighting, quoting pipes, and how to exit.
Read more →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.
Read more →
Learn with Linny-senpai and Lina! Master pwd (location), ls (list), and cd (move) - the 3 essential commands for beginners.
Read more →
Learn with Linny-senpai and Lina! Master mkdir (create directories), touch (create files), and echo/cat (view contents).
Read more →
Learn basic file operations: creation, editing, copying, moving, and deletion. Includes introduction to text editor basics.
Read more →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.
Read more →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.
Read more →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.
Read more →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.
Read more →
Detailed explanation of file and directory permissions, chmod, chown, umask and other permission-related commands.
Read more →
Practical learning of advanced permission management including special permissions, ACL, and security configuration.
Read more →
Detailed explanation of permission configuration best practices and real-world examples used in system administration.
Read more →
Learn process concepts and process management commands including ps, kill, jobs, and nohup.
Read more →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.
Read more →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.
Read more →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.
Read more →
Learn practical techniques including system monitoring, performance tuning, and troubleshooting.
Read more →Find the culprit behind umount "target is busy" with fuser, then kill it safely. Includes a fuser vs lsof comparison.
Read more →Pin a process to specific CPU cores with taskset. Launch-time pinning with -c, runtime reassignment with -p, plus benchmarking and core-isolation workflows.
Read more →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.
Read more →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.
Read more →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.
Read more →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.
Read more →Learn how to configure /etc/sudoers safely using visudo. Covers syntax, NOPASSWD, per-command delegation, and sudoers.d best practices on Ubuntu.
Read more →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.
Read more →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.
Read more →Learn how SUID, SGID, and Sticky Bit work in Linux. Understand special permission bits with practical chmod examples and security guidance.
Read more →Learn SELinux basics — check modes with getenforce, read AVC denial logs, and use ausearch and audit2why to identify what is being blocked and why.
Read more →A practical guide to managing users and groups with useradd, usermod, and groupadd. Covers multi-user setup and reading /etc/passwd on Linux.
Read more →Manage passwords and account locking with passwd, and password aging and expiry with chage. Includes how to read /etc/shadow.
Read more →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.
Read more →
Learn advanced file operation techniques including links, compression/decompression, and backup technologies.
Read more →
Practical learning of advanced file search and processing techniques using find, grep, awk. Aimed at professional-level mastery.
Read more →find has complex syntax and is slow. With fd, just type `fd pattern` for a recursive search that respects .gitignore. From the fdfind install gotcha to extensions, types, and exec.
Read more →
Systematic learning of basic file search and text processing commands.
Read more →
Learn advanced techniques including complex search conditions, regular expressions, and awk programming.
Read more →
Detailed explanation of practical use cases and best practices used in real-world work.
Read more →
Detailed learning of professional-level advanced techniques and optimization methods.
Read more →
Systematic learning of shell script writing basics, variables, control structures, and functions.
Read more →
Learn practical shell script creation methods, debugging techniques, and performance optimization.
Read more →bash parameter expansion cheat sheet covering default values, substring extraction, pattern removal, replacement, and case conversion with practical examples.
Read more →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.
Read more →Use trap to catch signals (Ctrl-C, kill) and run reliable cleanup. Covers the EXIT pseudo-signal, cleanup functions, and combining trap with set -e for robust scripts.
Read more →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.
Read more →Catch hidden bugs early with set -euo pipefail. Learn errexit, nounset, pipefail, their pitfalls, and IFS settings for safer shell scripts.
Read more →Learn to reuse bash commands with Ctrl+R search, !!, !$, and history numbers. Covers HISTSIZE and HISTCONTROL settings for efficient shell use.
Read more →
Learn how to check logs in Ubuntu (systemd) environments. Master filtering by time, service, and priority level for effective troubleshooting.
Read more →Master journalctl filtering. Filter logs by unit, time range, priority, and fields to quickly extract exactly what you need from the systemd journal.
Read more →Read the kernel ring buffer with dmesg. From permissions, timestamps, and level filters to triaging disk I/O, OOM, and hardware faults.
Read more →Read, change, and persist Linux kernel parameters with sysctl. Covers runtime changes, /etc/sysctl.d drop-ins, precedence, and verification.
Read more →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.
Read more →
Learn tar command for compression, extraction, and listing contents. Understand .tar.gz/.tgz/.tar differences and how to prevent extraction accidents.
Read more →Compare gzip, bzip2, xz, and zstd on ratio and speed, then choose per use case. Covers tar integration, compression levels, and multithreading.
Read more →
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.
Read more →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.
Read more →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.
Read more →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.
Read more →Diagnose and fix "command not found" on Linux. Covers PATH, hash cache, sudo secure_path, pip --user, and cron with practical templates.
Read more →Practical guide to apt (Debian/Ubuntu) and yum/dnf (RHEL/CentOS) package management. Side-by-side command map, install/update workflows, and troubleshooting steps.
Read more →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.
Read more →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.
Read more →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.
Read more →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.
Read more →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.
Read more →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.
Read more →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.
Read more →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.
Read more →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.
Read more →Learn how to transfer files between servers using scp and rsync on Ubuntu. Includes copy-paste templates for common scenarios.
Read more →Learn how realpath and readlink resolve symlinks and relative paths into absolute paths. Covers -f / -e / -m, --relative-to, and safe scripting patterns.
Read more →Use rsync differential sync for real work - mirroring with --delete, generational backups with --link-dest, excludes, and bandwidth control done safely.
Read more →Learn practical openssl in one pass. Create certificates, compute hashes, encrypt files with AES, and check server certificate expiry with copy-paste commands.
Read more →Encrypt and decrypt files with gpg and verify signatures. Learn when to use public-key vs password mode, with copy-paste examples.
Read more →Use -L, -R, and -D to reach databases behind bastions, expose local apps, and run a SOCKS proxy with safe, repeatable SSH tunnels.
Read more →Capture packets with tcpdump. From first capture to BPF filters, pcap files, and Wireshark - a practical playbook for diagnosing network issues.
Read more →Find which process holds a file, socket, or port with lsof. Solve device is busy, port conflicts, and deleted-but-open files with copy-paste commands.
Read more →Learn nc (netcat) for port testing, simple server setup, file transfer, and banner grabbing. Practical debugging patterns for Linux network diagnostics.
Read more →Learn the fundamentals of iptables and nftables on Linux. Set up SSH and HTTP rules, block ports, and persist your firewall configuration on Ubuntu.
Read more →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.
Read more →How /etc/hosts and /etc/resolv.conf shape DNS resolution on Linux — priority rules in nsswitch.conf, systemd-resolved, and practical override patterns.
Read more →Manage NetworkManager with nmcli — check status, connect to Wi-Fi, set static IPs, and activate connections with copy-paste commands.
Read more →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.
Read more →Use lsmod to inspect loaded kernel modules and modprobe to load or remove them with dependencies. Covers modinfo, blacklist, and load-at-boot.
Read more →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.
Read more →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.
Read more →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.
Read more →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.
Read more →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.
Read more →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.
Read more →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.
Read more →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.
Read more →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.
Read more →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.
Read more →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.
Read more →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.
Read more →Learn Linux text formatting commands column, pr, and fmt — align tabular data, paginate output for printing, and reformat paragraph text on the command line.
Read more →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.
Read more →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.
Read more →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.
Read more →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.
Read more →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.
Read more →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.
Read more →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.
Read more →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.
Read more →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.
Read more →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.
Read more →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.
Read more →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.
Read more →Learn with Lina and Linny-senpai! Create short nicknames for long commands using alias, persist them in .bashrc, and remove them with unalias.
Read more →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.
Read more →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.
Read more →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.
Read more →
Fix cron jobs that aren't running on Linux. Learn how to check crontab, view logs, and avoid common PATH and permission pitfalls.
Read more →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.
Read more →Compare systemd timer and cron for Linux job scheduling. Prefer systemd timer for logging, dependencies, and missed-run recovery; cron for simple one-liners.
Read more →
Manage Linux services with systemctl. Learn status, start, restart, and enable commands for Nginx, Apache, SSH, and other services.
Read more →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.
Read more →Learn logrotate config structure and key directives. Covers rotate, compress, delaycompress, postrotate, and how to debug with dry-run mode on Linux.
Read more →Manage /tmp cleanup with systemd-tmpfiles and tmpfiles.d. Write declarative rules for automatic deletion, permissions, and boot-time directory creation.
Read more →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.
Read more →Map device topology with lsblk and read UUID, LABEL, and FS type with blkid. Learn how to grab a stable device identifier for fstab.
Read more →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.
Read more →LVM and partition management guide for Linux. Learn to create PV, VG, and LV, extend volumes online, use snapshots, and manage storage flexibly.
Read more →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.
Read more →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.
Read more →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.
Read more →ripgrep (rg) is a fast grep alternative that respects .gitignore. Covers the difference from grep, install, type/glob filtering, context, and replacement preview.
Read more →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.
Read more →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.
Read more →Learn with Lina and Linny-senpai! Understand how `*`, `?`, and `[]` differ, how brace expansion is separate, and avoid the traps with extglob, dotfiles, and no-match behavior.
Read more →A practical guide to test, [ ], and [[ ]]. Master string, numeric, and file comparisons and avoid quoting bugs with copy-paste templates.
Read more →Learn with Lina and Linny-senpai! Understand exit status, check results with $?, and branch your commands with && and || in a beginner-friendly walkthrough.
Read more →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.
Read more →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.
Read more →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.
Read more →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.
Read more →Stop cron jobs and scripts from overlapping with flock. Exclusive locks, timeouts, and self-locking patterns explained for real-world ops.
Read more →Trigger automation on file changes with inotifywait. close_write vs modify, recursive watch limits, and a copy-paste processing loop.
Read more →Mount a remote directory locally over SSH with sshfs. Installation, auto-reconnect, fstab automation, unmounting, and common fixes from a practical angle.
Read more →From !! / !$ to !string / !:n / :h:t:r / ^old^new^. Use bash history expansion to reuse past commands fast, explained for beginners.
Read 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.
Read more →Learn bash indexed and associative arrays step by step: declaring, accessing, looping, and editing elements, plus quoting and sparse-array pitfalls.
Read more →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.
Read more →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.
Read more →Run a command with a modified environment without touching your shell. Set variables temporarily, use env -i / -u / -C, and write portable shebangs.
Read more →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.
Read more →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.
Read more →
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.
Read more →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.
Read more →Error and incident articles have moved to a dedicated reverse-lookup category. Look up Permission denied, No space left, SSH failures, high CPU load, memory pressure, DNS issues by symptom.
After learning the theory, practice using actual commands. You can learn experientially at Penguin Gym Linux.