Tôi đang cố gắng chạy một máy chủ minecraft trên máy chủ unRAID của mình.
Máy chủ sẽ chạy trong shell, và sau đó ngồi đó chờ nhập liệu. Để ngăn chặn nó, tôi cần gõ 'stop' và nhấn enter, sau đó nó sẽ cứu thế giới và thoát ra một cách duyên dáng, và tôi trở lại vỏ bọc. Tất cả đều hoạt động nếu tôi chạy nó qua telnnet vào hộp NAS, nhưng tôi muốn chạy nó trực tiếp trên hộp.
đây là những gì trước đây tôi đã có như một nỗ lực đầu tiên:
#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
MCunston là thư mục nơi tôi có Craftbukkit.jar và tất cả các tệp trên thế giới, v.v ... Nếu tôi nhập trực tiếp dòng màn hình đó, màn hình sẽ thiết lập tách ra và máy chủ khởi chạy. Nếu tôi thực thi dòng đó từ trong tập lệnh, nó dường như không thiết lập màn hình
để dừng máy chủ, tôi cần 'gõ' trong STOP và sau đó nhấn enter. Cách tiếp cận của tôi là
screen -S minecraft -X stuff "stop $(echo -ne '\r')"
để gửi tới màn hình 'minecraft' văn bản dừng và trả lại xe ngựa. Nhưng nó không hoạt động, ngay cả khi tôi gõ nó trực tiếp vào dòng lệnh. Nhưng nếu tôi 'màn hình -r' tôi có thể vào màn hình với máy chủ đang chạy, sau đó nhập 'dừng' và nó tắt đúng cách.
Máy chủ chạy tốt nếu tôi telnet và thực hiện thủ công, chỉ cần chạy nó mà không cần kết nối từ máy tính từ xa.
#!/bin/bash
và set -x
ở đầu tập lệnh, và hiển thị cho chúng tôi kết quả theo dõi từ tập lệnh. Bạn có thể cần xem tài liệu unMENU để tìm ra đầu ra đó đi đâu.
screen
thất bại để bắt đầu? Hãy thử thêmset -x
ở đầu tập lệnh (ngay sau#!
dòng) và báo cáo đầu ra theo dõi khi bạn chạy tập lệnh.