Talvolta può essere estremamente utile, ad esempio in presenza di errori del tipo device is busy, individuare quali processi stiano accedendo ad un particolare file o filesystem. Per ottenere ciò è sufficiente utilizzare il comando fuser nella sua più banale forma, come ad esempio:
fuser filename.txt /home/m4xp0w3r/filename.txt: 12768
Questo numero (12768) non è altro che l’ID del processo che sta accedendo al file specificato.Tramite l’opzione -u è possibile determinare l’owner del processo, ad esempio:
fuser -u /var/run/sendmail.pid /var/run/sendmail.pid: 2507 (root)
Per ottenere altre informazioni sull’operazione in corso, è possibile utilizzare l’opzione -v del comando ottenendo ad esempio:
fuser -v auth.log UTENTE PID ACCESSO COMANDO /var/log/auth.log: syslog 1058 F.... rsyslogd
Questo comando mostra l’utente proprietario del processo, l’ID del processo, come il file sia stato acceduto (in questo caso la lettera f indica che il file è aperto) e il comando che è stato utilizzato per accedervi, in questo caso un semplice more.
Inoltre, per terminare tutti quei processi che accedono un particolare file, è possibile utilizzare l’opzione -k in questo modo (se desiderato, in congiunzione con l’opzione -i, verrà richiesta conferma per ogni kill che verrà eseguito):
fuser -k filename.txt
Per quello che riguarda i filesystem, è necessario utilizzare il comando con l’opzione -m, che restituisce qualcosa del tipo:
fuser -m /dev/sdal /dev/sdal: 2935rce 2968m 2984rce 3014rce 3015rce 3063rce 3066rce 3068rce [ ... ] 3356rce 10054rce 10055rce 1013lrce 1024lm 10293rc
La maggior parte di questi processi accedono la directory corrente (lettera e), sono in esecuzione (lettera c) e coinvolgono directory di root (lettera r) mentre altri stanno utilizzando shared library o memory-mapped file (lettera m). Infine è anche possibile utilizzare il comando fuser per monitorare porte di rete (cambiando il namespace dell’operazione di default del comando), mediante l’opzione -n «protocol» <port_number>, come mostrato di seguito:
fuser -n tcp 22 22/tcp: 2399
che di fatto mostra quali processi stiano utilizzando il numero di porta specificato, operazione molto utile in presenza di errori del tipo port is busy. che di fatto mostra quali processi stiano utilizzando il numero di porta specificato, operazione molto utile in presenza di errori del tipo port is busy.
Pingback: La potenza di lsof - prometheusproject