Использование 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).

Вопросы?

Другие вопросы по тегам