再起動後にすべてを再ロードできるように、GNU画面ウィンドウ(または標準シェル)の「状態」を保存することは可能ですか?
- 開いた殻の数
- 各シェルの名前
- 各シェルの現在のディレクトリ
- 各シェルの歴史
- 可能であれば環境変数
答え1
フルスクリーンセッションを保存することは事実上不可能です。
あなたができることは、.screenrc
システムを再起動した後にいくつかのことを設定する適切なファイルを作成することです。
あなたがリストした内容に関するいくつかのコメントは次のとおりです。
- 開いた殻の数
- 各シェルの名前
- 各シェルの現在のディレクトリ
起動時に.screenrc
特定のシェルを開くには、次のものを使用します。
## set the default shell
shell zsh
# screens
screen -t 'zsh'
screen -t 'mutt' mutt
screen -t 'zsh' /home/user/bin/scriptToRun
[..]
ウィンドウ名として「」の間に文字列が表示され、名前の後のコマンドはデフォルトのシェルで実行されます。特定のディレクトリの変更、一部のログオンなど、必要なスクリプトを含めます。
- 各シェルの歴史
セッション内でシェル履歴を共有することを検討しましたか? IMHO これにより、作業が簡単になります。 ZSHでは、すべてのsetopt SHARE_HISTORY
操作が完了します。.zshrc
- 可能であれば環境変数
これが本当に必要であり、妥協点を作成したくない場合は、画面の現在の状態を読み、シェルの数、環境変数などを保存し、その情報を呼び出す起動スクリプトです.screenrc
。私にとっては、画面のメインウィンドウをカスタマイズできる場合は、再起動後にクリーンな環境が好きなので、努力する価値はありません。
答え2
偶然というプログラムを発見しました。スクリーンセッション。 GNU Screenセッションをある程度保存して再ロードできます。
答え3
というプロセスの状態を固定するためのツールがあります。クーラント。しかし、現在はサブプロセス階層の再生成をサポートしていないため、GNU画面では機能しません。彼らは将来このようなことが起きることを望んでいると言いますが、現在ではプロジェクトはあまり活発に進まないようです。それにもかかわらず、進捗状況を追跡したい場合があります。
答え4
私は数年前にSolarisで同様のものを作りました。それは画面に関するものではなく、セッションに関するものです。 「$TTY = 何でも」。 echoxの考えは正しいです。
ヒント:複数のシステムでこれを行う場合は、マウントされた/homeまたは同様のnfsに基づいて同じ定義を持つのではなく、各システムがログイン時に実行する必要がある操作の固有の定義を持つ必要があることに注意してください。
HTH、-pbr