アプリケーションメニューエントリでターミナルでローカルサーバーを起動し、入力用にターミナルを開いたままにします

アプリケーションメニューエントリでターミナルでローカルサーバーを起動し、入力用にターミナルを開いたままにします

私は次のことを達成したいと考えています。

アプリケーション メニューのエントリをクリックすると、Ubuntu マシン上で実行中の Minecraft サーバーが起動し、ターミナル ウィンドウが (コンソールとして) 開いたままになります。その後、「画面」に戻ったときに、その「コンソール ウィンドウ」からサーバーを管理できます。

動作するまで、デスクトップ上の .sh ファイルからこのスクリプトを試しました。

#!/bin/bash
screen
cd /media/terabyte/minecraft/
./start.sh

しかし、ターミナルは閉じられ、サーバーは実行されたままになりますが、それを制御することはできず、タスク マネージャーから強制終了する必要があります。

答え1

Minecraft サーバーを screen セッションで実行し、Minecraft サーバーが終了した後も開いたままにするには、スクリプトを次のように変更します。

#/bin/bash
screen -m bash -c 'cd /media/terabyte/minecraft/ && ./start.sh ; bash'

これにより screen が実行され、screen セッション内でサーバーを起動するコマンドが実行されます。サーバーが起動すると、bashターミナルを開いたままにするために が呼び出されます。そうでない場合、screen セッションは終了します。

このスクリーンセッションをすぐにバックグラウンドに移動するには、-d(detach) オプションを含めます。次に、そのセッションに属する bash プロンプトを表示するには、まずそのスクリーンセッションに接続する必要があります。

関連情報