Screenコマンドの使用方法

  1. Screenの状態確認

screen -ls

Attached:現在、このScreenがメイン端末として使用されており、アクティブな状態です。
Detached:このScreenはバックグラウンドで動作しており、非アクティブな状態です。

  1. コマンドヘルプの表示

screen -help

  1. 仮想端末の作成

(1)-Rオプションを使用すると、同じ名前のScreenが既に存在する場合、そのScreenに直接接続します。
(2)-Sオプションまたは単純にscreenコマンドを使用すると、以前に作成されたScreenをチェックせず、同じ名前のScreenを作成します。

### 方法1:Helloという名前の仮想端末を作成
screen -R Hello
### 方法2:
screen -S Hello

初期からログを記録する

(1)起動時に-Lオプションを追加(出力ログの有効化)。現在のディレクトリにscreenlog.0ファイルが生成されます。-Lオプションを実行してもログが見られない場合は、ファイルの読み書き権限が不足している可能性があります。例として、sudo chmod 777 filenameで権限を変更できます。

screen -L -d -m -S test # 初期から分離モードで実行されるセッション、セッション名はtest
-L:ログ記録を有効化
-d -m:分離モードでセッションを開始
-S:セッション名(ここでは"test")

screen -r test # このセッションに接続し、セッション内のすべての画面出力がscreenlog.0ファイルに記録されます。

(2)-Lオプションを追加せずに起動した場合、Screenセッション内でCtrl+A Hを押すことで、現在のディレクトリにscreenlog.0ファイルが生成されます。
最初にCtrl+A Hを押すと、左下部にCreating logfile "screenlog.0"と表示され、ログの記録が始まります。
再度Ctrl+A Hを押すと、Logfile "screenlog.0" closedと表示され、ログの記録が停止します。
上記の2つの方法には欠点があり、複数のScreenセッションを生成した場合、すべてのセッションがscreenlog.0ファイルにログを記録するため、内容が混乱してしまうことがあります。
(3)/etc/screenrcの最後に次の行を追加します:

logfile /tmp/screenlog_%t.log

注意: logfile ./screenlog_%t.logと記述すると、ログファイルは現在のディレクトリに保存されます。
%tはウィンドウの名前を表し、これはScreenの-tパラメータに対応しています。したがって、Screenを起動する際にはウィンドウの名前を指定する必要があります。例えば:

screen -L -t window1 -S test

これはtestセッションを起動し、ウィンドウ名をwindow1に設定します。スクリーンログは/tmp/screenlog_window1.logに記録されます。
Screenセッション内で-Lオプションを省略した場合でも、Ctrl+A Hを押すことで、/tmp/screenlog_window1.logにログが記録されます。

  1. 現在の仮想端末を終了する

Ctrl+A+Dを押すと、Screenのプロセスがバックグラウンドで実行され、メイン端末に戻ります。

  1. -Rまたは-rコマンドで作成された仮想端末に戻る:

# screen -rコマンドを使用
screen -r [pid/name]

pid/name:仮想端末のPIDまたは名前

  1. 仮想端末を削除する:

(1)仮想端末内に以下を入力します:

# 端末を終了
exit

(2)メイン端末内で以下のコマンドを使用して解放します:

# -R/-r/-Sいずれでも可
screen -R [pid/Name] -X quit

アタッチド状態に入れない問題

Screenには2つの状態があります。アタッチド状態とは、現在の仮想端末が使用されていることを意味します。この状態では、アクセスできません。しかし、Ctrl+A+dを押して仮想端末をバックグラウンドに移行させなかった場合、ネットワークが切れたことや長時間操作していないなどの理由で、非正常に終了した場合、仮想端末内でユーザーがいないにもかかわらずアタッチド状態になることがあります。

screen -d [pid/Name]

タグ: screen linux ターミナル セッション管理 ロギング

6月20日 19:38 投稿