web-dev-qa-db-ja.com

「スクリーン」で使用するシェルスクリプトを作成しますか?

私はしばらくの間、シェルスクリプトの作成、これを含むさまざまなフォーラムの閲覧、あらゆる種類の検索用語の使用を不運に取り組んでいます。重複した質問を作成していないことを願っています。

ゲームサーバーがあり、再起動またはクラッシュ後に画面を手動で初期化する必要がありますが、いくつかのコマンドを1つのスクリプトにまとめてダウンタイムを短縮したいと考えています。私がやりたいことは、スクリーンセッションを作成し、それに切り替えて、新しいセッション内でシェルスクリプトを実行するスクリプトを作成することです。

シェルスクリプトで次のコードを試しました。

#!/bin/sh
screen -S tf2
./startserver.sh

スクリプトを実行すると、画面'tf2'が作成され、希望どおりにセッションに入ります。サーバーは、望んでいたところからは起動しませんが、実行した画面セッションの外で起動します。誰も端末に参加せずにゲームサーバーをオンラインにできるように、スクリーンセッション内にある必要があります。

私はまだシェルスクリプトが得意ではありませんが、喜んで学習します。何か間違ったことをしていますか?私がこれについて行くべき別の方法はありますか?

2
S3ntri

man screenの概要で述べたように、画面でコマンドを実行する場合は、コマンド発行画面に追加する必要があります。あなたの場合、それは次のようになります

 #!/bin/sh
screen -S tf2 ./startserver.sh

しかし、あなたのシェルスクリプトが画面の作業ディレクトリにあるかどうかはわかりませんが、これを行う方が賢いです

 #!/bin/sh
screen -S tf2 /full/path/to/startserver.sh
3
db429