11

我有 cron 作业来运行 node.js 脚本。

想使用flock来锁定文件以确保我的cron作业不重叠。

任何用于文件锁定的好模块?

或者我应该在子进程中调用它?

或者我不应该做任何文件锁定?

抱歉,我是新手,不确定文件锁定是否适用于 node.js 等异步环境。谢谢

4

2 回答 2

7

如果您只是想防止 cron 作业重叠,请考虑改用 crontab 中的“flock”实用程序。

如果您的 cron 行看起来像这样:

*/10 * * * * /usr/bin/node /usr/local/share/myscript

您可以将其更改为:

*/10 * * * * /usr/bin/flock -n /var/lock/myscript /usr/bin/node /usr/local/share/myscript

这将尝试获取锁文件 /var/lock/myscript 上的锁。如果可以,它将在该行的其余部分运行命令,然后释放锁;如果没有(因为有另一个作业正在运行),它将失败。

这使您不必在“fs-ext”等上添加大量依赖项。

在http://linux.die.net/man/1/flock有更多信息

于 2012-11-02T17:27:53.870 回答
4

查看包flock中的功能fs-exthttps ://github.com/baudehlo/node-fs-ext

于 2012-10-21T10:54:41.700 回答