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

let lsof показывает большую длину fd

Когда я проверяю процесс, который может использовать более 10000 файловых дескрипторов, lsof показывает только 4 цифры. (то есть может показывать только 9999)

Когда больше 10000, он начинается со звездочки. Например:

COMMAND   PID USER   FD   TYPE    DEVICE SIZE/OFF      NODE NAME
a.out     29944 root 9995u  IPv6 846704101      0t0       TCP 192.168.1.1:rtsp->192.168.1.2:50609 (ESTABLISHED)
a.out     29944 root 9996u  IPv6 846706748      0t0       TCP 192.168.1.1:rtsp->192.168.1.3:50634 (ESTABLISHED)
a.out     29944 root 9997u  IPv6 846708259      0t0       TCP 192.168.1.1:rtsp->192.168.1.4:50657 (ESTABLISHED)
a.out     29944 root *000u  IPv6 846710907      0t0       TCP 192.168.1.1:rtsp->192.168.1.5:50682 (ESTABLISHED)
a.out     29944 root *002u  IPv6 846714817      0t0       TCP 192.168.1.1:rtsp->192.168.1.6:50732 (ESTABLISHED)
a.out     29944 root *003u  IPv6 846720366      0t0       TCP 192.168.1.1:rtsp->192.168.1.5:50763 (ESTABLISHED)
a.out     29944 root *004u  IPv6 846722078      0t0       TCP 192.168.1.1:rtsp->192.168.1.6:50785 (ESTABLISHED)
a.out     29944 root *005u  IPv6 846735778      0t0       TCP 192.168.1.1:rtsp->192.168.1.6:50905 (ESTABLISHED)
a.out     29944 root *006u  IPv6 846736777      0t0       TCP 192.168.1.1:rtsp->192.168.1.16:50930 (CLOSE_WAIT)

Как я могу получить дополнительную информацию (больше цифр)?

Или какую команду я могу использовать для сбора всех файловых дескрипторов процесса?

Поскольку я столкнулся с как-то похожая проблема, Я тоже хотел поделиться своими выводами. Я провел небольшое исследование относительно Пользовательский вывод lsof и обнаружил, что

Параметры внутреннего форматирования lsof довольно ограничены ...

Однако после прочтения справочной страницы о ВЫВОД, ВЫХОД ДЛЯ ДРУГИХ ПРОГРАММ И в Другой обсуждения Я научился исключать определенные типы файловых дескрипторов (FD), т.е.

lsof -u ${USER} -a -d "^mem,^cwd,^rtd,^txt"

или как ограничить вывод lsof только числовыми FD, т.е.

lsof -u ${USER} -a -d "0-999999"

Чтобы перечислить только числовые FD для определенного идентификатора процесса (PID) и для дальнейшей обработки в другой программе, я использовал следующий подход

lsof -p ${PID} -a -d "0-999999" -Ff

Я еще не создавал и не тестировал его для большего количества FD, но, возможно, он поможет собрать все интересующие вас дескрипторы.