问题标签 [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 投票
1 回答
6762 浏览

python - Python:使用 PID 文件守护进程

我正在尝试使用该daemon模块守护进程。代码看起来像这样

现在在这里您看到我正在创建一个锁定 PID 文件。现在我运行这个程序,它运行良好。现在为了测试 PID/daemon 功能,我使用启动另一个程序实例

现在这一次它不应该运行,因为之前的实例已经在运行。结果是第二个实例开始并进入一个循环(这不是while我的测试函数中的循环)。在此第二个实例上运行strace会连续提供以下输出

而且这个痕迹会一直出现,直到进程被强行杀死。锁定文件功能确实检测到存在现有锁定文件,但问题是程序没有退出。我也希望显示这个错误,表明 pid 文件已经存在。

如何才能做到这一点?

0 投票
2 回答
24773 浏览

linux - 获取shell脚本的pid并保存到lockfile中

我使用 rsnapshot 进行备份,它创建了一个带有进程 pid 的锁定文件。现在我想从 rsnapshots 备份中进行备份,所以我正在寻找一种方法来为第二个/外部备份创建这个锁文件。

shell 脚本应该是这样的:

  1. 检查是否存在锁定文件,如果存在,请等待并重试(我正在使用 while true 循环执行此操作)
  2. 获取此 shell 脚本的 pid 并将其保存为 rsnapshot 锁定文件
  3. 开始第二次/外部备份
  4. 删除锁定文件

如何获取 PID 并将其保存为 rsnapshot 锁定文件?

0 投票
1 回答
1942 浏览

bash - 删除过时的锁定文件 - rsnapshot 不喜欢我的锁定文件

我不得不暂停 rsnapshot 运行一些备份,所以我为此创建了一个锁定文件:

但是 rsnapshot 告诉我“删除过时的锁定文件”并继续进行备份。

我该怎么做才能使锁文件对 rsnapshot 不陈旧?

男人这样说:


如果 rsnapshot 启动时存在锁定文件,它将尝试读取该文件,如果不能,则停止并出现错误。如果它可以读取文件,它会查看是否存在具有文件中记录的 PID 的进程。如果是这样,rsnapshot 将停止并显示错误消息。如果没有具有该 PID 的进程,那么我们假设锁定文件是陈旧的并忽略它,除非stop_on_stale_lockfile 设置为 1,在这种情况下我们停止。


这意味着,只要 bashscript 运行,它就不会过时。但它不是这样工作的。


编辑:

该死的,我发现了问题,如果锁定文件由另一个用户拥有而不是 rsnapshot 运行,则会出现问题......

0 投票
1 回答
137 浏览

ruby-on-rails - Simplecov gem 使用过时的 lockfile 布尔参数

我有一个应用程序,我刚刚添加了 Simplecov 以获取代码覆盖率统计信息。添加此 Gem 后,我开始收到以下错误:

(当我启动 Rails 服务器时,打印出大约 20 行这样的行)

它们似乎只是警告,所以我并不担心,但摆脱它们会很好。Simplecov 和 lockfile gems 都已经是最新版本(Simplecov 0.8.1 和 lockfile 2.1.0),所以我无法更新其中一个......还有其他人遇到过这个吗?

编辑:其他环境细节

Jruby 1.7.6、Rails 3.1.3、Warbler 1.3.8、Bundler 1.3.5

0 投票
1 回答
2879 浏览

linux - lockfile-create 在 bash 脚本中不起作用

这可能是一个非常简单的问题,但我不明白为什么它会这样。当我调用

它返回 0,下次运行时它会按预期返回一些其他代码(4),因为它已经创建了锁定文件。但是当我将相同的代码包装在 bash 脚本文件中时,它总是返回 0 作为退出代码。有人知道为什么它不起作用吗?

更新:完整的 bash 文件内容

这就是我运行它的方式./alert.sh。

0 投票
1 回答
741 浏览

groovy - 在 SoapUI 中使用 GroovyScript 访问和锁定外部文件

我想在 SoapUI 中的一个项目中同时运行一组 60 个测试用例。每个测试用例都需要使用一个值才能工作。这些值存储在外部文件(电子表格或文本文件)中。每个测试用例都需要从这个文件中获取一个值并使用它。但是,当我运行测试套件时,多个测试会获取相同的值,但是只能将一个值用于测试(同一值不能同时用于 1 个以上的测试)。我希望在soapUI中一次由一个测试用例访问外部文件。这是否涉及锁定或某种排队系统或我可以使用什么 groovyscript?谢谢

0 投票
7 回答
5252 浏览

crash - memcached 已死,但子系统已锁定

服务 memcached 重新启动产生:
停止 memcached:[失败]
启动 memcached:[确定]

服务 memcached 状态产生:
memcached dead 但 subsys 已锁定

ls inside /var/lock/subsys/ 显示了一个名为 memcached 的文件

ls inside /var/run/ 显示没有名为 memcached 的 pid 文件
,此处还有另一个名为 memcached 的文件夹,但该文件夹中没有任何内容。

rm /var/lock/subsys/memcached 摆脱 memcached 锁定文件

服务重新启动 memcached yields:
停止 memcached:[失败]
启动 memcached:[确定]

服务 memcached 状态产生:
memcached dead 但 subsys 已锁定

我究竟做错了什么?

编辑:我想补充一点,我在发布之前已经搜索过这个,我要么已经在执行上述帖子中列出的步骤,要么该帖子已有多年历史。

0 投票
1 回答
427 浏览

ubuntu-12.04 - LockFailed: failed to create /scratch/

I am running a pyramid server and am trying to load data through celery. However, celery is does nothing. Its log file says:

LockFailed: failed to create /scratch/roman-work-1fb53700.7366

I found advice to change /scratch permissions by:

sudo chmod 777 /scratch

But terminal says that /scratch directory does not exist. Where should /scratch be situated so that I can create it if it really does not exist?

0 投票
1 回答
107 浏览

iphone - IBM Worklight 6.1 - 使用 buildtime.sh 脚本解锁生成的文件

我正在使用 IBM Worklight 6.1 并尝试将文件复制到iphone/native/www/worklight文件夹中我尝试复制/擦除的文件是 cordova_plugins.js,为此我buildtime.sh通过添加以下行编辑了 shell 脚本:

这在为 iPhone 部署后不起作用,并返回permission denied错误。(手动)解锁文件后cordova_plugins.js,脚本可以正常工作。

因此,我尝试使用相同的脚本外壳解锁文件,方法是添加

就在cp指令之前,但它似乎没有改变任何东西(没有额外的错误,但问题仍然存在。)

有没有办法/www/worklight在项目设置中或以编程方式解锁文件?如何用我的 buildtime.sh 脚本做到这一点?还有其他解决方法吗?

0 投票
2 回答
447 浏览

bash - 备份脚本需要一个 pid 锁来防止多个实例

我有一个运行每日 rsync 增量备份的 bash 脚本。

我的问题是我最终运行了多个实例。我是 bash 脚本的新手,所以我不确定我的脚本是否有问题?贴在下面。

但我读过有关 pid 锁定文件的信息?

谁能告诉我如何将它添加到我的脚本中?

所以看起来像这样?