2009-02-22 2 views
9

मैं कमांड लाइन के माध्यम से अपने दूरदराज के आभासी निजी सर्वर पर एक php स्क्रिप्ट चलाने के लिए कोशिश कर रहा हूँ करने के लिए। प्रक्रिया मैं पालन है:कैसे कमांड लाइन के माध्यम से एक php स्क्रिप्ट चलाने (और इसे बाहर प्रवेश करने के बाद चालू रखने के)

सर्वर पुट्टी
  • का उपयोग कर कमांड लाइन शीघ्र, प्रकार पर में
    1. लॉग> php myScript.php

    स्क्रिप्ट ठीक चलाता है। लेकिन समस्या यह है कि जैसे ही मैं पुटी कंसोल विंडो बंद करता हूं, स्क्रिप्ट चलती रहती है।

    मैं स्क्रिप्ट की जरूरत है अंतहीन चलाने पर रखने के लिए। मैं उसे कैसे कर सकता हूँ? मैं सर्वर पर डेबियन चला रहा हूँ।

    अग्रिम धन्यवाद।

  • उत्तर

    16

    मेरा मानना ​​है कि बेन का सही उत्तर है, अर्थात् नोहप कमांड का उपयोग करें। nohup nohangup के लिए खड़ा है और इसका मतलब है कि अपने कार्यक्रम के एक hangup संकेत, उत्पन्न होती है जब आप कर रहे हैं पोटीन सत्र या तो आपको लॉग आउट करके या क्योंकि आप का समय समाप्त हो गया है के कट जाने की उपेक्षा करना चाहिए।

    आपको यह पता होना चाहिए कि आपके कमांड का आउटपुट वर्तमान निर्देशिका में nohup.out (या $ HOME/nohup.out नामक वर्तमान निर्देशिका में फ़ाइल में जोड़ा जाएगा यदि अनुमतियां आपको वर्तमान निर्देशिका में nohup.out बनाने से रोकती हैं)। यदि आपका प्रोग्राम बहुत सारे आउटपुट उत्पन्न करता है तो यह फ़ाइल बहुत बड़ी हो सकती है, वैकल्पिक रूप से आप स्क्रिप्ट के आउटपुट को दूसरी फ़ाइल में रीडायरेक्ट करने के लिए खोल पुनर्निर्देशन का उपयोग कर सकते हैं।

    nohup php myscript.php >myscript.output 2>&1 & 
    

    यह आदेश अपनी स्क्रिप्ट चलाएं और सभी निर्गम (दोनों मानक और त्रुटि) फ़ाइल myscript.output जो हर बार जब आप प्रोग्राम चलाने नए सिरे से बनाया जाएगा करने के लिए भेज देंगे।

    अंतिम & स्क्रिप्ट को पृष्ठभूमि में चलाने का कारण बनता है ताकि आप अन्य चीजें कर सकें जबकि यह चल रहा है या लॉगआउट हो।

    9

    एक आसान तरीका है, हालांकि nohup इसे चलाने के लिए है:

    nohup php myScript.php & 
    
    +1

    हालांकि ध्यान रखें, कि स्क्रिप्ट स्वचालित रूप से समाप्त करने के बाद पुनः आरंभ नहीं होंगे। –

    4

    आप एक screen में php आदेश चलाते हैं, screen अलग है, तो यह समाप्त नहीं होगा जब आप अपने कंसोल को बंद करें।

    स्क्रीन एक टर्मिनल मल्टीप्लेक्सर है जो आपको एक भौतिक टर्मिनल के माध्यम से कई प्रक्रियाओं को प्रबंधित करने की अनुमति देता है। प्रत्येक प्रक्रिया को अपनी आभासी विंडो मिलती है, और आप वर्चुअल विंडोज़ के बीच प्रत्येक प्रक्रिया के साथ बातचीत कर सकते हैं। जब स्क्रीन उनकी विंडो सक्रिय नहीं होती है तब स्क्रीन द्वारा प्रबंधित प्रक्रियाएं चलती रहती हैं।

    +0

    मैं एक ही किया था के रूप में तुमसे कहा था, लेकिन वर्तमान में मुझे नहीं पता क्यों स्क्रीन में मेरी स्क्रिप्ट रोक निष्पादन। एक बार जब मैं स्क्रीन से बाहर निकल जाऊंगा और इसे फिर से स्क्रीन में रखूंगा तो यह ठीक काम करता है, इसलिए क्या आपको पता है कि इसके पीछे मुख्य कारण क्या है –

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