Linux SMB客户端锁的使用
从中,我得到了以下信息 锁定[filenum][r|w][hex start][hex len]Linux SMB客户端锁的使用,linux,smb,Linux,Smb,从中,我得到了以下信息 锁定[filenum][r|w][hex start][hex len] 此命令取决于支持CIFS UNIX扩展的服务器,如果服务器不支持,则该命令将失败。尝试在给定范围内设置给定类型的POSIX fcntl锁。用于内部Samba测试目的 但是,我没有找到此命令的示例…… 据我所知,[filenum]是文件名,[r|w]是读写锁。 但我不知道[hex start]和[hex len]是什么。。。。。 有人能帮上忙吗?lock是使用。(事实上,几年前,我编写了一个几乎相同的
此命令取决于支持CIFS UNIX扩展的服务器,如果服务器不支持,则该命令将失败。尝试在给定范围内设置给定类型的POSIX fcntl锁。用于内部Samba测试目的 但是,我没有找到此命令的示例……
据我所知,[filenum]是文件名,[r|w]是读写锁。
但我不知道[hex start]和[hex len]是什么。。。。。
有人能帮上忙吗?
lock
是使用。(事实上,几年前,我编写了一个几乎相同的命令行实用程序,它在锁定指定文件的同时执行单个命令或脚本。)
fcntl()
如果服务器启用了支持,则远程文件系统可以使用锁。特别是,Linux上的服务器肯定有这种能力。在NFS上,它通常被错误配置或完全禁用,因此基于硬链接或锁定目录的锁定方案更常见。可悲的是
从技术上讲,fcntl()
锁不是文件锁,而是记录锁:文件中的任何字节范围都可以单独锁定,即使是通过不同的进程。最常见的用法是锁定整个文件(通过指定零开始和长度,这样即使附加了文件,也会应用锁定)。如果同时省略hex start
和hex length
参数,则lock
命令将完全执行此操作
如果确实指定了从十六进制开始
到锁定
,则它指的是锁定区域开始的偏移量。如果省略或使用零十六进制长度
,则锁定将应用于文件的其余部分,即使文件被追加或截断。如果还指定了hex-length
,则锁将应用于偏移量[hex-start
,hex-start
+hex-length
)。前缀显然是指中指定的值
锁是建议性的,因为它们不会阻止对文件的任何类型的访问。每个应用程序都需要调用fcntl()
,以获得文件上的建议锁;如果所需的锁与同一文件上的其他锁冲突,则调用将阻塞(F_SETLKW
)或失败(F_SETLK
)
问题?在我的情况下,当我连接到Windows PC并尝试锁定命令(如
lock file\u name r 0 0
)时,它返回lock failed 0:NT\u STATUS\u UNSUCCESSFUL
。这是Windows PC上的问题还是命令上的问题?@Michaellow:我无法判断该错误是来自smbclient还是来自服务器。请确保文件名不为空或未被其他程序打开,请尝试锁定文件名r,并锁定文件名r 0 9。