Как отобразить открытые дескрипторы файлов, но не использующий lsof команда

Попробуйте это:

find ./ ! -name '*.c' | xargs -i cp {} dest_dir
48
27.02.2013, 02:50
2 ответа

Существует две причины lsof | wc -l не считает дескрипторы файлов. Каждый - это, это перечисляет вещи, которые не являются открытыми файлами, такими как загруженные динамически подключаемые библиотеки и текущие рабочие каталоги; необходимо фильтровать их. Другой - это lsof занимает время для выполнения, так может пропустить файлы, которые открыты или закрыты, в то время как это работает; поэтому количество перечисленных открытых файлов приблизительно. Взгляд на /proc/sys/fs/file-nr дает Вам точное значение в конкретном моменте времени.

cat /proc/sys/fs/file-nr только полезно, когда Вам нужно точное число, главным образом для проверки на исчерпание ресурса. Если Вы хотите перечислить открытые файлы, необходимо звонить lsof, или используйте некоторый эквивалентный метод, такой как траление /proc/*/fd вручную.

60
27.01.2020, 19:34
  • 1
    Привет благодарит дать хорошему объяснению Gilles. Я попробовал ls/proc / */fd и получил весь открытый fd's в то время. Его создание вывода с некоторым цветовым кодированием, я должен буду просто посмотреть на руководство. –  dimas 27.02.2013, 03:40
  • 2
    @dimas /proc/*/fd каталоги содержат символьные ссылки на открытые файлы. Для визуального контроля использовать ls -l. Для автоматизированной обработки использовать readlink извлечь цель ссылки. –  Gilles 'SO- stop being evil' 27.02.2013, 03:44
  • 3
    Просто используйте ls-l, но я буду экспериментировать с readlink. Я попробовал другой/proc/PID/maps и другие опции, как указано здесь kernel.org/doc/man-pages/online/pages/man5/proc.5.html. Еще раз спасибо за дополнительную информацию –  dimas 27.02.2013, 03:55
  • 4
    /proc/sys/fs/file-nr дает мне 3872 (и два других числа). Как это может быть количеством файлов, которые я имею открытый, если ulimit-n показывает мне 1024? –  Thorsten Staerk 19.05.2015, 15:24
  • 5
    @ThorstenStaerk Все настройки setrlimit (системный вызов, лежащий в основе ulimit окружите команду), для каждого процесса. Они влияют только на процесс, который выполняет вызов (и косвенно процессы что это более поздние ветвления). –  Gilles 'SO- stop being evil' 19.05.2015, 15:51

Информация процесса хранится динамично системой в каталогах под/proc. Например, процесс с PID 1234 будет иметь каталог названным/proc/1234.

Существует довольно мало информации там, но прямо сейчас Вы интересуетесь/proc/1234/fd подкаталогом.

Примечание: У Вас должны быть корневые полномочия просмотреть или открыть файлы для процессов, которыми Вы не владеете, а также для процессов SetUID.

Пример:

root@johan-HP-ProBook-6560b-LG654EA-ACQ:/proc# ls -l 2443/fd
total 0
lr-x------ 1 johan johan 64 Feb 27 10:26 0 -> pipe:[13637]
l-wx------ 1 johan johan 64 Feb 27 10:26 1 -> /home/johan/.xsession-errors
lrwx------ 1 johan johan 64 Feb 27 10:26 10 -> anon_inode:[eventfd]
lrwx------ 1 johan johan 64 Feb 27 10:26 11 -> anon_inode:[eventfd]
lrwx------ 1 johan johan 64 Feb 27 10:26 12 -> socket:[39495]
lrwx------ 1 johan johan 64 Feb 27 10:26 13 -> anon_inode:[eventfd]
lr-x------ 1 johan johan 64 Feb 27 10:26 14 -> anon_inode:inotify
lrwx------ 1 johan johan 64 Feb 27 10:26 15 -> anon_inode:[eventfd]
l-wx------ 1 johan johan 64 Feb 27 10:26 16 -> pipe:[37885]
lr-x------ 1 johan johan 64 Feb 27 10:26 17 -> pipe:[37886]
l-wx------ 1 johan johan 64 Feb 27 10:26 2 -> /home/johan/.xsession-errors
l-wx------ 1 johan johan 64 Feb 27 10:26 21 -> pipe:[167984]
lr-x------ 1 johan johan 64 Feb 27 10:26 22 -> pipe:[167985]
l-wx------ 1 johan johan 64 Feb 27 10:26 23 -> pipe:[170009]
lr-x------ 1 johan johan 64 Feb 27 10:26 24 -> pipe:[170010]
lrwx------ 1 johan johan 64 Feb 27 10:26 3 -> anon_inode:[eventfd]
lr-x------ 1 johan johan 64 Feb 27 10:26 4 -> pipe:[14726]
lrwx------ 1 johan johan 64 Feb 27 10:26 5 -> socket:[14721]
l-wx------ 1 johan johan 64 Feb 27 10:26 6 -> pipe:[14726]
lrwx------ 1 johan johan 64 Feb 27 10:26 7 -> socket:[14730]
lrwx------ 1 johan johan 64 Feb 27 10:26 8 -> socket:[13984]
lrwx------ 1 johan johan 64 Feb 27 10:26 9 -> socket:[14767]

root@johan-HP:/proc# cat 2443/fdinfo/2
pos:    1244446
flags:  0102001

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

25
27.01.2020, 19:34

Теги

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