web-dev-qa-db-ja.com

保存完了GNU画面セッション状態

GNU画面ウィンドウ(または単なる標準シェル))の「状態」を永続化して、再起動後にすべてを再ロードできるようにすることは可能ですか?

  • 開いたシェルの数
  • 各シェルの名前
  • 各シェルの現在のディレクトリ
  • 各シェルの歴史
  • 可能であれば、それらの環境変数
32
Barthelemy

画面セッション全体を保存することは実際には不可能です。

あなたができることは、あなたがシステムを再起動した後にいくつかをセットアップする適切な.screenrcを作成することです。

あなたがリストしたものへのいくつかのコメントはここにあります:

  • 開いたシェルの数
  • 各シェルの名前
  • 各シェルの現在のディレクトリ

私は.screenrcで次のようなものを使用して、起動時にいくつかの特定のシェルを開きます。

## set the default Shell
shell                   zsh

# screens
screen -t 'zsh'
screen -t 'mutt' mutt
screen -t 'zsh' /home/user/bin/scriptToRun
[..]

名前がデフォルトのシェルで実行された後、ウィンドウ名としての ''とコマンドの間の文字列を取得します。特定のディレクトリでの変更やいくつかのログのオープンなど、必要なスクリプトを含めます。

  • 各シェルの歴史

セッション全体でシェルの履歴を共有することを考えたことがありますか?私見これは物事をより簡単にします。 ZSHでは、setopt SHARE_HISTORY.zshrcを使用します

  • 可能であれば、それらの環境変数

本当にこれが必要でトレードオフを望まない場合は、画面の現在の状態を読み取り、シェルの数、環境変数などを保存し、この情報を起動スクリプトに入れるシェルスクリプトについて考えることができます。 .screenrcから呼び出されました。画面のデフォルトのウィンドウをカスタマイズできれば、再起動後のクリーンな環境に感謝しているので、私にとってこれは努力に値しません。

20
echox

screen-session というプロジェクトに遭遇しました。 GNU Screenセッションをある程度保存して再ロードできます。

10
BUGHUNTER

cryopid と呼ばれるプロセスの状態をフリーズするツールがあります。ただし、サブプロセスの階層の再作成をサポートしていないため、現在GNU screenでは機能しません。将来的にはこれを達成したいと考えていますが、プロジェクト現時点ではあまり活発ではないようですが、進捗状況を追跡することをお勧めします。

2
fschmitt

私は同じようなことを数年前にソラリスで構築しました。画面にも関係ありません。セッション関連でした。 「$ TTYの場合=何でも」。 echoxは正しい考えを持っています。

ヒント:複数のマシンでこれを行う場合は、/ homeにマウントされた/ fsなどですべて同じであるのではなく、各マシンがログインしたときに実行する必要のあることの独自の定義に値することを認識してください。

HTH、-pbr

0
pbr