LINUX.ORG.RU

нужна простая альтернатива fuser,lsof


0

1

Проблема такая - необходимо сделать архив трейсов, при этом, каждый файл неоходимо проверить на использование.

написал простой bash-скрипт с использованием fuser.., но наткнулся на проблему - на одном из серваков файлов больше миллиона. если fuser работает со скоростью 0,04сек*1000000

Короче, есть ли более облегченная утилита, которая бы просто возвращала 1 или 0 об использовании файла каким-либо процессом. Решил попробовать разобраться сам. Смотрел fcntl(). Как понял, во флагах F_GETFL проверить этого нельзя.

Что делать, куда плыть?

> которая бы просто возвращала 1 или 0 об использовании файла каким-либо процессом

Если тебя интересует конкретный процесс, то команда
ls -l /proc/pid/fd
выдаст перечень открытых в этом процессе файлов.
Вместо слова pid нужно поставить число...

Manhunt ★★★★★
()
Ответ на: комментарий от markevichus

насколько я понимаю inotify сообщает о событии с файлом в данный момент и не может сказать «работают» ли с файлом какие то процессы....

del_petka
() автор топика
Ответ на: комментарий от Manhunt

еще пологаю, что скан по /proc будет отрабатывать дольше, чем fuser. да и меня интересует в приципе, любой процесс...

del_petka
() автор топика

это конечно банально, но ключик -n у fuser/lsof пробовал? и я так понимаю, ты вызываш fuser на каждый файл в отдельности? в таком случае, что мешает подобрать нужные ключики к lsof и просто распарсить его выхлоп?

beastie ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.