ฉันพยายามเรียกใช้เซิร์ฟเวอร์ minecraft บนเซิร์ฟเวอร์ unRAID ของฉัน
เซิร์ฟเวอร์จะทำงานในเปลือกแล้วนั่งรอการป้อนข้อมูล ในการหยุดมันฉันต้องพิมพ์ 'หยุด' และกด Enter จากนั้นมันจะช่วยโลกและออกอย่างสง่างามและฉันกลับมาที่เปลือก ทั้งหมดนี้ใช้งานได้หากฉันเรียกใช้ผ่าน telnetting ในช่อง 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 แล้วกด Enter แนวทางของฉันคือ
screen -S minecraft -X stuff "stop $(echo -ne '\r')"
เพื่อส่งไปยังหน้าจอ 'minecraft' ข้อความจะหยุดและคืนค่าขนส่ง แต่นั่นไม่ได้ผลแม้ว่าฉันจะพิมพ์โดยตรงไปยังบรรทัดคำสั่ง แต่ถ้าฉัน 'หน้าจอ -r' ฉันสามารถไปที่หน้าจอโดยที่เซิร์ฟเวอร์ทำงานอยู่ให้พิมพ์ 'หยุด' และปิดลงอย่างถูกต้อง
เซิร์ฟเวอร์ทำงานได้ดีถ้าฉัน telnet และทำด้วยตนเองเพียงแค่ต้องเรียกใช้โดยไม่ต้องเชื่อมต่อจากคอมพิวเตอร์ระยะไกลของฉัน
#!/bin/bash
และset -x
ที่ด้านบนสุดของสคริปต์และแสดงผลลัพธ์การติดตามจากสคริปต์ คุณอาจต้องดูในเอกสาร unMENU เพื่อค้นหาว่าเอาต์พุตนั้นไปที่ใด
screen
การเริ่มต้นล้มเหลว ลองเพิ่มset -x
ที่ด้านบนสุดของสคริปต์ (หลัง#!
บรรทัด) และรายงานผลลัพธ์การติดตามเมื่อคุณเรียกใช้สคริปต์