Introduzione
Per ogni system administrator Linux, padroneggiare la riga di comando non è un optional: è una necessità assoluta. Che tu stia gestendo server in produzione, diagnosticando problemi critici o automatizzando task ripetitivi, i comandi Linux rappresentano il tuo strumento principale. In questa guida analizzeremo i 50 comandi Linux essenziali che ogni sysadmin dovrebbe conoscere alla perfezione, con esempi pratici e casi d’uso reali.
Dalla gestione dei file alla rete, dai processi alla sicurezza, questi comandi coprono ogni aspetto dell’amministrazione di sistema su distribuzioni come Ubuntu, CentOS, Debian e Red Hat Enterprise Linux.
Prerequisiti
- Accesso a un sistema Linux (fisico, virtuale o WSL)
- Conoscenza base della riga di comando
- Permessi di root o accesso sudo per alcuni comandi
- Terminal emulator (bash, zsh o sh)
1. Gestione di File e Directory
ls – Listare i contenuti
Il comando più usato in assoluto. Visualizza file e directory con opzioni avanzate:
ls -lah /var/log
L’opzione -l mostra i dettagli, -a include i file nascosti, -h rende le dimensioni leggibili dall’uomo.
cd – Cambiare directory
cd /etc/nginx && ls -la
cp – Copiare file
cp -r /home/utente/backup/ /mnt/storage/
mv – Spostare o rinominare
mv vecchio_nome.conf nuovo_nome.conf
rm – Rimuovere file
rm -rf /tmp/cache_obsoleta/
Attenzione: usa rm -rf con estrema cautela. Verifica sempre il percorso prima di eseguire.
find – Ricerca avanzata
find /var/log -name "*.log" -mtime +30 -exec rm {} ;
Questo comando trova e rimuove tutti i log più vecchi di 30 giorni.
touch, mkdir, ln
mkdir -p /opt/app/{config,logs,data}
touch /opt/app/config/settings.conf
ln -s /opt/app/config/settings.conf /etc/app/settings.conf
2. Visualizzazione e Manipolazione del Testo
cat, less, more, head, tail
cat /etc/passwd less /var/log/syslog tail -f /var/log/nginx/access.log head -20 /etc/fstab
Il comando tail -f è fondamentale per monitorare i log in tempo reale durante il troubleshooting.
grep – Ricerca pattern
grep -i "error" /var/log/syslog | grep -v "minor" grep -rn "listen 80" /etc/nginx/
awk – Elaborazione testo strutturato
awk '{print $1, $7}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -20
Questo comando estrae IP e URL dal log di Nginx, ordinandoli per frequenza.
sed – Stream editor
sed -i 's/MaxClients 150/MaxClients 250/g' /etc/apache2/apache2.conf
sort, uniq, wc
cat /var/log/auth.log | grep "Failed" | awk '{print $11}' | sort | uniq -c | sort -rn
Questo pipeline identifica gli IP con più tentativi di accesso falliti.
3. Gestione dei Processi
ps – Stato processi
ps aux | grep nginx ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%cpu | head -10
top e htop
top -bn1 | head -20 htop -u www-data
htop offre un’interfaccia interattiva superiore a top. Installalo con apt install htop.
kill e killall
kill -9 1234 killall -HUP nginx
Il segnale -HUP (hangup) ricarica la configurazione senza riavviare il processo.
nohup e &
nohup ./script_lungo.sh > /var/log/script.log 2>&1 &
systemctl – Gestione servizi
systemctl status nginx systemctl restart postgresql systemctl enable --now docker journalctl -u nginx -f --since "1 hour ago"
4. Monitoraggio del Sistema
df – Spazio disco
df -hT | grep -v tmpfs
du – Utilizzo directory
du -sh /var/log/* | sort -rh | head -10
free – Memoria RAM
free -mh
vmstat e iostat
vmstat 1 10 iostat -xz 1 5
vmstat mostra statistiche di memoria virtuale, I/O e CPU ogni secondo per 10 rilevazioni.
uptime e w
uptime w
5. Rete e Connettività
ip – Configurazione rete
ip addr show ip route show ip link set eth0 up
ss e netstat
ss -tulnp | grep LISTEN ss -s
ss è il sostituto moderno di netstat, più veloce e dettagliato.
ping, traceroute, mtr
ping -c 4 8.8.8.8 traceroute google.com mtr --report google.com
curl e wget
curl -I https://example.com
curl -o /dev/null -w "%{http_code} %{time_total}n" https://api.example.com/health
wget -q --spider https://example.com
nmap – Port scanning
nmap -sV -p 22,80,443 192.168.1.0/24 nmap -O --osscan-guess target.example.com
tcpdump – Analisi traffico
tcpdump -i eth0 -n port 80 -w /tmp/capture.pcap tcpdump -r /tmp/capture.pcap | grep "GET"
6. Permessi e Sicurezza
chmod e chown
chmod 750 /opt/app/scripts/ chmod 640 /etc/app/config.conf chown -R www-data:www-data /var/www/html/
sudo e su
sudo -u postgres psql -c "l" sudo -i su - deploy
passwd e useradd
useradd -m -s /bin/bash -G sudo nuovo_admin passwd nuovo_admin usermod -aG docker utente
ssh – Accesso remoto sicuro
ssh -i ~/.ssh/id_rsa user@server.example.com ssh -L 5432:localhost:5432 user@db-server.com ssh-copy-id -i ~/.ssh/id_rsa.pub user@server.example.com
ufw e iptables
ufw allow from 10.0.0.0/8 to any port 22 ufw deny 3306 iptables -L -n -v | grep DROP
7. Archivi e Compressione
tar – Archiviazione
tar -czf backup_$(date +%Y%m%d).tar.gz /var/www/ tar -xzf archivio.tar.gz -C /opt/restore/ tar -tzf archivio.tar.gz | head -20
rsync – Sincronizzazione file
rsync -avz --delete /var/www/ user@backup-server:/backups/www/ rsync -avz --progress -e "ssh -p 2222" /opt/app/ deploy@remote:/opt/app/
8. Ricerca e Diagnostica Avanzata
strace – Traccia chiamate di sistema
strace -p 1234 -e trace=network strace -ff -o /tmp/trace nginx
lsof – File aperti
lsof -i :80 lsof -u www-data | wc -l lsof +D /var/log/
dmesg – Messaggi kernel
dmesg -T | grep -i error | tail -20 dmesg --level=err,warn
cron – Task pianificati
crontab -e crontab -l -u www-data
Esempio di cron job per backup notturno:
0 2 * * * /opt/scripts/backup.sh >> /var/log/backup.log 2>&1
Troubleshooting Comuni
Problema: Disco pieno
Sequenza di comandi per diagnosticare e risolvere:
df -h du -sh /var/log/* | sort -rh | head -5 find /var/log -name "*.log" -size +100M journalctl --vacuum-size=500M
Problema: Server non risponde sulla porta
ss -tulnp | grep :80 systemctl status nginx ufw status curl -v localhost:80
Problema: Alta CPU o memoria
ps aux --sort=-%cpu | head -10 ps aux --sort=-%mem | head -10 top -bn1 -o %CPU | head -20
Problema: Connessione SSH rifiutata
systemctl status sshd grep "sshd" /var/log/auth.log | tail -20 ufw allow 22/tcp
Conclusione
Questi 50 comandi Linux essenziali rappresentano il nucleo delle competenze che ogni sysadmin deve padroneggiare. Non è sufficiente conoscerli teoricamente: è fondamentale esercitarsi regolarmente in ambienti di test, combinare i comandi in pipeline efficaci e comprendere le implicazioni di ciascuna operazione in un ambiente di produzione.

