Chcę, aby mój serwer co minutę wykonywał skrypt węzłowy. Program wykona się doskonale, jeśli ręcznie wykonam plik (./main.js
), więc jestem pewien, że to nie problem. Ale kiedy oddam to cronowi do wykonania, nic się nie dzieje.Dlaczego cron nie wykonuje mojego skryptu node.js?
Oto linia z pliku cron.
*/1 * * * * /home/bryce/scripts/wudu/main.js
A oto przykładowy log:
Oct 11 15:21:01 server CROND[2564]: (root) CMD (/home/bryce/scripts/wudu/main.js)
wykonywalny: 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);
Każdy pomysł dlaczego Dostaję ciszę radiową? Gdzie indziej powinienem szukać debugowania?
UPDATE:
Wierzę, że problem ma związek z moim krewnym filepaths i main.js wykonywane spoza własnego katalogu.
Tak więc umieściłem exe.sh
w katalogu wudu
. Wygląda to tak:
#!/bin/bash
cd ${0%/*}
./main.js mail
exit
Teraz ustawiłem crona, aby uruchamiał ten plik co minutę. Próbowałem wykonać ten plik z innych folderów i działa zgodnie z oczekiwaniami. Ale znowu Cron tego nie robi.
Może sprawdzić uprawnienia wykonywania w pliku. –
To mnie wcześniej zepsuło, ale naprawiłem to już. W każdym razie dzięki. –
ścieżka względna: 'var v = require ('./ cli/validation');' Twoje zadanie cron nie jest uruchamiane w katalogu '/ home/bryce/scripts/wudu /', ale pwd najprawdopodobniej jest '/ home/bryce/'po wywołaniu z crona. – wildplasser