
新しい screen セッションでコマンドを実行し (そしてそこから切り離し) たいのですが、うまくいきません。新しい screen セッションでプロセスを開始し、次のように切り離そうとしました:
screen -d -m mycommmand
しかし、そのスクリーンセッションにアタッチしようとすると
screen -r
「再開できる画面がありません」というメッセージが表示されます。また、新しい画面セッションでコマンドを開始しようとしました。
screen mycommand
これを実行すると、新しい screen セッションが開始されますが、コマンドは実行されません。
このコマンドはゲーム サーバーを起動する .sh スクリプトですが、ゲーム サーバーは起動しません。
[編集] 正確なコマンドを尋ねる人がいたので、ここに示します。これは、別の画面セッションで Minecraft サーバーを起動する bash スクリプトです。
./startServer.sh
.sh スクリプトは次のとおりです。
cd "/home/tim/minecraft/survivalServer"
screen -S "minecraft-server-1-14-4" -m -d /home/tim/java/bin/java -Xmx4096M -Xms1024M -jar /home/tim/minecraft/survivalServer/minecraft_server.1.14.4.jar nogui
さて、問題は、スクリプトを実行すると、新しいスクリーン セッションの作成に失敗するということです。なぜでしょうか?
ご協力をお願いします。ありがとうございます
答え1
問題は、ネストされたデタッチされたスクリーン インスタンスを、デタッチされたスクリーン インスタンス内で起動しようとしていることです。スクリプトには次の行が含まれています:
screen -S "minecraft-server-1-14-4" -m -d /home/tim/java/bin/java -Xmx4096M -Xms1024M -jar /home/tim/minecraft/survivalServer/minecraft_server.1.14.4.jar nogui
これは screen を起動し、screen セッションに名前を付けminecraft-server-1-14-4
てから minecraft を起動してデタッチします。ただし、 も実行しようとしていますscreen -d -m ./startserver.sh
。つまり、スクリプトで screen セッションが作成される前に、デタッチされた screen セッション内でスクリプトが既に実行されています。これは...あまりうまく機能しない傾向があります。
機能的には次のものと同じです:
wolferz@khaos ~ $ screen -m -d screen -S 'mysession' -m -d top
wolferz@khaos ~ $ screen -r
There is a screen on:
24850.mysession (07/24/2019 10:47:46 PM) (Dead ???)
Remove dead screens with 'screen -wipe'.
There is no screen to be resumed.
スクリプトを直接実行したいのであれば、 と実行してください./startserver.sh
。するとプロンプトに戻ります。その後、screen -r
通常どおりに を実行して Minecraft コンソールに接続できます。