在OS X上通过crontab执行Node.JS脚本

时间:2017-03-27 17:37:09

标签: node.js cron

我一直试图弄清楚如何在我的mac OS X上使用crontabs我编写了一个节点脚本,我希望能够以预定的方式执行。这是我在crontab文件中使用的行。

30 * * * * /usr/local/bin/node /Users/pmanca/Google Drive/JavaScript/code/Peter/marketing-tests/testBackup.js

它似乎并没有执行。谁能看到我做错了什么?还有另一种方法在mac或linux服务器上完成我正在寻找的东西吗?你也可以在linux中使用相同的行作为crontab作业(除了需要更改的文件路径)吗?

2 个答案:

答案 0 :(得分:0)

您可以使用两个npm包中的一个,cronagenda

两者都适用于Linux和OS X.如果您的任务是轻量级的,并且您不需要将您的工作持久保存到数据库中,那么Cron最好。议程使用mongodb来保持持久性。

您可以在cron中将作业配置为:

var CronJob = require('cron').CronJob;
var job = new CronJob({
  cronTime:  '00 */30 * * * *',
  onTick: function() {
    /*
     * Runs every 30 minutes, every hour, every day, all week
     */
  },
  start: false,
  timeZone: 'America/Los_Angeles'
});
job.start();

要在服务器后台运行,您可以使用forever

运行它

记住cron在左边还有第6个位置。否则语法相同。

答案 1 :(得分:0)

默认情况下,cron进程没有访问macOS中磁盘所需的权限。因此,您应该允许对cron进程具有完全访问权限的磁盘。为此,请在“安全性和隐私”下将/usr/sbin/cron添加到允许的全盘访问过​​程中。更多信息,请参见How to Fix Cron Permission Issues in MacOS Catalina & Mojave