使っていますリモートログイン自動画面ホストに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
混乱の可能性を排除することもできます。