lsof против /proc/$PID/fd против ulimit -n

Я нашел достойное решение, используя Xephyr и VirtualGL !

Установите Xephyr и VirtualGL , затем запустите Xephyr с вашими предпочтительными настройками:

Xephyr -screen 1024x768 :1

Если все прошло хорошо, теперь вы сможете запускать исполняемые файлы с ускорением OpenGL в Xephyr!

DISPLAY=:1 vglrun -- glxgears

2
08.02.2019, 20:36
1 ответ

tl;dr ls -U /proc/PID/fd | wc -lсообщит вам число, которое должно быть меньше ulimit -n.

/proc/PID/fdдолжен содержать все дескрипторы файлов, открытые процессом, включая, помимо прочего, странные, такие как дескрипторы epollили inotify, «непрозрачные» дескрипторы каталогов, открытые с помощью O_PATH, дескрипторы, открытые с помощью signalfd()или memfd_create(), сокеты, возвращаемые accept(), и т. д.

Я не слишком хорошо lsofпользуюсь, но lsofтоже получает информацию от /proc. Я не думаю, что есть другой способ получить список файловых дескрипторов, открытых процессом в Linux, кроме procfsили путем присоединения к процессу с помощью ptrace.

В любом случае, текущая и корневая директория, mmapped-файлы (, включая собственные бинарные и динамические библиотеки )и управление терминалом процесса, не учитываются в лимите, установленном с помощью ulimit -n(RLIMIT_NOFILE), и они также не учитываются. появляются в /proc/PID/fd, если только процесс явно не держит их открытыми дескрипторами.

4
27.01.2020, 21:58

Теги

Похожие вопросы