2011-05-01 8 views
32

काफी सरलता से, मेरे पास नोड स्क्रिप्ट है जिसे मैं महीने में एक बार निष्पादित करना चाहता हूं।क्रॉन जॉब के माध्यम से आप Node.js स्क्रिप्ट को कैसे निष्पादित कर सकते हैं?

30 6 1 * * node /home/steve/example/script.js 

लेकिन यह काम नहीं करता है, संभावित रूप से पथ या खोल के कारण कमांड चल रहा है। मैं क्रॉन के माध्यम से नोड को क्रियान्वित करने के लिए निम्नलिखित साधन की कोशिश की है (-v के साथ परीक्षण):

[email protected]:~$ node -v 
v0.4.2 

[email protected]:~$ sh node -v 
sh: Can't open node 

[email protected]:~$ bash node -v 
/usr/local/bin/node: /usr/local/bin/node: cannot execute binary file 

[email protected]:~$ /usr/local/bin/node -v 
v0.4.2 

[email protected]:~$ sh /usr/local/bin/node -v 
/usr/local/bin/node: 1: Syntax error: "(" unexpected 

[email protected]:~$ bash /usr/local/bin/node -v 
/usr/local/bin/node: /usr/local/bin/node: cannot execute binary file 

मैं कोशिश करने के लिए विचारों, किसी भी सलाह से बाहर भाग गया है?

30 6 1 * * /usr/local/bin/node /home/steve/example/script.js 

उत्तर

63

बस की तरह अपने क्रॉन जॉब में नोड /usr/local/bin/node का पूर्ण पथ प्रदान करते हैं। फिर यह स्क्रिप्ट को नोड के साथ निष्पादित करने के लिए स्वचालित रूप से पता चल जाएगा। सुनिश्चित करें कि फ़ाइल निष्पादन योग्य भी है।

+1

यह पूरा पथ निकला समस्याओं की एक जोड़ी होने के लिए के रूप में आप क्रॉन तय कहा, लेकिन स्क्रिप्ट में संबंधित पथ भी एक मुद्दा थे। – Steve

+0

@Steve आपने सापेक्ष पथ समस्याओं को कैसे ठीक किया? – codecowboy

+0

@Steve मैं कॉन्फ़िगरेशन मॉड्यूल का उपयोग कर रहा हूं (उदा। आवश्यकता है ('config')। डीबी) और crontab के माध्यम से चलते समय, कॉन्फ़िगर चर चरम नहीं होते हैं। – codecowboy

18

साथ ही, सिर्फ स्क्रिप्ट आप निष्पादित करने के लिए चाहते हैं के शीर्ष पर #!/usr/local/bin/node डाल:

+13

'#!/Usr/bin/env node' थोड़ा और भविष्य का सबूत है क्योंकि 'env' इंगित करेगा कि आपका' नोड 'कहां स्थापित है। –

3

मैं अगर निरपेक्ष पथ पर अपनी स्क्रिप्ट में अपने संबंधित पथ को बदलने पता नहीं है एक अच्छा विचार
(क्या होता है जब आपके फाइल सिस्टम में परिवर्तन या यदि आप किसी अन्य वातावरण में तैनात?)

आप रैपिंग की कोशिश कर सकते है यह एक शेल स्क्रिप्ट में, crontab निष्पादन में कुछ पर्यावरण चर सेटिंग। लिनक्स टकसाल दिया काम नहीं कर रहा पथ तो मैं इस प्रयोग किया जाता है चारों ओर एक काम पाने के लिए का उपयोग कर
https://stackoverflow.com/a/27823675/608269

0
अपने लैपटॉप में

: (विशेष रूप से PATH & शुरुआत के लिए NODE_PATH)

इस समान प्रश्न के लिए मेरे सुझाव का प्रयास करें।

$ which node

$ /usr/bin/node इस मेरे लिए काम किया।

0

नोड उपनाम और फ़ाइल चलाने के लिए पूर्ण पथ का उपयोग करें।

संपादित क्रॉन नौकरी

contab -e 

एंट्री

यह हर मिनट चला जाएगा चलाने के लिए हमारे नोड फ़ाइल।

*/1 * * * * * /bin/node /public/test.js 

पूर्ण ट्यूटोरियल https://askmacgyver.com/blog/tutorial/how-to-run-node-scripts-from-a-cron-job

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