Форум русскоязычного сообщества Ubuntu


Хотите сделать посильный вклад в развитие Ubuntu и русскоязычного сообщества?
Помогите нам с документацией!

Автор Тема: lsof и открытые файлы  (Прочитано 2468 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн netum

  • Автор темы
  • Любитель
  • *
  • Сообщений: 82
    • Просмотр профиля
lsof и открытые файлы
« : 03 Марта 2011, 04:19:29 »
Доброго времени суток. Есть сервер Ubuntu 9.04. Открываю две консоли. В первой запускаю mc и копирую файл "тест" из папки "1" в папку "2". Во второй консоли делаю lsof /путь/к/папке/2/тест В ответ вижу инфу какая программа, юзер, размер и т.п.
Папка "2" расшарена. Повторяю процедуру, только копирую файл по сети в папку "2". В ответ на "лсоф" ничего. При этом в соседней консоли вижу, что в папку "2" успешно копируется файл, увеличивая размер по-мере копирования.
А ситуация такая: есть расшареная папка которую периодически проверяет скрипт. Если в ней есть файлы, они обрабатываются. Нужно сделать проверку на то, что файл не в процессе копирования в расшареную папку прежде, чем обрабатывать его.

Оффлайн vasilisc

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 2563
  • г.Северодвинск - строим АПЛ
    • Просмотр профиля
    • Авторские статьи об OpenSource
Re: lsof и открытые файлы
« Ответ #1 : 03 Марта 2011, 10:00:08 »
я бы пошел через inotify, который может сообщить о доступе к файлу и как именно был организован доступ - файл прочли, в файл записали, файл просто открыли/закрыли тд и тп
и/или подключил бы в помощь fuser
в википедии даже пример есть
Цитировать
if fuser -s /dev/ttyS1; then :; else something; fi — вызывает выполнение something, если никакой другой процесс не использует /dev/ttyS1.
« Последнее редактирование: 03 Марта 2011, 10:36:37 от vasilisc »

Оффлайн netum

  • Автор темы
  • Любитель
  • *
  • Сообщений: 82
    • Просмотр профиля
Re: lsof и открытые файлы
« Ответ #2 : 04 Марта 2011, 02:22:44 »
Спасибо за подсказки, но к сожалению "фюзер" ведёт себя так же, как и "лсоф". При копировании локально всё отображается, при копировании в расшареную папку - тишина. inotify - при беглом осмотре ртфм напугал самим процессом работы с ним :(
UP: проблему решил использованием smbclient для проверки открыт ли файл по сети.
« Последнее редактирование: 04 Марта 2011, 04:41:59 от netum »

Оффлайн vasilisc

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 2563
  • г.Северодвинск - строим АПЛ
    • Просмотр профиля
    • Авторские статьи об OpenSource
Re: lsof и открытые файлы
« Ответ #3 : 04 Марта 2011, 08:54:29 »
если не жалко приведите здесь ваш скрипт для потомков  :coolsmiley:

Оффлайн netum

  • Автор темы
  • Любитель
  • *
  • Сообщений: 82
    • Просмотр профиля
Re: lsof и открытые файлы
« Ответ #4 : 05 Марта 2011, 03:55:00 »
Мне на TCL сподручней, т.ч. вот что получилось:
#!/usr/bin/tclsh
#составляем список файлов
set flist [exec dir -m ./in/]
#убираем запятые в списке
set flist [string map {"," ""} $flist]
#обрабатываем файлы по списку
foreach file $flist {
#получаем имя файла без расширения
    if {[regexp -nocase -- {(.*?)\.wmv$} $file g infa]} {
#проверяем есть ли данный файл в списке файлов открытых через самбу
    set lock_file [catch {exec smbstatus | grep $file} result]
#если нет обрабатываем
    if {$lock_file} {тут идёт обработка}
    }
}

Оффлайн vasilisc

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 2563
  • г.Северодвинск - строим АПЛ
    • Просмотр профиля
    • Авторские статьи об OpenSource
Re: lsof и открытые файлы
« Ответ #5 : 05 Марта 2011, 08:16:02 »
для поисковиков и пользователей оттуда
проверка файла samba
проверка файла smbstatus
скрипт smbstatus
аналог lsof

Тему можно закрыть

 

Страница сгенерирована за 0.056 секунд. Запросов: 25.