В чем разница между `lsof -p <pid> | wc -l` и `ls / proc /<pid>/ fd | wc -l`?

Справочная информация: я играю с мониторингом ulimit для запуска процессов для конкретного пользователя. (Я иногда видел процессы, которые начинались с неправильного лимита.) Я попросил пару самоотверженных Linux-гуру, и один из них предложил lsof -p <pid>в то время как другой предложил ls /proc/<pid>/fd, но ни один из них не был положительным, что более точно отражает фактическое количество к максимальному количеству открытых файлов для процесса.

Итак, что это?

lsof -p <pid> | wc -l

Или же

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

Пожалуйста, уточните разницу. Спасибо!

1 ответ

lsof также предоставит вам отображенные в памяти.so-файлы, что технически не совпадает с дескриптором файла, который контролирует приложение. /proc/<pid>/fd является точкой измерения для дескрипторов открытых файлов - однако: упомянуто на странице proc-man - если основной поток многопоточной программы завершился, этот каталог будет недоступен.

lsof -p <pid> | grep -v mem | egrep -v '^COMMAND PID' | wc -l покажет вам те же предметы, что и ls /proc/<pid>/fd | wc -l,

Карты памяти доступны в /proc/<pid>/maps,

Другие вопросы по тегам