Proviamo a intravedere in modo più approfondito cosa succede sul sistema quando un processo è in esecuzione. Viene richiesto l'uso di tool di debugging piuttosto evoluti, che comunque danno informazioni interessanti anche utilizzandoli nelle loro funzionalità base.
1 - Aprire una shell come root. Su questa shelle eseguire un tail -f /var/log/messages
. (Cosa fa questo comando?)
2 - Aprire una seconda shell e da questa lanciare comandi di debugging per:
- Visualizzare l'elenco delle librerie condivise utilizzate dal comando tail in esecuzione.
- Visualizzarne l'elenco dei file aperti
- Tracciarne le chiamate di sistema.
3 - Eseguire queste operazioni sia mentre tail non visualizza nuovi dati, sia quando il log cresce (per smuoverlo basta provare a fare su, in una terza console, e dare o non dare la password corretta).
4 - Provare a spiegare e farsi spiegare quanto si è visto.
Informazioni utili
whereis tail
Visualizza il PATH completo di tail
ps
Visualizza i processi in esecuzione sul sistema
grep
Insieme all'uso della pipe ( | ) filtra l'output di un comando visualizzando solo le righe che contengono specificati pattern.
Comandi necessari
ldd /usr/bin/tail
Visualizza le librerie condivise usate da tail
lsof | grep tail
Visualizza tutti i file aperti sul sistema, filtrando solo le righe relative a tail
strace -P PID
Visualizza in tempo reale le chiamate di sistema del processo con il PID specificato.
Strumenti e indicazioni su come eseguire il debugging delle applicazioni: strace, lsof, ldd.