Ci sono due motivi lsof | wc -l
non conta i descrittori di file. Uno è che elenca cose che non sono file aperti, come librerie collegate dinamicamente caricate e directory di lavoro correnti; devi filtrarli. Un altro è quel lsof
richiede un po' di tempo per l'esecuzione, quindi possono mancare file aperti o chiusi mentre è in esecuzione; pertanto il numero di file aperti elencati è approssimativo. Guardando /proc/sys/fs/file-nr
ti dà un valore esatto in un particolare momento.
cat /proc/sys/fs/file-nr
è utile solo quando hai bisogno della cifra esatta, principalmente per verificare l'esaurimento delle risorse. Se vuoi elencare i file aperti, devi chiamare lsof
, o utilizzare un metodo equivalente come la pesca a strascico /proc/*/fd
manualmente.
Le informazioni sul processo sono mantenute dinamicamente dal sistema nelle directory sotto /proc. Ad esempio, il processo con PID 1234 avrà una directory chiamata /proc/1234.
Ci sono un bel po' di informazioni lì dentro, ma in questo momento sei interessato a /proc/1234/fd sottocartella.
NOTA:è necessario disporre dei permessi di root per visualizzare o aprire i file per i processi che non si possiedono, così come per i processi SetUID.
Esempio:
[email protected]:/proc# ls -l 2443/fd
total 0
lr-x------ 1 johan johan 64 Feb 27 10:26 0 -> pipe:[13637]
l-wx------ 1 johan johan 64 Feb 27 10:26 1 -> /home/johan/.xsession-errors
lrwx------ 1 johan johan 64 Feb 27 10:26 10 -> anon_inode:[eventfd]
lrwx------ 1 johan johan 64 Feb 27 10:26 11 -> anon_inode:[eventfd]
lrwx------ 1 johan johan 64 Feb 27 10:26 12 -> socket:[39495]
lrwx------ 1 johan johan 64 Feb 27 10:26 13 -> anon_inode:[eventfd]
lr-x------ 1 johan johan 64 Feb 27 10:26 14 -> anon_inode:inotify
lrwx------ 1 johan johan 64 Feb 27 10:26 15 -> anon_inode:[eventfd]
l-wx------ 1 johan johan 64 Feb 27 10:26 16 -> pipe:[37885]
lr-x------ 1 johan johan 64 Feb 27 10:26 17 -> pipe:[37886]
l-wx------ 1 johan johan 64 Feb 27 10:26 2 -> /home/johan/.xsession-errors
l-wx------ 1 johan johan 64 Feb 27 10:26 21 -> pipe:[167984]
lr-x------ 1 johan johan 64 Feb 27 10:26 22 -> pipe:[167985]
l-wx------ 1 johan johan 64 Feb 27 10:26 23 -> pipe:[170009]
lr-x------ 1 johan johan 64 Feb 27 10:26 24 -> pipe:[170010]
lrwx------ 1 johan johan 64 Feb 27 10:26 3 -> anon_inode:[eventfd]
lr-x------ 1 johan johan 64 Feb 27 10:26 4 -> pipe:[14726]
lrwx------ 1 johan johan 64 Feb 27 10:26 5 -> socket:[14721]
l-wx------ 1 johan johan 64 Feb 27 10:26 6 -> pipe:[14726]
lrwx------ 1 johan johan 64 Feb 27 10:26 7 -> socket:[14730]
lrwx------ 1 johan johan 64 Feb 27 10:26 8 -> socket:[13984]
lrwx------ 1 johan johan 64 Feb 27 10:26 9 -> socket:[14767]
[email protected]:/proc# cat 2443/fdinfo/2
pos: 1244446
flags: 0102001
Dai anche un'occhiata al resto dei file sotto /proc... molte informazioni utili dal sistema risiedono qui.