Задний план: Я играю с мониторингом 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
.