我有一个cron工作来运行node.js脚本。
想要使用flock锁定文件以确保我的cron工作不会重叠。
有没有好的模块来进行文件锁定?
还是我应该在子进程中调用它?
或者我不应该做任何文件锁定?
抱歉,我是新手,不确定像node这样的异步环境是否适合文件锁定。谢谢。
如果您只是想防止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
/bin/sh: -c: line 0: unexpected EOF while looking for matching
'' /bin/sh: -c: line 1: syntax error: unexpected end of file`。 - chovy请查看fs-ext
包中的flock
函数:https://github.com/baudehlo/node-fs-ext
let lock = require("fcf-framework-lock");
let util = require("util");
async main() {
// Take the lock
const lockId = await util.promisify(lock.lockFile)("LOCK_FILE_PATH");
// ...
// let's do something
// ..
// Free the lock
await util.promisify(lock.unlockFile)(lockId);
}
main();