
OS X にはこれがあります。理想的には、ターミナルの視点から再起動がまったく発生しなかったかのように表示したいです (リモート セッションを無視し、バックグラウンド プロセスは今のところ 0 であると仮定します)。つまり、ターミナルの各タブで stdin、stdout、stderr (つまりスクロールバック) の履歴を確認したいのです。
注意: これは bash の履歴に関するものではありません。これは、再起動間でターミナル セッションを維持することに関するものです。
答え1
いいえ、少なくともgnome-terminal
やその他のVTE
ベースのエミュレータでは、暗黙的かつ便利な方法では不可能です。
(もちろん、再起動前にすべてのタブを明示的に確認し、「すべて選択」して内容をファイルにコピーして貼り付け、再起動後にそれらのファイルを何らかのビューアで表示することもできます。私の理解では、これはあなたが探しているものではありません。また、色やその他の書式設定は失われます。)
VTE
、背後にあるターミナル エミュレーション ウィジェットgnome-terminal
、および他の多くのターミナル エミュレーターは、スクロールバック コンテンツのほとんど (ただし、最新のビットではありません) を、/tmp
デフォルトで の下にある一時ファイルに保存します。目的の動作を妨げる主な設計上の決定は次のとおりです。
これらのファイルは、作成後すぐにリンク解除されます。これは、ターミナル エミュレータが何らかの理由で正常に終了しなかった場合でも、ファイルが自動的に削除され (ディスク領域が解放されます) るようにするためです。ファイルを保存するには、ファイル システム ツリーにリンクし直すか (可能かどうかはわかりません)、別のファイルにコピーする必要があります (スクロールバックが大きい場合は遅いアクションであり、ディスク領域不足を適切に処理することは困難です)。
ファイルは、
/tmp
多くのディストリビューションで再起動時に消去されます。代わりに別の永続的な場所を選択するか、ブート スクリプトとの連携が必要です。これらのファイルは暗号化されています (バージョン 0.40 以降
VTE
)。これは、誰かがディスクにアクセスした場合にデータが漏洩するというプライバシーの問題を克服するためです。暗号化キーはgnome-terminal
のメモリ内でのみ使用できます。これらのファイルを保持するには、暗号化レイヤーをスキップするか (以前のプライバシーの問題が再び発生します)、少なくとも再起動中は一時的にキーをディスク上に配置する必要があります (... えーと、そのユーザーが再度ログインして再起動するまでgnome-terminal
... という言い方もあまりよくありません)。プライバシーを気にしないか、ファイルシステムが暗号化されていることが保証されている場合にのみ実行可能です。
他にも対処すべき小さな問題があります。たとえば、スクロールバック データの最後のビットを含むこれらのファイルの不完全なブロックをフラッシュすることです。
VTE
あなたが求めている機能の妨げとなっている設計上の決定のいくつかを概説できればと思います。現在の設計目標を維持しながら、あなたの要求に対応する方法がわかりません。おそらく、VTE
の機能の一部を犠牲にして、あなたが求めている機能を実行する別のターミナル エミュレーターがあるかもしれませんが、私にはわかりません。
答え2
非常に便利なツールを使用することをお勧めしますscreen
。学ぶ価値は十分にあります。要約すると、別の質問に回答したものをもう一度繰り返します。
screen -t ....
.screenrcでは、カスタム コマンドを使用してデフォルトのウィンドウを開始できるため、異なるセッションを復元したい場合は、異なる .screenrc ファイルを使用してセッションを復元できます。gnu.org スクリーンマニュアル - スタートアップファイル
ターミナル セッションを持続させる良い方法の 1 つは、サーバー上で 'screen' セッションを実行することです。'screen' セッションでは、そのサーバー上に複数のウィンドウが用意され、他のマシンなどにログインできます。サーバー上で複数の 'screen' セッションを実行できます。必要なセッションを切断して再接続できます。'screen' は昔ながらのコマンド ライン キーボードですが、その動作を学習して試してみる価値は十分にあります。これには、いくつかの大きな利点があります。
- インストールが簡単で、どの Unix (または Cygwin) でも実行でき、グラフィックは不要です (端末のテキスト グラフィック以外)
- 永続的なウィンドウターミナルセッションを提供します(サーバーが再起動されない限り)
* スクリーンクイックスタート *
RTFM:gnu.org スクリーン ユーザーズ マニュアル
- screen - screenを実行して新しいセッションを作成するだけです
- screen -ls - 実行中のスクリーンセッションを一覧表示する
- screen -r 20229.pts-2.bangor - セッションに再接続
の* 画面のエスケープ文字はデフォルトでCtrl-aです *ただし、プロセスのバックグラウンド制御を重視しない人のために、一部のクレイジーなループ実行者が .screenrc でこれを変更した場合は除きます (例: 「escape ^Zz」)。screen で実行している場合、実際に Ctrl-a でターミナル (行の先頭に移動) に移動するには、Ctrl-a Ctrl-a と入力します。
- ESCAPE c - 新しいスクリーンウィンドウを作成する
- ESCAPE 0 (または 1 2 3 4 5 6 7 8 9) - ウィンドウ 0 (または 1 2 . . ) に切り替えます
- ESCAPE p または ESCAPE n - 前のウィンドウまたは次のウィンドウに切り替える
- ESCAPE " - ウィンドウリスト
- ESCAPE h - 画面ヘルプを表示
別の質問については、画面のヘルプ ページ、コマンド ラインの使用法、および .screenrc の例をここに完全に掲載しました。