Linux Commands: A Server Admin's Reading List
The whole catalog, in the order you'll actually need them — connect, look around, find out what's wrong, fix it.
How to Read This Index
We've ordered the commands the way you'll actually meet them on a real server: connect first, look around, learn the daily diagnostic loop, then the specialized tools and the corners. Start at the top if you're new to Linux. Skip the first two sections if ls and pwd are already in your fingers. Every command links to its own full tutorial — examples, gotchas, history. The curated sections below are the order we recommend reading; the full alphabetical list at the bottom is for jumping straight to a known target.
1. Connecting — The First Thing You Do
You can't admin a server without a way in, and you can't get anything done if your shell dies the moment your laptop sleeps.
ssh— connect to a remote host over the Secure Shell protocolscp— copy files between hosts over sshsftp— interactive file transfer over sshrsync— fast, incremental file sync that survives interruptionstmux— keep work alive after you disconnect; split the terminalscreen— the older sibling of tmux
2. Getting Around — Skip If You Already Know These
The first 30 minutes on any Linux box. If cd, ls, cat and man are reflexes, jump to the next section.
pwd— where am I?cd— go somewherels— what's in this directory?cat— dump a file to stdoutless— page through a file (much better thanmore)more— the older pagerhead/tail— first or last N lines of a filefile— what kind of file is this?find— find files by name, time, size, or contentslocate— find files by name from a pre-built indexwhich/whereis— which binary will run when I type X?man— the built-in manualcp/mv/rm— copy, move, deletemkdir/rmdir— make / remove a directoryln— symbolic and hard linksecho— print text (more nuanced than it looks)printf— formatted output, the predictable sibling of echoenv— show or modify the environment for a commandset— configure shell options and positional parameterssudo— run a command as rootwhoami— who am I logged in as?who/w— who else is on this box?
3. Is the Server Alive and Well — The Daily Diagnostic
When something feels wrong, you reach for these in this order. Master the loop and "the server is slow" stops being scary.
uptime— load average plus how long since reboottop— live process table, CPU + memory at a glance, the foundationhtop— the friendlier, colorful, interactive cousin oftopps— process snapshot, scriptable, the tool you pipe againstfree— memory state with the "Linux ate my RAM" reveal
4. Disk Space — When Storage Fills Up
The single most common production outage, and the four tools that always solve it.
df— which mount is full, and the surprising inode trapdu— which directory is eating the spacencdu— interactive, visualdu— install it first, then thank melsof— what files are open, and the "deleted but still held open" mysterymount/umount— what's mounted wherelsblk— list block devices and how they're stackedsmartctl— SMART health data; is this disk dying?
5. I/O Performance — When the Disk Is Slow
When top shows high wa (I/O wait), this is where you go.
iostat— per-device queue, latency, throughputiotop— top, but for disk I/O per processvmstat— six subsystems on one line, the highest-level dashboardsar— historical performance archive across daysmpstat— per-CPU breakdownpidstat— per-process CPU, memory, I/O from sysstatdstat— versatile real-time resource stats, all subsystems at once
6. Processes and Signals — Making Things Behave
Find it, talk to it, stop it, restart it — with the safety habit built in.
kill— send a signal by PID (and signals are way more than "kill")pkill— send a signal by name; the daemon-administrator's hammerpgrep— find PIDs by name; the safety wrapper forpkillkillall— older sibling ofpkill, more dangerousnice/renice— adjust a process's prioritybg/fg/jobs— shell job control
7. Network — What's Listening, Who's Talking
The first command on a new server: ss -ltnp. From there, this whole section.
ss— modern socket inspector; what's listening, what's connectednetstat— the museum-piece predecessor still in every tutorialip— modern interface/route/address config (iproute2)ifconfig— the legacy version, still useful for read-only viewsping— is it reachable?traceroute— where does the path break?curl/wget— HTTP from the shelldig/host/nslookup— DNS queriestcpdump— packet capture, the wire-level truthnmap— port scanning, the external view of your boxiptables— firewall rules (legacy syntax, still everywhere)nft— nftables, the modern replacement for iptables
8. Logs and Debugging — What Just Happened
When something broke, this is the chain.
journalctl— every log line from every systemd service, queryabledmesg— the kernel's ring buffer; first place to look for hardware trouble or OOM killstail— follow a log file in real time (tail -f)grep— find lines in a logstrace— see every syscall a program makes; the universal debugger when there are no logsltrace— like strace, but for library callslogrotate— rotate, compress, and prune log files before they eat the diskgdb— the GNU debugger, for when you need to step inside a crash
9. Service Management — Systemd and Friends
systemctl— the front door to systemd; start, stop, supervise servicesservice— the legacy wrapper, still in scripts everywherecrontab— schedule recurring jobs (or use systemd timers viasystemctl)timedatectl— check and set the system clock, timezone, NTP synchostnamectl— show or set the hostname and machine metadata
10. Text Processing — The Shell's Superpower
Once you can fluently slice and reshape text, the whole shell starts feeling like a programming language.
grep/egrep/fgrep— search for patternsawk— column-oriented text processing and a tiny scripting languagesed— stream editor for line-by-line transformationscut— pick out columnssort— sort linesuniq— collapse adjacent duplicateswc— count lines, words, characterstr— translate or delete charactersxargs— build command lines from inputjq— query and reshape JSONtee— split a stream so you can save and pipe
11. Packages — Installing Software
Each distro family has its own; the verbs are the same.
apt/apt-get/apt-cache— Debian and Ubuntudpkg— lower-level Debian package toolaptitude— high-level Debian frontendyum/dnf— RHEL, CentOS, Fedorapacman— Arch and derivativeszypper— openSUSEyast— openSUSE's higher-level system config
12. Storage Administration — Filesystems and RAID
When you're past "the disk is full" into "let me build the disk."
mkfs.ext4/mkfs.xfs/mkfs.btrfs/mkfs.vfat— create a filesystemfsck— check and repair a filesystemtune2fs— adjust ext2/3/4 parameters after creationmdadm— Linux software RAIDlvcreate/pvcreate/vgcreate— Logical Volume Managerhdparm— hard disk parameters and benchmarksmkfs— create a filesystem (the generic front-end)sgdisk— scriptable GPT partition toolparted— interactive partition editor for GPT and MBRxfs_repair— check and repair an XFS filesystembtrfs— the btrfs admin tool
13. Users and Permissions
id— your user and group IDsuseradd/userdel/usermod— manage usersgroupadd— manage groupsgroups— show which groups a user belongs tonewgrp— switch your active group for the current sessionpasswd— change a passwordchmod/chown/chgrp— permissions and ownershipvisudo— safely editsudoerssu— switch to another user
14. Files and Archives
tar— pack and unpack archives, the universal Unix bundle formatgzip/gunzip— compress / decompressxz— modern, slow, high-ratio compressionzip/unzip— the Windows-compatible archivezstd— fast modern compressioncmp/diff— compare files
15. Editors
Pick one and learn it well. You'll spend more time in this tool than any other.
nano— the friendliest for newcomersvi/vim— universal; ships on every Unixemacs— the other onemc— Midnight Commander, two-pane file manager with built-in editor
16. The Shell Itself
bash— the default shell on most Linux distroszsh— popular alternative with better completionsh— the POSIX shell, scripts use thisalias— create command shortcutsexec— replace the shell with another programexit— leave the shellhistory— recall previous commandstime— measure how long a command tookwatch— run a command repeatedly and watch the output change
Full Alphabetical List
Everything in the knowledge base, A to Z. If you know what you're looking for, jump straight to it.
ab: a tool for benchmarking web serversalias: create a shortcut for a commandapt: install, remove, and manage software packagesapt-cache: search for and display information about software packagesapt-get: install, remove, and manage software packagesaptitude: a high-level interface for managing packages in Debian-based systemsaria2c: download files using different protocolsat: execute a command at a specified timeatop: show performance metricsawk: perform text processing and data manipulation tasksbash: widely used Unix shellbg: resume a stopped job in the backgroundbtrfs: manage btrfs filesystemscat: concatenate and display filescd: change the current directorychgrp: change file group ownershipchmod: change file permissionschown: change file ownershipcmp: compare two files byte by bytecp: copy files and directoriescrontab: schedule commands to run at specific timescurl: transfer data from or to a servercut: remove sections from each line of a filedate: display or set the date and timedd: convert and copy a filedf: display information about free disk spacedhclient: manage DHCP leasesdiff: compare two files line by linedig: query DNS serversdmesg: print the kernel ring bufferdnf: install, remove, and manage software packages on Fedoradocker: manage Docker containersdpkg: manage Debian software packagesdstat: versatile real-time resource statisticsdu: display the size of a file or directoryecho: display a message or the value of a variableegrep: search files using extended regular expressionsemacs: edit text files with the Emacs editorenv: show or modify the environment for a commandexec: replace the shell with another programexit: leave the shellfdupes: find and remove duplicate filesfdisk: partition a diskfg: bring a backgrounded job to the foregroundfgrep: search files for fixed stringsfile: determine file typefind: search for files in a directory hierarchyfree: display the amount of free and used memoryfsck: check and repair a filesystemgdb: the GNU debuggergrep: search files for patternsgroupadd: create a new groupgroups: show which groups a user belongs togunzip: decompress gzip-compressed filesgzip: compress files using gziphdparm: get or set hard disk parametershead: display the first few lines of a filehistory: show recently typed commandshost: perform DNS lookupshostnamectl: show or set the hostname and machine metadatahtop: an interactive process viewerid: display user and group IDsifconfig: configure a network interface (legacy)iostat: report CPU and I/O statisticsiotop: display I/O usage per processip: show and manipulate routing, devices, and tunnelsiptables: configure firewall rulesjobs: list active shell jobsjournalctl: query and display systemd journal logsjq: process and query JSON datakill: send a signal to a processkubectl: manage Kubernetes clusters and workloadskillall: kill processes by nameless: view the contents of a file one page at a timeln: create symbolic or hard linkslocate: find files by name from an indexlogrotate: rotate, compress, and prune log filesls: list the contents of a directorylsblk: list block deviceslsof: list open filesltrace: trace library callslvcreate: create a logical volume in LVMmake: build software from source using Makefilesman: display the manual page for a commandmc: start the Midnight Commandermdadm: manage Linux software RAID arraysmkdir: create a new directorymkfs: create a filesystem on a devicemkfs.btrfs: create a btrfs filesystemmkfs.ext4: create an ext4 filesystemmkfs.ntfs: create an NTFS filesystemmkfs.vfat: create a FAT filesystemmkfs.xfs: create an XFS filesystemmodprobe: add or remove kernel modulesmore: the older pagermount: mount a filesystemmpstat: report per-CPU statisticsmv: move or rename files and directoriesnano: a friendly text editorncdu: interactive disk usage analyzernetstat: display network connections (legacy)newgrp: switch the active group for the current sessionnft: manage nftables firewall rulesnice: run a command with adjusted prioritynmap: scan networksnproc: print the number of processing unitsnslookup: query DNS recordspacman: install, remove, and manage software packages on Archparted: interactive partition editor for GPT and MBRpasswd: change a user's passwordpgrep: find processes by namepidstat: per-process CPU, memory, and I/O statisticsping: send an ICMP echo requestpkill: signal processes by nameprintf: formatted output to stdoutps: display information about running processesptrace: trace and control another processpvcreate: create an LVM physical volumepwd: print the current working directorypython: launch the Python interpreterrenice: change the priority of a running processrm: delete files and directoriesrmdir: remove an empty directoryroute: show or manipulate the IP routing table (legacy)rsync: fast incremental file syncsar: collect and report historical system performancescp: copy files over sshscreen: run multiple shells in one terminalsed: stream editor for transforming textservice: start, stop, or query a service (legacy)set: configure shell options and positional parameterssgdisk: scriptable GPT partition toolshowmount: list NFS exports from a serversftp: interactive file transfer over sshsh: the POSIX shellshutdown: shut down or reboot the systemsleep: pause for a number of secondssmartctl: query disk SMART datasnmpwalk: query SNMP data from network devicessort: sort lines of textss: modern socket inspectorssh: connect to a remote hostssh-add: add an ssh key to the agentssh-agent: hold decrypted ssh keys in memoryssh-copy-id: install a public key on a remote hostssh-keygen: generate ssh keysstrace: trace system callssu: switch to another usersudo: execute a command as rootswapoff: disable swapswapon: enable swapsysctl: read and write kernel parameterssystemctl: control the systemd system and service managertail: display the last few lines of a filetar: archive filestcpdump: capture network packetstee: split a stream into a file and stdouttimedatectl: check and set system clock, timezone, NTP synctime: measure how long a command takestmux: terminal multiplexertop: display running processestr: translate or delete characterstraceroute: trace the route packets take to a hosttune2fs: adjust ext filesystem parametersumount: unmount a filesystemuname: print system informationuniq: collapse adjacent duplicate linesunzip: extract a zip archiveuptime: display the current uptime of the systemuseradd: add a useruserdel: delete a userusermod: modify a uservalgrind: detect memory errors and leaksvgcreate: create an LVM volume groupvi: the classic Unix editorvim: the modernized vivisudo: safely edit the sudoers filevmstat: report virtual memory statisticsw: show who is logged in and what they're doingwatch: run a command periodicallywc: count lines, words, and characterswget: download files from the webwhereis: locate the binary, source, and manual page for a commandwhich: display the path of a commandwho: show who is logged inwhoami: print the current userxargs: build command lines from inputxfs_repair: check and repair an XFS filesystemxz: compress or decompress filesyast: configure a SUSE-based systemyum: install, remove, and manage software packages on Red Hatzcat: view compressed files without extractingzip: create a zip archivezsh: the Z shellzstd: fast modern compressionzypper: manage packages on openSUSE
Not sure which of these your own server actually needs right now?
CleverUptime watches the symptoms — load creeping, disk filling, services flapping, OOMs in the kernel — and tells you in plain language what's wrong, so you reach for the right command instead of trying twelve.
Want to see your own server's health right now? One command, no signup, no install.