GNU/Linux >> Belajar Linux >  >> Linux

Linux – Mengirim Input Teks ke Layar Terpisah?

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?
Linux
  1. Mengirim Input Ke Sesi Layar Dari Luar?

  2. Linux – Nonaktifkan Pengosongan Layar Pada Konsol Teks?

  3. Ubah nama host server Linux

  1. Instal ownCloud 5 di Linux Mint 14

  2. Administrasi Server Linux

  3. mengirim input teks ke layar terpisah

  1. Bunuh sesi layar terpisah

  2. Pilih teks menggunakan keyboard di shell linux

  3. Cara mem-boot sistem Linux tanpa server grafis