मैं अपने अप्रकाशित सर्वर पर एक मिनीक्राफ्ट सर्वर चलाने की कोशिश कर रहा हूं।
सर्वर शेल में चलेगा, और फिर इनपुट के इंतजार में वहां बैठेगा। इसे रोकने के लिए, मुझे 'स्टॉप' टाइप करना होगा और एंटर दबाना होगा, और फिर यह दुनिया को बचाएगी और इनायत से बाहर निकलेगी, और मैं वापस शेल में हूँ। यह सब काम करता है अगर मैं इसे NAS बॉक्स में टेलनेटिंग के माध्यम से चलाता हूं, लेकिन मैं इसे सीधे बॉक्स पर चलाना चाहता हूं।
यह वही है जो मैंने पहले प्रयास के रूप में किया था:
#define USER_SCRIPT_LABEL Start Minecraft server
#define USER_SCRIPT_DESCR Start minecraft server. needs sde2 mounted first
cd /mnt/disk/sde2/MCunraid
screen -d -m -S minecraft /usr/lib/java/bin/java -Xincgc -Xmx1024M -jar CraftBukkit.jar
MCunraid वह फ़ोल्डर है जहां मेरे पास Craftbukkit.jar और सभी दुनिया फाइलें आदि हैं। अगर मैं उस स्क्रीन लाइन को सीधे टाइप करता हूं, तो स्क्रीन सेटअप अलग हो जाती है और सर्वर लॉन्च होता है। अगर मैं स्क्रिप्ट के भीतर से उस लाइन को निष्पादित करता हूं तो स्क्रीन सेट करना संभव नहीं लगता
सर्वर को रोकने के लिए, मुझे STOP में 'टाइप' करना होगा और फिर एंटर दबाना होगा। मेरा दृष्टिकोण था
screen -S minecraft -X stuff "stop $(echo -ne '\r')"
पाठ स्टॉप और गाड़ी वापसी के लिए 'मिनीक्राफ्ट' स्क्रीन पर भेजने के लिए। लेकिन यह काम नहीं करता है, भले ही मैं इसे सीधे कमांड लाइन पर टाइप करता हूं। लेकिन अगर मैं 'स्क्रीन -r' करता हूं, तो मैं चल रहे सर्वर से स्क्रीन पर पहुंच सकता हूं, फिर 'स्टॉप' टाइप करें और यह ठीक से बंद हो जाए।
सर्वर अच्छी तरह से चलता है अगर मैं इसमें टेलनेट करता हूं और इसे मैन्युअल रूप से करता हूं, बस इसे मेरे रिमोट कंप्यूटर से कनेक्ट किए बिना चलाने की आवश्यकता है।
#!/bin/bash
और set -x
स्क्रिप्ट के शीर्ष पर हैं, और हमें स्क्रिप्ट से उत्पादन का पता लगाने को दिखाते हैं। आपको यह पता लगाने की आवश्यकता हो सकती है कि आउटपुट कहां जाता है।
screen
शुरू करने में विफल रहा?set -x
स्क्रिप्ट के शीर्ष पर जोड़ने की कोशिश करें (#!
लाइन के ठीक बाद ) और स्क्रिप्ट चलाते समय ट्रेस आउटपुट की रिपोर्ट करें।