Saya mencoba menjalankan server minecraft di server unRAID saya.
Server akan berjalan di shell, dan kemudian duduk di sana menunggu input. Untuk menghentikannya, saya perlu mengetik 'stop' dan tekan enter, dan kemudian itu akan menyelamatkan dunia dan keluar dengan anggun, dan saya kembali ke shell. Itu semua berfungsi jika saya menjalankannya melalui telnet ke kotak NAS, tetapi saya ingin menjalankannya langsung di kotak.
ini adalah apa yang saya miliki sebelumnya sebagai upaya pertama:
#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 adalah folder di mana saya memiliki Craftbukkit.jar dan semua file dunia dll. Jika saya mengetikkan baris layar itu secara langsung, layar melakukan pengaturan terlepas dan server diluncurkan. Jika saya mengeksekusi baris itu dari dalam skrip, sepertinya tidak menyiapkan layar
untuk menghentikan server, saya perlu 'ketik' di STOP dan kemudian tekan enter. Pendekatan saya adalah
screen -S minecraft -X stuff "stop $(echo -ne 'r')"
untuk mengirim ke layar 'minecraft' teks s-t-o-p dan carriage return. Tapi itu tidak berhasil, bahkan jika saya mengetiknya langsung ke baris perintah. Tetapi jika saya 'screen -r' saya bisa membuka layar dengan server berjalan, lalu ketik 'stop' dan dimatikan dengan benar.
Server berjalan dengan baik jika saya telnet dan melakukannya secara manual, hanya perlu menjalankannya tanpa terhubung dari komputer jarak jauh saya.
Jawaban yang Diterima:
Saya dapat memecahkan setidaknya sebagian dari masalah:mengapa stop
bagian tidak berfungsi. Secara eksperimental, saat Anda memulai sesi Layar dalam mode terpisah (screen -d -m
), tidak ada jendela yang dipilih, jadi masukan kemudian dikirim dengan screen -X stuff
hilang begitu saja. Anda perlu secara eksplisit menentukan bahwa Anda ingin mengirim penekanan tombol ke jendela 0 (-p 0
). Bagaimanapun, ini adalah ide yang bagus, jika Anda membuat jendela lain di sesi Layar itu karena alasan apa pun.
screen -S minecraft -p 0 -X stuff "stop^M"
(Terjemahkan layar ^M
ke control-M yang merupakan karakter yang dikirim oleh Enter kunci.)
Masalah dengan memulai sesi dari skrip kemungkinan terkait dengan unMENU.
Terkait:Bagaimana mencegah Layar Selamat Datang / Layar Kunci muncul setelah idle di Windows 8?