Qual è la differenza tra `lsof -p <pid> | wc -l` e `ls / proc / <pid> / fd | wc -l`?


13

Background: sto giocando con il monitoraggio dell'ulimit per l'esecuzione di processi per un determinato utente. (Di tanto in tanto avevo visto processi che stavano iniziando con un limite errato.) Ho chiesto a un paio di guru Linux autodidatti, e uno ha suggerito lsof -p <pid>, mentre l'altro ha suggerito ls /proc/<pid>/fd, ma nessuno dei due era positivo sul quale riflette più accuratamente il conteggio effettivo verso il massimo limite di file aperti per un processo.

Quindi, che cos'è?

lsof -p <pid> | wc -l

O

ls /proc/<pid>/fd | wc -l

Si prega di approfondire la differenza. Grazie!


3
Sembra fare i compiti.
— ewwhite,

1
Non i compiti. Aggiunta una spiegazione migliore. Avevo letto le lsofpagine man e, mentre sospettavo che la risposta fosse un file mappato in memoria, volevo la conferma di una persona più esperta.
— Jared,

Risposte:


10

lsofti darà anche file .so mappati in memoria - che tecnicamente non è lo stesso di un file handle su cui l'applicazione ha il controllo. /proc/<pid>/fdè il punto di misurazione per i descrittori di file aperti - tuttavia: menzionato nella pagina proc-man - se il thread principale di un programma multithread è terminato, questa directory non sarà disponibile.

lsof -p <pid> | grep -v mem | egrep -v '^COMMAND PID' | wc -lti mostrerà gli stessi articoli di ls /proc/<pid>/fd | wc -l.

Le mappe di memoria sono disponibili in /proc/<pid>/maps.


La lsofsi dà quasi la stessa uscita, ma include anche cwd, rtde txtdescrittori di file.
— Ian Bamforth,

Si noti inoltre che il numero di spazi tra COMMANDe PIDpuò variare. Sostituisci gli spazi con [[:space:]]*per renderlo più generale.
— Ian Bamforth,

Ho trovato anche lsof -a -p <pid> -d ^mem -d ^cwd -d ^rtd -d ^txt -d ^DEL | wc -l qui , mentre lsofin Android shell ( adb shell) non supporta -ae -d. Quindi finalmente uso la versione di Kvisle.
— Weekend
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.