Modern software engineering is not just about writing code. It’s about understanding systems.
And if you want to grow from a developer into a resilient engineer, someone who can debug production issues at 2 AM without panicking, you must become comfortable in the Linux terminal.
This guide covers the top Linux terminal commands for developers, not just what they do, but:
- When to use them
- Why they matter
- How to use them in real-world debugging scenarios
- How to install the necessary tools
Let’s build command-line confidence the right way.
Why Every Developer Should Master the Linux Terminal

Most servers in production environments run Linux. Whether you’re deploying to:
You will interact with Linux. The terminal gives you:
- ⚡ Speed
- 🔍 Deep system visibility
- 🛠 Powerful debugging capability
- 🧠 Real engineering confidence
I believe developers who avoid the terminal stay limited, and engineers who master it gain leverage.
Installing Linux Terminal Tools
Most Linux distributions already include these commands. If something is missing:
On Ubuntu/Debian:
bash
sudo apt update
sudo apt install <package-name>On Fedora:
bash
sudo dnf install <package-name>On macOS (Homebrew):
bash
brew install <package-name>You rarely need to install commands like ls, cd, or grep, as they come already installed, but tools like htop, tree, or curl may require installation.
1. ls – List Files Like a Pro
What It Does: Lists files in a directory.
Why It Matters: You can’t debug what you can’t see.
Usage
bash
ls -laOutput Example:
bash
drwxr-xr-x 5 user user 4096 Jan 10 12:00 .
drwxr-xr-x 10 user user 4096 Jan 10 11:50 ..
-rw-r--r-- 1 user user 245 Jan 10 12:00 server.js- -l = detailed view
- -a = show hidden files
Hidden files (like .env) often cause production issues.
2. cd – Navigate the System
Move between directories:
bash
cd /var/www/app
cd ..
cd ~When debugging servers, speed of navigation matters.
3. pwd – Know Where You Are
Print working directory:
bash
pwdOutput:
bash
/var/www/appSimple, but critical when working across environments.
4. cat – View File Contents Quickly
bash
cat package.jsonUse it to inspect:
- Config files
- Logs
- Environment files
⚠️ Not ideal for large files. For that, use less.
5. less – Read Large Files Safely
bash
less server.logScroll with the arrow keys. Press q to exit.
Perfect for inspecting logs without crashing your terminal.
6. grep – Search Inside Files (Power Tool)
Basic Usage
bash
grep "error" server.logReal Debugging Example
Find stuck Node processes:
bash
ps aux | grep nodeWorkflow Explanation:
- ps aux → shows all running processes
- | → pipe output
- grep node → filter only Node processes
Output:
bash
user 1234 0.5 node server.jsNow you can kill it if needed:
bash
kill 1234This is real-world debugging.
7. ps – View Running Processes
- ps: Stands for "process status" and is the main command to view information about current processes.
- a: Lifts the restriction to display processes of only the current user.
- u: Displays the output in a user-oriented, detailed format, which includes useful information like the process owner (USER), CPU and memory usage (%CPU, %MEM), virtual memory size (VSZ), and start time (START).
- x: Includes processes that are not associated with a controlling terminal (TTY), such as daemons and background services
bash
ps auxShows:
- CPU usage
- Memory usage
- Process ID (PID)
When your server is slow, this command is your first diagnostic tool.
8. kill – Stop a Process
bash
kill <process-id>If the process does not stop after the first command, you can force it to stop using the command below:
bash
kill -9 <process id>Use responsibly, as it forces a process to stop, even if the process is important for running the system properly.
9. top / htop – Monitor System Resources
bash
topBetter alternative:
bash
sudo apt install htop
htopYou’ll see the following in real time:
- CPU usage
- Memory consumption
- Active processes
When production slows down, this is where resilient engineers start.
10. df – Check Disk Space
bash
df -hOutput:
bash
Filesystem Size Used Avail Use%
/dev/sda1 50G 49G 1G 98%If disk usage hits 100%, your app crashes. Many production outages are simply full disk errors.
11. du – Find What’s Consuming Space
bash
du -sh *Shows folder sizes. If logs are eating space:
bash
2.1G logs/Now you know what to clean.
12. curl – Test APIs from the Terminal
Instead of guessing if your backend works:
bash
curl http://localhost:3000/api/healthOr test a POST request:
bash
curl -X POST http://localhost:3000/api/login \
-H "Content-Type: application/json" \
-d '{"email":"test@example.com","password":"1234"}'This removes frontend dependency during debugging. Professional engineers debug APIs directly.
Real-World Debugging Workflow Example

Let’s say your Node app crashes in production.
Step 1: SSH into the server
bash
ssh user@your-server-ipStep 2: Check Running Processes
bash
ps aux | grep nodeNo process running? That’s a clue.
Step 3: Check Logs
bash
less logs/server.logSearch inside:
bash
/errorStep 4: Check Disk Space
Code
df -hDisk full? That explains it.
Step 5: Restart App
bash
node server.jsThat’s how debugging actually works. Calm. Systematic. Structured.
Common Mistakes Developers Make
- Only using GUI tools
- Avoiding logs
- Restarting apps blindly
- Ignoring disk usage
- Fear of the terminal
“The terminal is not scary. It’s clarity.”
Final Thoughts
Mastering Linux terminal commands is not about memorizing syntax. It’s about building confidence.
It’s about becoming the developer who:
- Can debug production issues
- Understands system behavior
- Solves problems under pressure
Start small. Practice daily.
Open your terminal even when you don’t need to. That’s how junior developers evolve into resilient engineers. And resilience is what separates coders from true software professionals.
MK
Mike Kanu
Author
AI Software Engineer | Technical Adviser | Writter
Comments (0)
Sign in to join the conversation
