В чем разница между `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
,