Title: Quale processo utilizza un certo file o porta
Author: Sandro Tosi
Last modified: 2004-12-11
Utilizzeremo due strumenti molto potenti e potenzialmente pericolosi;
si consiglia di leggerne attentamente la man-page prima di usarli.
o Identificare il processo che utilizza una porta
# fuser -v -n <protocollo: tcp,udp> <porta>
# fuser -v <porta>/<protocollo>
Restituisce una lista di PID dei processi che usano quella porta
# lsof -i <TCP|UDP>:<porta>
Restituisce una riga per ogni processo che usa quella porta
# netstat -lutnp (da root)
Mostra il PID ed i nome dei processi in ascolto su porte TCP ed
UDP
# /proc/<PID>
E` il metodo usato da fuser: nel filesystem virtuale ``procfs''
sono contenute tutte le informazioni sui processi, comprese le
porte utilizzate...
o Identificare il processo che utilizza un file
# lsof <file>
Per esempio
# lsof /lib/ld-2.3.2.so
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
bash 1047 morph mem REG 3,2 90144 162250 /lib/ld-2.3.2.so
sh 1050 morph mem REG 3,2 90144 162250 /lib/ld-2.3.2.so
[ ... cut ... ]
WindowMak 1162 morph mem REG 3,2 90144 162250 /lib/ld-2.3.2.so
ssh-agent 1208 morph mem REG 3,2 90144 162250 /lib/ld-2.3.2.so
lsof, eseguito da solo, restituisce tutti i file aperti con
relativo processo; Linux considera file anche le porte di rete,
socket, etc.
# fuser <file>
Per esempio
# fuser /lib/ld-2.3.2.so
/lib/ld-2.3.2.so: 1m 225m 501m [ ... cut ... ]
1627m 1636m 2364m
# /proc
Come indicato prima.
Il caso tipico di utilizzo e` quando non si riesce a smontare un
device in quanto risulta in uso. Solitamente si tratta di una shell
rimasta aperta in una directory all'interno del mountpoint del
device. L'utilizzo degli strumenti indicati consente di
identificare il processo in uso ed effettuare le necessarie
operazioni (kill o altro).
|