名前付きスクリーンセッションを再接続または作成しますか?(または永続的な画面セッション)


27

基本的に、自動的に再接続したいリモート画面セッションがあります。現在、次のコマンド(iTermブックマークまたはエイリアスとして)でこれを行っています。

ssh host -t screen -x thesessionname

これは正常に機能しますが、何らかの理由でセッションが停止した場合、次回接続するときにセッションを再作成したいと思います。の-Rフラグscreenほぼ完璧です:

ssh host -t screen -R -S thesessionname

..しかし、セッションが既にアタッチされている場合、2番目のセッションが作成されます(-R最初のデタッチされたセッションを簡単に検索し、見つからない場合は新しいセッションを作成します)

ようにする方法がある-Rにも接続セッションのためのフラグを見て、そして場合にのみ、新しいものを作成してthesessionname存在していませんか?

これを簡単に実行できない場合、スクリーンセッションが終了したときに自動的に再作成できますか?おそらく、名前付きセッションを検索するcronを介して実行されるスクリプトは、存在しない場合は作成しますか?

回答:


32

試行についてもう少し持続するように画面に指示します。

-D -R
    Attach here and now. In detail this means: If a session is run-
    ning,  then  reattach.  If necessary detach and logout remotely
    first.  If it was not running create it and  notify  the  user.
    This is the author's favorite.

したがって、2つを組み合わせると、ソリューションが必要になります(「-DR」は「-D -R」と同等です)。

screen -DR <yoursession> 

さらに知っておくと便利なのは、次のもので実行中のセッションを表示できることです。

screen -ls

5
完璧screen -x -R -S mainです、私が最終的に使用したものです(強制的に切り離すことなく同じように動作します)、ありがとう!
DBR

を使用する場合はsceen -r <yoursession>、(新しいセッションを作成する代わりに)が既にアタッチされているときにエラーが発生します。
danger89

11

いくつかの良いオプション。まず、私のお気に入り:

screen -x -R

これにより、使用可能な最初のスクリーンセッションに接続され(別の接続が接続されている場合は共有されます)、スクリーンセッションがまったくない場合は、新しいセッションが開始されます。

screen -d -RR

そのためのドキュメントには、「セッションを再接続し、必要に応じてセッションをデタッチまたは作成します。複数のセッションが利用可能な場合は、最初のセッションを使用します。」基本的に、double-Rは、最初に接続するセッションを探します。

screen -D -RR

「今ここに取り付けてください。それが何を意味するにせよ、それを行うだけです。」接続されている他のセッションをデタッチしてリモートログアウトし、可能な最初のセッションに接続します。基本的に、既存のセッションにアタッチするために必要なことは何でも行い、そこに何もない場合は新しいセッションを作成します。

最初の(-x -R)は問題を引き起こす可能性が最も低い(他の接続を切断しない)が、接続するものがある場合は常に単純に接続し、接続するものがない場合は何かを作成します。


1
これらはすべて素晴らしい/便利なオプションですが、名前でセッションに(再)接続するという元の質問に答えるものはありません。
ダニエル

5

私が使う

screen -dRRS sessname

他のシェルでのログイン全体がドロップされるのを-D望んでいませんし、マルチアタッチモードも絶対に使いたくありません-x

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.