GNU/Linux >> Linux の 問題 >  >> Linux

Linux –切り離された画面にテキスト入力を送信しますか?

unRAIDサーバーでMinecraftサーバーを実行しようとしています。

サーバーはシェルで実行され、そこに座って入力を待ちます。停止するには、「stop」と入力してEnterキーを押す必要があります。そうすると、世界が保存されて正常に終了し、シェルに戻ります。 NASボックスにtelnetで接続して実行すればすべて機能しますが、ボックス上で直接実行したいと思います。

これは私が最初の試みとして以前に持っていたものです:

#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」にテキストs-t-o-pとキャリッジリターンを送信します。ただし、コマンドラインに直接入力しても機能しません。ただし、「screen -r」を実行すると、サーバーが実行されている画面が表示されたら、「stop」と入力すると、サーバーが適切にシャットダウンします。

サーバーは、Telnetで接続して手動で実行すると正常に動作します。リモートのコンピューターから接続せずに、サーバーを実行する必要があります。

承認された回答:

問題の少なくとも一部を解決できます:なぜstop 一部が機能していません。実験的に、デタッチモードでScreenセッションを開始する場合(screen -d -m )、ウィンドウが選択されていないため、入力は後でscreen -X stuffで送信されます 失われただけです。キーストロークをウィンドウ0に送信することを明示的に指定する必要があります(-p 0 )。なんらかの理由でそのScreenセッションで他のウィンドウを作成した場合に備えて、これはとにかく良い考えです。

screen -S minecraft -p 0 -X stuff "stop^M"

(画面変換^M コントロールする-Enterによって送信される文字であるM キー。)

スクリプトからセッションを開始する際の問題は、メニュー解除に関連している可能性があります。

関連:Windows 8でアイドリング後にウェルカム画面/ロック画面が表示されないようにするにはどうすればよいですか?
Linux
  1. Linux –テキストコンソールで画面ブランキングを無効にしますか?

  2. Linuxシェルでキーボードを使用してテキストを選択

  3. グラフィカル サーバーなしで Linux システムを起動する方法

  1. LinuxMint14にownCloud5をインストールする

  2. 外部からスクリーンセッションに入力を送信しますか?

  3. 切り離された画面へのテキスト入力の送信

  1. Linuxサーバーのホスト名を変更する

  2. 管理 Linux サーバー

  3. 切り離された画面セッションを強制終了します