2011-04-12 90 views
6

我有cron作业来运行node.js脚本。用node.js调用群集?

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

任何好的模块来做文件锁定?

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

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

对不起,我是新手,不确定文件锁定是否适合异步 env like节点。由于

+0

更多信息,我只想用一个孩子的过程,因为羊群是等死了简单...是否文件锁定是良好的异步真的取决于,因为它为大多数事情,怎么你执行。只是要小心不要阻止I/O,你应该没问题。 – srquinn 2012-09-04 18:33:54

回答

4

如果你只是想保持重叠cron作业,可以考虑在crontab使用“羊群”实用程序。

如果您的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 /锁锁/的MyScript。如果可以,它会在该行的其余部分运行该命令,然后释放该锁;如果没有(因为还有其他工作正在运行),它会失败。

这使您不必添加很多'fs-ext'依赖关系等等。

有在http://linux.die.net/man/1/flock

+0

灵感来自http://mihasya.com/blog/a-quick-note-on-cron-utilities/(信用卡到期) – 2012-11-02 17:37:27

+0

我收到这个错误:'/ bin/sh:-c:line 0:在查找匹配的'''时意外的EOF /bin/sh:-c:第1行:语法错误:文件意外结束 – chovy 2014-11-24 08:37:29