2014-10-11 9 views
6

मैं चाहता हूं कि मेरा सर्वर हर मिनट एक नोड स्क्रिप्ट निष्पादित करे। यदि मैं फ़ाइल को मैन्युअल रूप से निष्पादित करता हूं (./main.js), तो प्रोग्राम पूरी तरह निष्पादित करता है, इसलिए मुझे पूरा यकीन है कि यह समस्या नहीं है। लेकिन जब मैं इसे निष्पादित करने के लिए क्रॉन पर सौंपता हूं, कुछ भी नहीं होता है।मेरी node.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); 

किसी भी विचार क्यों मैं रेडियो चुप्पी हो रही है

*/1 * * * * /home/bryce/scripts/wudu/main.js

और यहाँ एक नमूना लॉग है? कहीं और मुझे डीबग करना चाहिए?

अद्यतन:

मेरा मानना ​​है कि समस्या मेरे रिश्तेदार filepaths के साथ क्या करना है, और main.js अपनी निर्देशिका बाहर से क्रियान्वित किया जा रहा।

तो अब, मैं wudu निर्देशिका में exe.sh रखा है। यह इस तरह दिखता है:

#!/bin/bash 

cd ${0%/*} 
./main.js mail 

exit 

अब, मैं इस फ़ाइल को हर मिनट पर अमल करने क्रॉन निर्धारित किया है। मैंने इस फ़ाइल को अन्य फ़ोल्डरों से निष्पादित करने का प्रयास किया, और यह अपेक्षा के अनुसार काम करता है। लेकिन फिर, क्रॉन इसे उठा नहीं रहा है।

+0

फ़ाइल पर निष्पादन विशेषाधिकारों की जांच कर सकते हैं। –

+0

जिसने मुझे पहले गड़बड़ कर दिया, लेकिन मैंने पहले से ही तय किया है। हालांकि धन्यवाद। –

+0

रिश्तेदार पथ नाम: 'वर वी = की आवश्यकता होती है ('./ CLI/सत्यापन');' आपका क्रॉन जॉब '/ घर/ब्राइस/scripts/wudu /' निर्देशिका में शुरू नहीं किया है, लेकिन लोक निर्माण विभाग संभवत: है '/ घर/ब्रिस/'जब क्रॉन से बुलाया जाता है। – wildplasser

उत्तर

10

एक खोल स्क्रिप्ट में निष्पादन रैपिंग, यह संभावना क्रॉन में स्क्रिप्ट के निष्पादन के एक ही वातावरण जब आप कमांड लाइन से चलाने के रूप में स्थापित नहीं है है।

तो, अपने क्रॉन प्रविष्टि दिखाई देगा:

NODE_PATH & PATH
की स्थापना (echo $NODE_PATH और echo $PATH अगर आप इन मूल्यों, एक कमांड लाइन प्रकार पर की जरूरत है) के साथ क्रॉन में खोल स्क्रिप्ट के निष्पादन prefacing प्रयास करें :

*/1 * * * * NODE_PATH=/usr/local/lib/node_modules PATH=/opt/local/bin:ABC:XYZ /home/bryce/scripts/wudu/exe.sh 

बस तुम क्या वें से प्राप्त के साथ NODE_PATH & PATH के लिए वास्तविक मानों को बदल करना सुनिश्चित करें ई echo आदेश जो आपने पहले किया था।

0

मैं ठीक उसी समस्या थी, तो मैं एक पासथ्रू स्क्रिप्ट है कि मेरे वातावरण चर लोड होगा बनाने बंद होने के बाद तो जैसे नोड निष्पादित करें:

##!/bin/bash 

# Source bash profile to load env variables 
# or any other that you want to set explicitly 
. ~/.bash_profile 

# tunnel that allows us to execute cron jobs 
node $1 $2 

बस का उपयोग करने के अपने crontab में जोड़ने

* * * * * <user> <passthrough_script> <arg1> <arg2> 
संबंधित मुद्दे

 संबंधित मुद्दे