2011-04-12 131 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