Overview
Good troubleshooting is less about memorizing commands and more about using a repeatable process under pressure.
The Method
- Observe the actual failure and exact error.
- Isolate where the break occurs.
- Form a hypothesis you can test.
- Change one thing at a time.
- Document what you learned.
Service Fails to Start
systemctl status myservice
journalctl -u myservice -n 50 --no-pager
ss -tulnp | grep :80
nginx -t
sshd -t
Connectivity Problems
ip link show
ip addr show
ip route show
ping -c 3 $(ip route | awk '/default/ {print $3; exit}')
nc -zv target-host 443
traceroute -n target-host
mtr -n --report target-host
DNS Problems
cat /etc/resolv.conf
dig @192.168.10.10 example.com
nslookup example.com
getent hosts example.com
grep hosts /etc/nsswitch.conf
Disk Full
df -hT
du -sh /var/* 2>/dev/null | sort -rh | head
find /var/log -size +100M -type f
lsof +L1 | grep deleted
journalctl --vacuum-size=500M
dnf clean all
CPU or Memory Pressure
top
ps aux --sort=-%cpu | head
ps aux --sort=-%mem | head
free -h
journalctl -k | grep -i oom
strace -p <PID> -c
Practical Advice
- test configs before restarting services
- verify whether the problem is local, network, DNS, auth, or application level
- do not restart multiple components at once unless you already know the blast radius
- write down findings while you work, not after the outage