Во многих случаях «lsof» не установлен на машинах, с которыми мне приходится работать, но «функция» lsof будет очень нужна (например, в AIX). : \
Есть ли какие-либо "lsof" подобные приложения в мире не-windows?
ОБНОВЛЕНИЕ: например: мне нужно знать, какие процессы используют каталог "/ home / username"?
process
open-files
administration
lsof
LanceBaynes
источник
источник
Ответы:
Я знаю
fuser
, посмотреть, если есть в вашей системе.источник
sudo fuser -vm / 2>&1 | awk '$3 ~ /f|F/' | less
может показать все процессы, имеющие открытые файлы в смонтированной файловой системе/
. Смотрите справочную страницу для конкретной помощи.sudo fuser -vm / 2>&1 | awk '$3 ~ /f|F/' | while read user pid flags rest; do printf '%10s %10s %10s %s\n' $user $pid $flags "$(</proc/$pid/cmdline)"; done | less
Unix Rosetta Stone является хорошим ресурсом для такого рода вопросов. Он упоминает несколько альтернатив для lsof (см. Ниже). Однако обратите внимание, что lsof является де-факто стандартным приложением для своей деятельности.
Если все, что вам нужно, это найти идентификаторы процессов, в которых открыт определенный файл, то вы можете использовать их
fuser
в любой POSIX-совместимой системе.В операционных системах с
/proc
каталогом вы можете запрашивать файлы, открытые процессом (в отличие отlsof
наиболее распространенного режима работы), через информацию в/proc
. Некоторые операционные системы имеют команды для этого:procfiles
поставляется с системой (начиная с AIX 5.2). См. Также Обновление и использование инструментов производительности AIX 5.2 и примеры команд lsof, pfiles, procfiles .pfiles
(существует с 2.5 ).источник
Если вы используете Solaris, альтернатива
lsof
, которая не установлена по умолчанию и может подавиться ZFS, являетсяpfiles
.например:
pfiles /proc/*
источник
Моя версия, с чуть меньшим количеством запущенных утилит:
По общему признанию, это может не обработать все угловые случаи, но работает в моем случае использования.
источник
Это должно сделать свое дело. Это даст все сопоставления дескриптора файла, кроме тех, которые:
Если вы уже знаете, что заботитесь только о сопоставлениях для определенных программ, вы можете вместо этого использовать что-то более похожее на:
источник
Иногда
lsof
устанавливается в/usr/sbin
Если
/usr/sbin
это не ваша часть$PATH
, вы можете пропустить команду, даже если она установлена.Проверьте это с
источник