Страница 1 из 1

Как временно освободить файл?

СообщениеДобавлено: 12 янв 2004, 16:41
Сергей Черевков
Проблема такая:
во время рабочего дня нужно срочно, пополнить некоторую базу (или несколько) на сервере NetWare 5.1, для этого ее нужно перевести в эксклюзивный режим, т.е. нужно что-бы пользователи не занимали файл или лучше все файлы в некоторой директории.

Можно-ли временно закрыть доступ к директории всем пользователям, так что-бы файлы никто не занимал?

СообщениеДобавлено: 12 янв 2004, 17:34
Андрей Тр. aka RH
А что, временно закрыть им доступ назначением соответствующих прав разве нельзя ?

СообщениеДобавлено: 12 янв 2004, 17:40
Сергей Черевков
Андрей Тр. aka RH писал(а):А что, временно закрыть им доступ назначением соответствующих прав разве нельзя ?


Т.е. группе пользователей убрать все права на директорию и они сами отваляться. Так?

СообщениеДобавлено: 12 янв 2004, 17:49
Андрей Тр. aka RH
Ну по ситуации там, смотря как они назначены .. в общем, да - явно назначить им нулевые права, потом проверить, что все получилось как и задумано. Они этого каталога и видеть не будут.

СообщениеДобавлено: 12 янв 2004, 17:58
Сергей Черевков
Андрей Тр. aka RH писал(а):Они этого каталога и видеть не будут.


Это и ежу понятно что каталога они видеть не будут, но если какие-то файлы из каталога уже заняты пользователями они освободяться?

СообщениеДобавлено: 13 янв 2004, 10:29
Антон Бурмистров
Может быть и не самый лучший вариант, но я делаю так.
1. DISABLE LOGIN
2. Смотришь, кто юзает файл
3. CLEAR STATION *
4. Производишь нужные операции
5. ENABLE LOGIN

В принципе имея права оператора консоли отключать пользователей можно и через разные проги, но винды имею тенденцию восстанавливать соединение и без disable login бывает не обойтись.

СообщениеДобавлено: 13 янв 2004, 11:15
Сергей Черевков
Антон Бурмистров писал(а):1. DISABLE LOGIN
2. Смотришь, кто юзает файл
3. CLEAR STATION *
4. Производишь нужные операции
5. ENABLE LOGIN


Это слишком радикально и не быстро. Нужно освободить всего пару файлов, а не отключать пользователей.

СообщениеДобавлено: 13 янв 2004, 11:21
Аркадий Глазырин
Антон Бурмистров писал(а):В принципе имея права оператора консоли отключать пользователей можно и через разные проги, но винды имею тенденцию восстанавливать соединение и без disable login бывает не обойтись.


Поправка. Не "винды", а Client32.

СообщениеДобавлено: 13 янв 2004, 11:22
Аркадий Глазырин
Сергей Черевков писал(а):Это слишком радикально и не быстро. Нужно освободить всего пару файлов, а не отключать пользователей.


А как ты освободишь не отключив постоянно подключающегося юзера?

СообщениеДобавлено: 13 янв 2004, 11:36
Алексей Волков
Можно использовать WhoUse (можно скачать с netware.nwsoft.ru). Очень удобная штука, позволяет и DISABLE LOGIN выставить и файл закрыть...

СообщениеДобавлено: 13 янв 2004, 15:19
Аркадий Глазырин
Alexi писал(а):Можно использовать WhoUse (можно скачать с netware.nwsoft.ru). Очень удобная штука, позволяет и DISABLE LOGIN выставить и файл закрыть...


WhoUse это всего лишь комбайн, который делает то же, что уже описано, но более удобно чем руками.

Я думаю, без вмешательства в программный код

СообщениеДобавлено: 14 янв 2004, 03:02
Boris Morozov
не обойтись.
Налицо явное желание нарушить принципы блокировки файлов. Вы не можете принудительно закрыть файлы извне, не завершив аварийно программу, которая пытается к ним обратится. Если ваша программа понимает какой-то сигнал на временное закрытие, то у вас получится.
Не обязательно это должна быть прикладная программа.
Например Pervasive начиная с версии 2000SP3 (может и раньше) так умеет делать при помощи команд butil -startbu и butil -endbu выданных на сервере в начале и конце архивации. При этом прикладная программа продолжает работать, как ни в чем не бывало, а изменения базы пишутся во временный файл, который затем тихенько и незаметно объединяется с основным.

С обычными файлами или базами, которые так не умеют, вряд ли что вам удасться, кроме как рубить коннекты с соответствующими программами пользователей.