问题
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