シェルで画面を実行するとセッションが見つかりませんが、SSHログイン中に画面を実行するとセッションを見つけることができます。

シェルで画面を実行するとセッションが見つかりませんが、SSHログイン中に画面を実行するとセッションを見つけることができます。

使っていますリモートログイン自動画面ホストにSSHで接続するときにスクリーンセッションを開始するスクリプト。

違いリンカースクリプトから:私は使用しています扱いにくいRemoteLoginAutoScreenで使用強く打つ

私が経験している問題は、SSHが切断され(これが頻繁に発生するため、自動画面構成が発生する)、既存の画面セッションに再接続するのに問題があることです。

ホストコンピュータでは、私の画面プロセスがまだ実行されており、画面ソケットがまだ存在していることがわかります。

$ ps auxww | grep -i screen | grep alexq
alexq     1818  0.0  0.0 103452   868 pts/19   S+   18:08   0:00 grep --color=auto -i screen
alexq    20270  0.0  0.0 120040  2004 ?        Ss   Jul21   0:19 SCREEN -R

$ ls -al /var/run/screen/S-alexq
total 6
drwx------ 2 alexq    alexq  4096 Jul 29 17:26 .
drwxrwxr-x 5 root     screen 4096 Jul 21 21:33 ..
prwx------ 1 alexq    alexq     0 Jul 29 17:46 20270.pts-14.myhost

ただし、画面セッションではなくログインすると、画面に既存のセッションが見つかりません。

$ screen -ls
No Sockets found in /tmp/uscreens/S-alexq.

ベース質問環境変数を/var/run/screen/S-alexqに設定しようとしましたが、SCREENDIRこれでも画面にまだセッションが見つかりませんでした。

$ export SCREENDIR=/var/run/screen/S-alexq
$ screen -ls
No Sockets found in /var/run/screen/S-alexq.

$ export SCREENDIR=/var/run/screen
$ screen -ls
You are not the owner of /var/run/screen.

本当に混乱しているのは、〜/ .zshrcファイルでスプラッシュ画面を "screen -ls"に置き換えると、コンソールに次のものが印刷されることです。

There are screens on:
    20270.pts-14.myhost   (Attached)
1 Sockets in /var/run/screen/S-alexq.

そのため、何らかの理由でログイン中にSSH画面には既存のセッションがありますが、コンソール画面にはありません。

SSHログインセッション中にのみ画面が表示され、その後は表示されない理由を見つけるのに役立つ人はいますか?

答え1

2つのコピーがありますscreen。 1つはセッションをに保存し/tmp/uscreens、もう1つはセッションをに保存するため、/var/run/screenお互いのセッションを見ることはできません。

お互いの会話を強制的に見ることができるとしても、screen異なるバージョンのコピーが出てくる可能性があり、二人が対話を交わしてみると良いことができない可能性もある。ただし、何を観察しても、$SCREENDIRセキュリティ対策である他のセッションディレクトリを使用することを強制することはできません(screen正確なOSと設定に応じてsetuidまたはsetgidの権限を持つため)。 。

$PATHこの問題は、ログイン方法によってログイン方法が異なるために発生します。

回避策は、セッションの開始時と同じ画面コピーを使用してセッションを再開することです。または、コピーの1つを無効または削除して、将来のscreen混乱の可能性を排除することもできます。

関連情報