contabを使用してbashスクリプトでScreenセッションを作成する


8

サーバーが起動するたびに.jarファイルを実行したいので(VPSを使用しています)、を使用してcrontabを編集しcrontab -e、を追加しました@reboot bash /home/bash/startserver.sh。しかし、スクリプトが機能するまでには至っていません。

これが私のスクリプトです:

#!/bin/bash
screen -S bukkit
cd $HOME/server
java -jar bukkit.jar

私が使用する必要がある理由screenは、bukkit.jarを開始すると、そのプログラムに追加のコマンドを入力できるコンソールに移動するためです(ただし、このサイトのMinecraftとそのサーバーについては、すべて知っているはずですが、 、笑)、しかし、実行中に他のコマンドをrootとして、また他のプログラムのために実行できる必要があり、さらにPuTTYセッションを閉じる必要もあります。

唯一の問題は、このスクリプトを実行するとスクリーンセッションが作成されますが、IDが空白であるため、IDがに表示されないことscreen -lsです。むしろ、私は/run/screen/S-rootIDを見つけるために行って、それから典型的なものscreen -X -S $name quitを使わなければなりません。

多分これは不可能であるかもしれません、または多分これを行う簡単な方法があります(私はもっと単純にしたいと思います)、しかしこれがなぜうまくいかないのか理解できません。そして、これが可能であるscreen -S bukkit場合、bashスクリプトを実行しているときにセッションに再参加することは可能ですか?(複数の質問だと思いますが、どうもありがとうございました!(括弧))

回答:


15

画面をデタッチモードで起動し、画面内でコマンドを実行します。

screen -d -m -S bukkit bash -c 'cd $HOME/server && java -jar bukkit.jar'

専用のスクリプトを作成することもできますbukkit.sh

#!/bin/bash -e
cd ~/server
java -jar bukkit.jar

そのため、スクリプトがより複雑になった場合に、に長い行を記述する必要がなくscreenscreenコマンドを同じままにすることができます。

screen -d -m -S bukkit path/to/bukkit.sh

1
私は両方のオプションを試してみました。1つはより長いファイル、もう1つは2つの個別のファイルですが、スクリーンセッションがまったく作成されません。コマンドラインから直接コマンドを実行してみましたが、どちらも機能しませんでした。:/
Jacob Larson

エラーメッセージなどが表示されますか?まず、bukkit.shスクリプトをコマンドラインで実行します。次に、動作することを確認しscreen -S bukkit path/to/bukkit.shます。次に、動作することを確認しscreen -d -m -S bukkit path/to/bukkit.shます。最後に、cronをセットアップします。最も単純なことを最初に試し、どのステップが壊れるかを理解できるように少しステップを踏んでください。それと、助けが必要なときに表示されるエラーメッセージを教えてください。
janos 2014

1

update-rc.d起動時にサービスをオンにするには、次のようにする必要があります。

# update-rc.d cron defaults

@JacobLarsonどういたしまして..回答としてマークし、これが役立つ場合は
賛成投票
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.