मैं "वर्चुअल" टर्मिनल बनाने के लिए जीएनयू स्क्रीन को मजबूर करने की कोशिश कर रहा हूं, इसे संलग्न किए बिना, स्क्रिप्ट को अंदर निष्पादित करें और स्क्रिप्ट समाप्त होने पर सत्र समाप्त न करें।
मैंने कई संयोजनों की कोशिश की, जिनमें शामिल हैं:
screen -dmS udplistener /share/Sys/autorun/start_udp_listeners.sh
या
screen -S udplistener -X /share/Sys/autorun/start_udp_listeners.sh
और उनमें से किसी ने भी काम नहीं किया। मुझे या तो निष्पादित स्क्रिप्ट के बिना सत्र मिलता है, स्क्रिप्ट निष्पादित होती है, लेकिन यह समाप्त होने के बाद सत्र समाप्त हो जाता है या मुझे "कोई स्क्रीन सत्र नहीं मिला" त्रुटि हो रही है।
मैं मूल रूप से UDP श्रोता को चलाने के लिए कोशिश कर रहा हूं, जिसे PHP में लिखा गया है और इसे इनफिनिट लूप में काम करना है (सुनने में टूटना नहीं)। हां - मैं PHP स्क्रिप्ट &
को अंत में चला सकता हूं , PHP CLI को डेमन के रूप में चलाने के लिए मजबूर कर सकता है। समस्या यह है, कि मैं सर्वर (क्यूएनएपी - कबाड़ - कभी भी, कभी भी इस कबाड़ को खरीदता हूं!) नाम के एक टुकड़े का उपयोग कर रहा हूं, जो इसे अनदेखा करता प्रतीत होता है। जैसे ही मैं SSH सत्र लॉगऑफ़ करता हूं, स्क्रिप्ट बंद हो जाती हैं।
तो screen
यह एकमात्र विकल्प प्रतीत होता है। लेकिन मुझे समझ नहीं आ रहा है, एक बार कमांड या स्क्रिप्ट समाप्त होने के बाद सत्र क्यों समाप्त हो जाता है?
संपादित करें : मैंने इंटरनेट में पाया उदाहरण भी आज़माया है:
screen -dmS name
screen -S name -p windowname -X stuff 'mc
'
कोई कमी नहीं! इसे संलग्न करने के बाद ( screen -R name
) मैं देखता हूं कि मिडनाइट कमांडर एचएसएनटी को निष्पादित नहीं किया गया है। हालांकि उदाहरण लेखक ने कहा, यह होगा।
screen
बंद करने से रोकने के लिए ? BTW: मैं अभी भी पीछे विचार नहीं मिलता है! अगर मैं फोन करता हूं screen -dmS name
, तो मैं एक अलग खिड़की बनाता हूं, जिसमें कुछ करने के लिए भी नहीं होता है। लेकिन यह स्वचालित रूप से बंद नहीं है! लेकिन जब मैं उस अलग स्क्रीन में कुछ निष्पादित करना चाहता हूं, तो एक बार निष्पादन समाप्त हो जाता है। क्यूं कर? मैं यहाँ तर्क नहीं देखता। खिड़की कुछ भी नहीं कर सकती है, लेकिन खिड़की कुछ नहीं कर सकती है और फिर कुछ भी नहीं कर रही है?
&
अंत में), छोटी गाड़ी (QNAP) के कारण निष्पादित किया जाता है , लेकिन सत्र समाप्त होने पर उन्हें समाप्त कर दिया जाता है (मुझे बताया गया था, यदि वे सामान्य लिनक्स पर नहीं हैं, तो निष्पादित किया जाता है &
)। इसलिए मैं start_udp_listeners.sh
खत्म होने के बाद कुछ भी नहीं करना चाहता हूं , केवल सत्र को समाप्त होने से कैसे रोकें। जब तक यह नहीं है, मेरे PHP श्रोताओं बस ठीक काम कर रहे हैं।
screen
, आप केवल एक कमांड चलाने के लिए एक विंडो बनाते हैं। जब कमांड बाहर निकलती है, तो विंडो बंद हो जाती है औरscreen
उसके पास करने के लिए कुछ नहीं बचता है, इसलिए यह बाहर निकल जाता है।