Linuxサーバーを自動化したい(Screenコマンド編)
お久しぶりです。間隔空きすぎて何回目のお久しぶりかわかりません。
最近、Ubuntuサーバーでゲーム鯖(Minecraftやらパルワールドやら)を建てています。その際にサーバーの立て直しやバックアップ等がいちいち面倒であるため、すべて自動化するために色々調べていました。
すると、標準コマンドの「Screen」と自動起動等のシステム管理ができる「Systemd」と任意のスクリプトの定期実行の「crontab」の三つを使ってうまいことができそうです。
ただこのScreenコマンド、シンプルですが微妙な癖があったため、備忘録として残しておきます。(完全自分用が覚えるようなので情報の正確性は気にしないでください…)
Screenコマンドを使う際のオプション
とりあえずよく使うのだけを書きます。
現在のscreenのセッション一覧
screen -ls
新しいセッションを名前つけて作成
screen -S [任意のセッション名]
新しいセッションをアタッチせずに作成(自動化にて大事)
screen -m -d
オプションですが、"-d -m" でも "-md" でも "-dm" でも可(二種類のオプションがあればOKらしい)
「-d」はバックグラウンドにてセッションを開始
「-m」はシェルを開かずにセッションを開始
デタッチ状態で外部からコマンドを実行
screen -S [セッション名] -X stuff "「セッションに渡したい文字列」"
# コマンドで「echo Hello World!」を実行したい場合
screen -S [セッション名] -X stuff "echo Hello World!\r"
コマンドの文字列の最後に改行コードを入れる必要がある。
(「\r」でも「\015」でも可)
また、マイクラ鯖起動時等のシェル以外の入力待ち状態の時でも、上記にてコマンドを渡すことができる。
セッションを削除
screen kill [PID]
# pidはscreen -lsにて確認可能
とりあえずこんなところ。何かあれば書き加えるかも知らない。
今後はsystemdとcrontabについても備忘録を置いておきたいな。