我只是想知道。我在两个不同的服务器上有两个进程。这些进程将信息写入同一个文件,并通过fcntl使用锁定进行同步。如果其中一个进程将被中止并拥有文件锁定,会发生什么?如何通知NFS服务器此进程已终止?
阅读http://man7.org/linux/man-pages/man2/fcntl.2.html
如果NFSv4客户端丢失,则记录锁定和NFS Linux 3.12之前与服务器联系一段时间(定义为超过90没有通信的秒),它可能会丢失并重新获得锁定却从未意识到这一事实。(之后的一段时间假设失去联系被称为NFSv4租赁时间。在Linux上NFS服务器,这可以通过查看/proc/fs/nfsd/nfsv4leasetime,它以秒表示周期。此文件的默认值为90。)这种情况可能有数据损坏的风险,因为另一个进程可能在中获取锁定并执行文件I/O。
自Linux 3.12以来,如果NFSv4客户端与服务器失去联系,则任何"认为"持有锁的进程对文件的I/O将失败直到该进程关闭并重新打开文件。内核参数,nfs.recover_lost_locks,可以设置为1以获得3.12之前的版本行为,客户端将尝试在与服务器重新建立联系。因为随之而来的风险如果数据损坏,此参数默认为0(已禁用)。
若进程终止,那个么进程持有的所有锁都将被释放。
我认为这是你所期望的答案