【问题标题】:Do flock locks reset after a system restart?系统重启后群锁会重置吗?
【发布时间】:2013-11-19 11:57:11
【问题描述】:

假设系统由于断电而意外断电。

当系统启动时,flock 是否总是被认为是“解锁”的?

在 Linux 上,flock 依赖于 fcntl(...)(文件描述符)。

换个方式问:系统第一次启动时,是不是不用手动调用flock -u <lock_filename>? (即来自 cron @reboot)?

更新

BSD 集群手册页说:

Locks are on files, not file descriptors.   That is, file descriptors
duplicated  through dup(2) or fork(2) do not result in multiple instances
of  a lock, but rather multiple references to a single lock.

【问题讨论】:

    标签: flock


    【解决方案1】:

    我的 Linux 大师朋友在这里提到有一个内核锁表(用于文件锁)(通常存储在内存中),它会在重新启动时消失。

    只要进程在运行,文件锁就一直存在。

    【讨论】:

      【解决方案2】:

      根据 linux 手册页:

      flock() 创建的锁与打开的文件表条目相关联。

      This is a data structure in the kernels memory 而不是在可能位于永久磁盘存储上的文件系统中。

      当进程退出时,打开的文件被关闭 - 因此,flock 只有在持有它的进程正在运行时才有效。

      【讨论】:

      • 这个答案不正确。 FreeBSD 系统调用手册的flock(2) 明确指出:“锁定在文件上,而不是文件描述符上。”
      • 我已将file descriptor 替换为open file table entry。就文件而言,手册页并不意味着光盘上的物理文件。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多