Назад | Перейти на главную страницу

What's the difference between `lsof -p <pid> | wc -l и ls / proc /<pid>/ fd | wc -l`?</pid></pid>

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

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

lsof -p <pid> | wc -l

Или

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

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

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.