使用smbclient锁

时间:2013-09-17 08:31:48

标签: linux smb

here,我得到以下信息......

  

lock [filenum] [r | w] [hex-start] [hex-len]
  此命令取决于支持CIFS UNIX扩展的服务器,如果服务器不支持,则将失败。尝试在给定范围内设置给定类型的POSIX fcntl锁。用于内部Samba测试目的。

但是,我找不到这个命令的例子....
根据我的理解,[filenum]是文件名,[r | w]是读和/或写锁 但我不知道[hex-start]和[hex-len]是什么..... 有人可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

lock是使用fcntl()进行咨询文件锁定的简单实现。 (事实上​​,几年前,我编写了一个几乎完全相同的命令行实用程序,它在对指定文件进行锁定时执行单个命令或脚本。)

如果服务器启用了支持,则

fcntl()锁定适用于远程文件系统。特别是,Linux上的SambaNFS服务器确实具备此功能。在NFS上,它通常是配置错误或完全禁用,因此基于硬链接或锁定目录的锁定方案更常见。不幸的是

从技术上讲,fcntl()锁不是文件锁,而是记录锁:文件中的任何字节范围都可以单独锁定,即使是不同的进程也是如此。最常见的用法是锁定整个文件(通过指定零开始和长度,因此即使附加文件也会应用锁定)。如果您省略lockhex-start参数,hex-length命令就会执行此操作。

如果确实将hex-start指定为lock,则它指的是锁定区域开始的偏移量。如果省略或使用零hex-length,则锁定将应用于文件的其余部分,即使文件被追加或截断也是如此。如果您还指定了hex-length,则锁定适用于偏移[hex-starthex-start + hex-length)。 hex-前缀显然是指hexadecimal中指定的值。

锁是建议性的,因为它们不会阻止对文件的任何类型的访问。每个应用程序都需要调用fcntl(),以获取文件的建议锁定;如果所需的锁与同一文件上的其他锁冲突,则调用将阻止(F_SETLKW)或失败(F_SETLK)。

有问题吗?