linux – 如何在客户端断开连接后阻止samba持有文件锁?

前端之家收集整理的这篇文章主要介绍了linux – 如何在客户端断开连接后阻止samba持有文件锁?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在这里,我有一个Samba服务器(Debian 5.0),它被配置为托管 Windows XP配置文件.

客户端连接到此服务器并直接在samba共享上处理其配置文件(该配置文件不会在本地复制).

时不时地,客户端可能无法正常关闭,因此Windows不会释放文件锁.在查看samba锁定表时,我们可以看到许多文件仍然被锁定,即使客户端已不再连接.在我们的例子中,这似乎发生在Mozilla Thunderbird和Firefox创建的锁定文件中.以下是samba锁定表的示例:

# smbstatus -L | grep DENY_ALL | head -n5
Pid          Uid        DenyMode   Access      R/W        Oplock           SharePath   Name   Time
--------------------------------------------------------------------------------------------------
15494        10345      DENY_ALL   0x3019f     RDWR       EXCLUSIVE+BATCH  /home/CORP/user1   app.profile/user1.thunderbird/parent.lock   Mon Nov 22 07:12:45 2010
18040        10454      DENY_ALL   0x3019f     RDWR       EXCLUSIVE+BATCH  /home/CORP/user2   app.profile/user2.thunderbird/parent.lock   Mon Nov 22 11:20:45 2010
26466        10056      DENY_ALL   0x3019f     RDWR       EXCLUSIVE+BATCH  /home/CORP/user3   app.profile/user3.firefox/parent.lock   Mon Nov 22 08:48:23 2010

我们可以看到文件是由Windows打开的,并强加了DENY_ALL锁.

现在,当客户端重新连接到此共享并尝试打开这些文件时,samba表示它们已被锁定并拒绝访问.

有没有办法解决这种情况或者我错过了什么?

编辑:我们希望避免在samba服务器上禁用文件锁,因为有充分的理由启用它们.

解决方法

以下步骤帮助我在很多场合解决了这个问题:

>登录samba服务器.>运行“smbstatus”.>找到锁定文件的进程的pid在输出的第三部分.>验证它是否与预期的用户和主机名匹配在smbstatus输出的第一和第二部分.>运行“ps -ef”,看看带有该pid的smbd有多长一直在跑.>如果它在计算机上次运行之前一直在运行重启,这是一个遗留下来的smbd.杀死只有一个smbd.(并确保你得到正确的 – 它应该是一个父母的pid不等于1.)

原文链接:https://www.f2er.com/linux/400791.html

猜你在找的Linux相关文章