UNIXスクリーンセッションに特定の名前を付ける方法はありますか?たとえば、同じプログラムを複数回実行していて、それぞれが異なるパラメーターを使用していて、どれがどれかを確認したいとします。
-S name
オプションを使用してセッションを開始するときに、セッションに名前を付けることができます。実行中の画面から、CTRL-a, :sessionname name
と入力して変更できます。 screen -ls
を使用して実行中のスクリーンセッションを表示し、screen -xS name
を使用して名前でセッションに接続できます。
1つの画面セッション内で、各ウィンドウに名前を付けることもできます。これを行うには、CTRL-a, A
に続けて名前を入力します。 CTRL-a, "
と入力して名前付きウィンドウのインタラクティブなリストを表示し、そのリストから切り替えるウィンドウを選択できます。
画面と画面内の端末の両方に名前を付けることは、それらが何であるか、およびそもそもなぜそれらを起動したのかを思い出すのに非常に役立ちます。
ここには2つの概念がありますが、どちらを考えているのかわかりません。
C-a c
はウィンドウを作成し、C-a n
およびC-a p
は次/前のウィンドウに切り替えます。-r
または-R
)オプションなしで画面を開始すると、新しいセッションが作成されます。ウィンドウにはタイトルがあり、-t
コマンドラインオプション、C-a A
キーバインディング、title
コマンド、または\ek
エスケープシーケンスを使用して設定できます。詳細は shellter's answer を参照してください。
セッションには名前を付けることができます。通常は、コマンドラインで-S
オプションを使用して名前を設定します。名前を指定しない場合、screenが名前を構成します。複数の画面セッションを使用する場合、通常はそれらに異なるセッション名を付けます。 screen -ls
;を使用して、実行中のスクリーンセッションを一覧表示できます。各セッション行の最初のワードは12345.sessionname
で、12345は画面プロセスIDです。名前またはプロセスIDで示されるセッションを再開するには、screen -r sessionname
またはscreen -r 12345
を使用します。
ああ...画面、それは私を連れ戻す;-)
1つのウィンドウ
-t name
sets the title (a.k.a.) for the default Shell or specified program.
See also the "shelltitle" .screenrc command.
.screenrcから開始された複数のセッションの場合
screen -t top 2 Nice top
screen -t ....
画面の manページの1つのオンラインコピーへのリンクです。
編集:追加
現在の画面名を変更するには、次のようなシェルスクリプトツールを作成します。
cat scrnTitle.sh
#/bin/bash
echo -ne '\ek${0}\e\\'
未テスト、作業中のシステムで利用できる画面がありません。
screen
の実行中:
Ctrl+a
(またはscreen
エスケープシーケンスが何であれ)A
上記の回答は、起動時に画面に名前を付ける方法をすでに示しています。また、起動後は画面の名前を変更できないことも指摘しています。ウィンドウのタイトルは設定できますが、画面へのアタッチに使用される名前はpid.pty.Hostのままです。
ただし、有用な効果を得るには、エイリアスを使用するとかなりうまくいくことがわかりました。画面に名前を付けるのを忘れた場合や、自然に特定のタスクの画面になった一連の画面が表示されているセッションで自分自身を見つけた場合は、それらに接続するコマンドのエイリアスを設定するだけです。
例:
alias goncompile='screen -r 2354'
Aliasコマンドを単独で発行すると、現在の画面と、それらに接続するように設定したコマンドが通知されます。
それらを削除するには、unalias
を使用します。