问题标签 [lockfile]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
128 浏览

python - 寻找可靠的python进程同步技术(Linux非便携)

[我很难在 Linux 上使用 python 3 实现线程/进程安全的解决方案来获取文件锁(我不关心可移植的解决方案,因为我正在开发的程序广泛使用 Linux 内核-专有容器化技术)。]

阅读http://apenwarr.ca/log/?m=201012#13后,我决定使用fcntl.lockf()锁定文件以进行进程独占访问并编写以下函数:

除此之外,我确信它是不正确的(为什么它不阻塞Fcntl.lockf(fileDescriptor, Fcntl.LOCK_EX)?),最让我感到不安的部分fileDescriptor是获取文件的位置 - 如果文件不存在,则创建它.. . 但是,如果两个进程同时执行这部分,会发生什么?是否存在竞争条件,两个线程都尝试创建文件?如果是这样,人们怎么可能阻止这种情况 - 当然不是使用另一个锁定文件(?),因为它必须以相同的方式创建(?!?!)我迷路了。任何帮助是极大的赞赏。

更新:发布了解决潜在问题的另一种方法。我在这种方法中看到的问题是,过程名称不能等于现有 UNIX 域套接字的名称(可能由另一个程序创建)——我对此是否正确?

0 投票
0 回答
625 浏览

javascript - npm protractor xlsx 文件等待并重试

我正在尝试运行具有多种功能的量角器(大约 30 个具有不同版本的浏览器)数据表是 xlsx 并且是一张,将被使用。每次运行后,xlsx 行将更新为“已使用”

我使用 exceljs 来写标志。但如果它已被另一个进程使用/打开,则会引发错误。我处理了异常,但我希望多进程等待并重试访问文件,而不是失败。

请建议如何由多个进程同时读取/写入一个 xlsx - 被处理的必须等待任何先前的进程完成其访问。

写函数:

读取功能:(比使用exceljs读取更简单)

0 投票
1 回答
268 浏览

node.js - 在各种服务器nodejs周围锁定文件

我有多个服务器实例。我有一个用于文件同步的 s3 挂载位置。我必须一次更新一个文件……所以我想锁定那个文件,这样当一个实例已经存在时,任何其他实例都不能在该文件上工作在职的。

nodejs npm 的 LOCK 仅适用于服务器内而不是所有实例。

有没有可能的解决方法?

0 投票
1 回答
1416 浏览

java - Sonarqube:作业失败,无法删除锁定文件:.././.sonar_lock java.nio.file.NoSuchFileException

我正在运行命令“gradle sonarqube --stacktrace”,它开始导致以下结果:

我错过了什么?该命令对其他目录运行良好。

0 投票
1 回答
1833 浏览

bash - 在 Bash 中创建互斥锁时,我应该使用“flock”还是“mkdir”?

我搜索了 Bash 如何创建互斥锁。我遇到了两种在 Bash 中创建互斥锁的不同方法。两者都是 stackoverflow 答案,并且都有 >100 的赞成票:一个答案使用mkdir另一个答案使用flock.

在 bash 中创建互斥锁时,我应该使用flockormkdir吗?

0 投票
1 回答
584 浏览

python - 在 DaemonContext 中定义 pidfile 在 python 中禁用记录器

我正在尝试在 python 中创建一个守护程序服务,并使用日志记录到文件选项。如果我将 pidfile 参数添加到 daemon.DaemonContext 构造函数,则 logger 不会将任何消息记录到 logger.log 文件中。但是,如果我删除该参数,一切正常。运行没有任何错误。谁能知道为什么 daemon.DaemonContext 中的 pidfile 参数禁用日志消息?我该如何解决?

任何帮助将不胜感激。谢谢

0 投票
4 回答
849 浏览

windows - 检测到文件正在被复制到文件夹中

我正在运行一个脚本,如果它不存在(或不一致),它会从特定位置复制一个文件夹。当我同时运行脚本 2 次以上时,就会出现问题。当第一个脚本试图复制文件时,第二个脚本来尝试同样的事情,导致一团糟。我怎样才能避免这种情况?类似于系统范围的互斥锁。

我尝试了一个简单的测试-w,我手动复制了文件夹,并在复制文件夹时运行脚本:

当然这行不通,因为我仍然拥有对该文件夹的写入权限。关于如何检查文件夹是否被复制Perl或使用的任何想法batch commands

0 投票
1 回答
17 浏览

semaphore - 如何限制一个脚本可以运行某段代码的副本数?

lockfile用来确保一段代码一次只能运行一个。

如果我想允许一次运行 n 个相同代码的副本,该怎么做?谢谢。

0 投票
1 回答
378 浏览

ruby-on-rails - RSpec 测试失败 - 使用显示套接字但缺少锁定文件

我正在尝试在我的 Rails 应用程序中运行 RSpec 测试并不断收到以下错误:

此处的故障排除指南http://www.rubydoc.info/github/leonid-shevtsov/headless#Display_socket_is_taken_but_lock_file_is_missing只是说这是一种特殊情况并打开一个问题。有任何想法吗?

0 投票
3 回答
1203 浏览

java - 用于 I/O 超时的最佳异常类型是什么?

我编写了一个实现“锁定文件”的 Java 类,以防止一个周期作业同时运行多次。它基于java.nio.channels.FileChannel.tryLock并且运行良好。

我的类允许客户端代码提供一个超时值,指示它愿意等待锁定文件可用多长时间,如果发生超时,我将抛出一个IOException. 这也很有效。

但我想知道是否有更好的异常类型可以使用,因为IOException它相当通用。捕获 an 的客户端代码IOException将无法知道问题是由于例如超时本身还是文件系统的其他问题等(IOException当然,除非其他问题引发子类)。

简要浏览 Java API,我看到了一些候选者,但出于各种原因,我并不真正喜欢它们中的任何一个:

  1. java.util.concurrent.TimeoutException(这不是真正的“并发”用法)
  2. java.nio.channels.FileLockInterruptionException(文档指出了此异常的一个非常具体的原因;与我的情况不符)
  3. java.nio.channels.InterruptedByTimeoutException(与上述类似的原因)

有什么建议么?

如果可能的话,我更喜欢 Java 7 可用的东西。

编辑

显然,自定义异常类是可能的,但我想知道标准 API 中是否有合适的东西。