GNU画面を再起動後も存続させる


18

私はGNUスクリーンをたくさん使っています。サーバーを再起動しなければならないたびにすべてのセッションが失われることは非常に迷惑です(事前に知っていても、すべてを再度セットアップする必要があります)。

再起動後も画面を維持する方法をウェブで検索しましたが、私に合った方法は見つかりませんでした。私が見つけたいくつかの方法とそこに欠陥があります:

  • CryoPID:死んでいるようで、2005年以降、スクリーンのサポートを含むと約束されています
  • DMCTP:setuid()に問題があり、私にとっては機能しませんでした(私は一生懸命努力しなかったことを認めます)
  • セッションをゼロから再作成しようとするスクリプト。あなたはまだあなたの履歴を失い、私も環境変数が正しく設定されていないと思います(そして私がそれを試したとき、すべてのセッションを起動しませんでした)

たぶん誰かがより良いプロセスフリーザーを知っていますか?これが最も有望な方法のようです。


たぶん、リブートする代わりに休止状態にする必要があります:-)ずっと前にDMCTPを使用していたことを覚えていて、それが機能しました(IIRC、しかしよくわかりません...)
ナマケモノ

1
さて、ほとんどの場合、カーネルの更新またはハードウェアの交換により、再起動が強制されます。(とにかく私には任せていません...)-DMCTP:画面を再コンパイルせずに動作させる方法に興味があります(インターネットで提案されています)。
fuenfundachtzig

1
画面の代わりにtmuxを使用しているため、セッションスクリプトを簡単に記述できます。それはセッションを「保存」しませんが、簡単にコマンドをtmuxに送信してレイアウトを実行し、「キーストローク」をクライアントに送信して、必要に応じてディレクトリを変更し、アプリケーションを起動できます。画面でも同様に実行できると確信していますが、tmuxを使用すると簡単に見えるようになります

回答:


13

希望する方法でスクリーンセッションを保存する方法はありません。私がやったのは次善の策でした。サーバーに接続し、リグを好きなようにセットアップするためのスクリプト化されたautosshです。

大好きです。

ローカル接続がダウンして、私は待って、それが戻ってきて、私の仕事があります(ネストされた画面を使用します)。サーバーがダウンまたは再起動しましたが、待機し、デフォルトの位置に戻りました。これは私が望んだ連続感を与えてくれます。

とにかく、私は数年前にスクリーンリストでこの正確な質問をしました。

要約:スクリーンの永遠の命を求めない。代わりに復活することを学びます。

これは.screenrc構成の中核です:

econnectプログラムに変更したautosshパッケージには、rscreenという例があります。

--escパラメーターは、リモート画面のエスケープを別のものに設定することです(私のエスケープは `)

#add much much more scrollback
defscrollback 10000

# make some default windows

screen -t ADMIN     1
chdir /Users/chiggsy/Sites/
screen -t SITES    2
chdir /Users/chiggsy/src/
screen -t SRC 3
chdir
screen -t FERGUS  4 /Users/chiggsy/bin/econnect --host host.example.com --port 50000 --esc g --user sol
screen -t LAEG 5  /Users/chiggsy/bin/econnect --host host.example2.com --port 505000  --esc g --user invictus

screen -t ROOT      0   sudo su -m

2

参照:http : //skoneka.github.io/screen-session/

Available screen-session modes: 

---- 
save              - save Screen ( and VIM ) session 
load              - load session 
ls                - list saved sessions 
---- 

dump              - print detailed informations about windows in the session 
group             - move windows to a group 
layoutlist        - display a list of layouts 
layout-checkpoint - record a snapshot of the current layout. 
layout-history    - display saved snapshots of the current layout 
layout-redo       - load a snapshot of the current layout, 
layout-undo       - load a snapshot of the current layout, 
layout-zoom       - zoom into and out of a region 
kill              - send SIGTERM to last the process started in a window 
kill-zombie       - kill all zombie windows in the session 
kill-group        - recursively kill all windows in a group 
manager           - sessions manager (screenie like) but featuring session 
                    preview in a split window 
nest-layout       - copy a layout to the current region 
new-window        - start a new Screen window in the same working directory 
                    on the position next to the current window 
name              - get or set the sessionname 
regions           - display a number in every region (like tmux display-panes) 
renumber          - renumber windows to fill gaps 
subwindows        - recursively print windows contained in groups 

2

サーバー障害で、同じ質問がここにない1つのヒントを受け取りました:tmux-resurrectで使用tmuxします:

tmuxシステムの再起動後に環境を復元します。

復元できるもの:

  • すべてのセッション、ウィンドウ、ペイン、およびそれらの順序
  • 各ペインの現在の作業ディレクトリ
  • ウィンドウ内の正確なペインレイアウト(ズーム時でも)
  • アクティブおよび代替セッション
  • 各セッションのアクティブおよび代替ウィンドウ
  • フォーカスのあるウィンドウ
  • 各ウィンドウのアクティブなペイン
  • 「グループ化されたセッション」(複数のモニターでtmuxを使用する場合に便利な機能)
  • ペイン内で実行されているプログラム!詳細については、復元プログラムdocをご覧ください。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.