いくつかのコマンドを並列に実行しており、すべてのコマンドが完了した後に最後の出力(ターミナルエミュレータのスクロールバックから)を見たいと思います。これは私のテストスクリプトですtest.screen
。
#
screen -t A sh -c 'echo important info && sleep 2'
split
focus
#
screen -t B sh -c 'echo another important info && sleep 5'
スタートコマンド:
$ screen -c test.screen
出力:
[screen is terminating]
[il@reallin ~]$
--
another important info
1 B
1つの問題は、最初のジョブがsleep 2
完了すると印刷されたメッセージがimportant info
削除されることです。zombie kr
最初に追加すると、画面はまったく終了しません。回避策として、発信者はすべての画面プロセスが終了するのを待ってから発行できます。-X quit
別の問題:シャットダウン時にキャレットが一番下に移動せず、シェルscreen
プロンプトが一部のデータを上書きします。解決策はecho
$LINES番です。
ベストアンサー1
画面の終了時に画面が消えないようにするには、代替画面に切り替わらないように端末の説明を選択(または変更)する必要があります。これがTERM
価値です外部 screen
。
xterm(およびPuTTYなどの一部)では、代替画面の使用を防ぐように端末を構成できますが、xtermの代替画面機能を複製するほとんどの端末では、これはハードコードされて構成できません。したがって、端末記述が始点です。
ncursesは代替画面を表示しない端末記述「xterm1」を提供します(そしてDebianで見たことがあるので、Ubuntuのような派生ディストリビューションにあるかもしれません)。他のシステムでは、状況によって異なります。 infocmpとの違いは次のとおりです。
comparing xterm1 to xterm.
comparing booleans.
comparing numbers.
comparing strings.
rmcup: NULL, '\E[?1049l'.
smcup: NULL, '\E[?1049h'.
Screenプログラムには通常、オフになる代替画面の独自のバリエーションもあります。
altscreen on|off
If set to on, "alternate screen" support is enabled in virtual termi‐
nals, just like in xterm. Initial setting is `off'.
追加資料: