Использование smbclient lock
Отсюда я получил ниже информацию....
lock [filenum] [r | w] [hex-start] [hex-len]
Эта команда зависит от сервера, поддерживающего расширения CIFS UNIX, и потерпит неудачу, если сервер этого не сделает. Пытается установить блокировку POSIX fcntl указанного типа в заданном диапазоне. Используется для внутреннего тестирования Samba.
Тем не менее, я не могу найти пример для этой команды....
Из моего понимания, [filenum] - это имя файла, [r | w] - чтение и / или блокировка записи.
Но я понятия не имею, что такое [hex-start] и [hex-len]..... Кто-то может помочь?
1 ответ
lock
простая реализация принудительной блокировки файлов с использованием fcntl (). (Фактически, много лет назад я написал практически идентичную утилиту командной строки, которая выполняла одну команду или скрипт, удерживая блокировку указанного файла.)
fcntl()
блокировки работают для удаленных файловых систем, если на серверах включена поддержка. В частности, серверы Samba и NFS в Linux определенно имеют такую возможность. В NFS он обычно либо неправильно настроен, либо полностью отключен, поэтому схемы блокировки на основе жестких ссылок или каталогов блокировки более распространены. К сожалению.
Технически, fcntl()
блокировки - это не блокировки файлов, а блокировки записей: любой диапазон байтов в файле может быть заблокирован отдельно, даже различными процессами. Чаще всего используется блокировка всего файла (с указанием нулевого начала и длины, поэтому блокировка будет применяться, даже если файл добавлен). lock
Команда делает именно это, если вы пропустите оба hex-start
а также hex-length
параметры.
Если вы укажете hex-start
в lock
, это относится к смещению, где начинается область блокировки. Если вы опускаете или используете ноль hex-length
, тогда блокировка применяется к остальной части файла, даже если файл добавлен или урезан. Если вы также укажете hex-length
затем блокировка применяется к смещению [hex-start
, hex-start
+hex-length
). hex-
Префикс, очевидно, относится к значениям, указанным в шестнадцатеричном формате.
Блокировки носят рекомендательный характер, поскольку они не препятствуют доступу к файлу. Каждое приложение должно позвонить fcntl()
, чтобы получить консультативную блокировку файла; если требуемая блокировка вступит в конфликт с другими блокировками в том же файле, вызов будет заблокирован (F_SETLKW
) или не удалось (F_SETLK
).
Вопросы?