Linux

Tux the Linux Penguin

Back in 2003/2004, my first exposure to Linux was conversing with someone on a forum and they sent me a .tar.gz file. I had no idea what this was or how to open it. They replied with "I forget that not everyone uses linux lol" and a web search later, I was down a rabbit hole. When I'd go to Office Max with my mom, I discovered the Linux boxed sets of SuSE, Red Hat, and I think Mandrake. I don't remember what sold in stores. I never purchased one, regretfully, but eventually I got a copy of SuSE by going to a Novell event.

These days, I mostly use Enterprise Linux, Ubuntu, and Debian. This page is my Linux reference shelf: the links and commands I reach for when I am building a server, troubleshooting a weird problem, or trying to remember which tool owns which part of the system.

How I Think About Linux

Linux is not one thing. The kernel, userland, init system, package manager, filesystem layout, desktop environment, and distribution policies all matter. A useful reference should help you identify which layer you are dealing with before you start changing things.

Distribution Families

Family Examples Package Tools Best Fit
Enterprise Linux RHEL, Rocky Linux, AlmaLinux, CentOS Stream dnf, rpm Long-lived servers, hosting platforms, predictable operations, SELinux-first environments.
Debian Debian Stable apt, dpkg Conservative servers, small systems, clean dependency management, simple maintenance.
Ubuntu Ubuntu Server, Ubuntu Desktop apt, snap, dpkg Cloud images, broad hardware support, desktop use, lots of third-party documentation.
Arch Arch Linux pacman Learning, rolling-release desktops, and people who want to understand every piece they install.
SUSE openSUSE Leap, openSUSE Tumbleweed, SLES zypper, rpm Excellent administration tooling, Btrfs snapshots, and historically strong enterprise roots.

Core References

Reference Use It For Link
Linux Kernel Documentation Kernel behavior, admin guides, filesystems, networking internals, drivers, and kernel APIs. docs.kernel.org
Linux man-pages System calls, command behavior, configuration file formats, and low-level Linux interfaces. man7.org/linux/man-pages
Arch Wiki Deep practical notes. Useful even if you do not run Arch, especially for desktop, boot, storage, and networking topics. wiki.archlinux.org
Debian Administrator's Handbook Debian administration from installation through services, packaging, upgrades, and troubleshooting. debian.org/doc/manuals/debian-handbook
Ubuntu Server Documentation Ubuntu server installation, storage, networking, security, virtualization, and common services. ubuntu.com/server/docs
Red Hat Enterprise Linux Documentation Enterprise Linux administration, DNF, SELinux, firewalld, storage, networking, identity, and lifecycle planning. docs.redhat.com
Rocky Linux Documentation Community Enterprise Linux guides, labs, and practical server administration notes. docs.rockylinux.org
AlmaLinux Wiki AlmaLinux release notes, migration notes, SIG information, and distribution-specific guidance. wiki.almalinux.org

First Commands I Run On A New Server

hostnamectl
cat /etc/os-release
uname -a
ip addr
ip route
ss -tulpn
df -h
lsblk -f
free -h
timedatectl
systemctl --failed
journalctl -p warning -b

That gives a quick picture of the distribution, kernel, network layout, listening services, disks, memory, time sync, failed units, and boot-time warnings. Before making changes, I like to know what the machine thinks it is and what state it is already in.

Package Management Quick Reference

Task RHEL / Rocky / Alma Debian / Ubuntu Arch
Update package metadata dnf check-update apt update pacman -Sy
Upgrade packages dnf upgrade apt upgrade pacman -Syu
Install package dnf install name apt install name pacman -S name
Remove package dnf remove name apt remove name pacman -R name
Find package owning a file rpm -qf /path dpkg -S /path pacman -Qo /path

Systemd And Logs

Command What It Answers
systemctl status name.service Is the service running, and what were its most recent log lines?
systemctl enable --now name.service Start the service now and configure it to start at boot.
journalctl -u name.service -b Show logs for one service since the last boot.
journalctl -xe Show recent logs with explanatory hints where available.
systemd-analyze blame Show which units slowed down boot.

Networking Checklist

  • Addressing: ip addr, ip route, and resolvectl status usually tell you whether the local network stack is sane.
  • Listening services: ss -tulpn shows TCP/UDP listeners and the processes that own them.
  • DNS: test with dig example.com, dig @1.1.1.1 example.com, and getent hosts example.com. DNS can fail differently at resolver, network, and libc layers.
  • Firewall: on Enterprise Linux, start with firewall-cmd --list-all. On Debian/Ubuntu, check whether the system uses ufw, raw nft, or something else.
  • Path testing: use ping, traceroute or tracepath, curl -v, and packet captures with tcpdump when guessing stops being useful.

Storage And Filesystems

  • Inventory: lsblk -f, blkid, and findmnt show block devices, filesystems, UUIDs, and mount relationships.
  • Space: df -h answers filesystem free space; du -sh * helps find where it went.
  • LVM: pvs, vgs, and lvs show physical volumes, volume groups, and logical volumes.
  • Health: use smartctl -a /dev/sdX for disk health where supported. On NVMe, use nvme smart-log /dev/nvme0.
  • Mounts: always validate /etc/fstab changes with findmnt --verify or a test mount before rebooting.

Security Baseline

  • Use SSH keys, disable password logins where practical, and avoid exposing SSH directly if a VPN or bastion host is available.
  • Keep automatic security updates in mind for small systems that otherwise will not receive routine maintenance.
  • Prefer least privilege with sudo; do not use the root account as your normal shell.
  • Understand the local firewall tool before opening ports. A service can be installed, running, listening, and still blocked by policy.
  • On SELinux systems, investigate denials instead of immediately disabling SELinux. ausearch, sealert, and audit logs are there for a reason.
  • Backups matter more than clever rebuild notes. Test restores before you trust the backup plan.

Troubleshooting Order

  1. Read the exact error. Do not paraphrase it too early.
  2. Identify the layer: hardware, kernel, network, DNS, authentication, package manager, service config, filesystem, or application.
  3. Check recent change history: package updates, config edits, reboots, disk growth, certificate expiration, DNS changes, firewall changes.
  4. Look at logs for the relevant unit or subsystem.
  5. Make one change at a time and keep enough notes to undo it.
  6. After fixing it, write down the signal that proved the fix worked.

Learning Path

  1. Install a server distribution in a VM and learn SSH, users, packages, services, logs, and networking.
  2. Run a simple web service behind a firewall and make it survive reboots.
  3. Add storage deliberately: partitioning, filesystems, LVM, mounts, and backups.
  4. Break DNS, firewall rules, permissions, and service configs on purpose in a lab, then recover them.
  5. Build the same service on Debian/Ubuntu and Enterprise Linux to learn what is universal and what is distribution-specific.