Я хочу, чтобы мой сервер выполнял скрипт узла каждую минуту. Программа выполняется отлично, если я запускаю файл вручную (./main.js
), поэтому я уверен, что это не проблема. Но когда я передаю его на выполнение cron, ничего не происходит.Почему cron не выполнит мой скрипт node.js?
Вот строка из файла cron.
*/1 * * * * /home/bryce/scripts/wudu/main.js
А вот образец журнала:
Oct 11 15:21:01 server CROND[2564]: (root) CMD (/home/bryce/scripts/wudu/main.js)
Исполняемый: home/bryce/scripts/wudu/main.js
#!/usr/bin/env node
var program = require('commander');
var v = require('./cli/validation');
var a = require('./cli/actions');
program
.version('0.0.1')
.option('-u, --url', 'Register url')
.option('-s, --selector', 'Register selector')
.option('-p, --pagination', 'Register pagination')
.option('-i, --index', 'Pass an index, to destroy')
.parse(process.argv);
var args = process.argv.slice(2),
mode = v.mode(args[0]),
options = v.hasArgs(mode, program);
a.init(mode, options);
Любая идея, почему я получаю радиомолчание? Где-то еще я должен искать отладки?
UPDATE:
Я считаю, что проблема связана с моим относительно путей файлов и main.js выполняется за пределами своей директории.
Итак, теперь я разместил exe.sh
в каталоге wudu
. Это выглядит так:
#!/bin/bash
cd ${0%/*}
./main.js mail
exit
Теперь я установил cron для выполнения этого файла каждую минуту. Я попытался выполнить этот файл из других папок, и он работает так, как ожидалось. Но опять же, cron не подбирает его.
Возможно проверить права выполнения в файле. –
Это испортило меня раньше, но я уже это исправил. Спасибо хоть. –
относительный путь: 'var v = require ('./ cli/validation');' Ваше задание cron не запускается в каталоге '/ home/bryce/scripts/wudu /', но pwd скорее всего '/ home/bryce/'при вызове из cron. – wildplasser