Execute Node.JS script via crontab on OS X

坚强是说给别人听的谎言 提交于 2021-01-28 07:53:41

问题


I have been trying to figure out how to use crontabs on my mac OS X I have a node script written that I would like to be able to execute in a scheduled manner. Here is the line I am using in my crontab file.

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

It doesn't appear to be executing though. Can anyone see what I am doing wrong? Also is there another way on a mac or linux server to accomplish what I'm looking for? Also can you use the same line for a crontab job in linux as well(besides the file paths needing to change)?


回答1:


You can use one of the two npm packages, cron or agenda

Both work on linux and OS X. Cron is best if your tasks are lightweight and you don't need your jobs to be persisted into db. Agenda uses mongodb for persistence.

You can configure a job in cron as:

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();

To run in background on server you can run it with forever

Remember cron has an additional 6th place to the left for seconds. Otherwise the syntax is same.




回答2:


By default cron process doesn't have the required permission to access the disk in macos. So, you should allow full access disk to cron process. For this one, add /usr/sbin/cron to your allowed full disk access process under Security & Privacy. Further information can be seen in How to Fix Cron Permission Issues in MacOS Catalina & Mojave



来源:https://stackoverflow.com/questions/43053000/execute-node-js-script-via-crontab-on-os-x

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!