有効な画面セッション名

有効な画面セッション名

GNU画面(バージョン4)を使用すると、次のコードが正しく実行されるのはなぜですか?

$ screen -S some-name

ただし、セッション名にスラッシュ()を含めようとすると、/マルチユーザーサポートのエラーが発生します。

$ screen -S some/name
Must run suid root for multiuser support.

画面内でセッション名を設定しようとすると、次のようになります。

$ screen
C-a :sessionname some/name

次のエラーが発生します。

: bad session name 'some/name'

したがって、aは/セッション名に無効な文字です。見ているスクリーンマニュアルページ、次に無効または予約済みの文字が表示されませんsessionname

「-Sセッション名」

新しいセッションの名前をsessionnameに設定します。このオプションを使用すると、デフォルトの tty.host サフィックスの代わりに意味のある名前をセッションに付与できます。この名前は、screen -list および screen -r コマンドのセッションを識別します。このオプションはsessionnameコマンドと同じです(セッション名を参照)。

8.5 セッション名 - コマンド: セッション名 [名前]

(なし)現在のセッションの名前を変更します。 screen -listの場合、名前の前にプロセスIDが表示されます。パラメータ名を省略すると、そのセッションの名前が表示されます。注:$ STY環境変数はまだ古い名前を反映しています。これは混乱を招く可能性があります。デフォルトは tty とホスト名で構成されます。

また、セッション名が一致せず、'引用"符が一致しないと文句を言うのは構文に関連しているようです。たとえば、名前を:sessionname 'test"'指定します。test"など^A^B制御文字を生成します。

セッション名に有効な構文または文字は何ですか?

答え1

screenセッションに名前を付ける目的は、-S名前を付けて(たとえばを使用して)セッションを操作できるようにすることです。screen -r ...

-rオプションの下のマニュアルページを確認してください。

-r [pid.tty.host]
-r sessionowner/[pid.tty.host]
分離された画面セッションを復元します。他のオプションは指定できません(-d / -Dとの組み合わせを除く)。ただし、複数の個別のスクリーンセッションを区別するには、[pid.]tty.hostのオプションの接頭辞が必要になる場合があります。 2番目のフォームは、マルチユーザーモードで実行されている他のユーザーのスクリーンセッションに接続するために使用されます。これは、画面が他のユーザーのディレクトリでセッションを見つける必要があることを示します。これには setuid-root が必要です。

したがって、文字を含むセッション名は/として解釈されますowner/name。 (これは対応-Sするオプションの下でよりよく文書化することができます。)

あなたできるする

screen -S $USER/name

これは次のとおりです。

screen -S name

画面バージョン4.01.00を使用したいくつかの簡単な実験では、セッション名に禁止されている他の特殊文字が見つかりませんでした。次のすべて:

screen -S 'foo bar'
screen -S 'foo"bar'
screen -S "foo'bar"
screen -S 'foo\bar'
screen -S "foo'bar^Xbaz"

私にとってはうまくいきます。

最後には^X実際に文字通りの文字がありますCtrl-Xscreen -ls文字通り見せなければなりませんscreen -ls | cat -A。名前を指定してこれらのセッションをすべて復元できます。

screen -dr 'foo bar'

$STYなどで、すべてのセッションで値が正しいです。

(私は明らかにしたいので、制御文字を使用しないことをお勧めします。)

関連情報