ウェブサイト検索

優れたGNUスクリーンプロファイルを.screenrcを使って定義する


ターミナル内に「画面」を起動することを可能にするLinuxユーティリティであるscreenは、デフォルトでは少し設定が不足しています。screenを使用するたびに自動的に読み込まれる素晴らしいscreenプロファイルを作成する方法を学びましょう。

スクリーンとは何ですか?

ScreenはGNUユーティリティです(GNUはオープンソースソフトウェアの大規模なコレクションであり、それをオペレーティングシステムに組み込むことは一般的にLinuxとして知られています)で、ターミナル内で1つまたは複数のスクリーンを開始することを可能にします。

なぜ私がターミナル内でスクリーンを開始したいのか、またスクリーンをより良く/詳しく定義できるかと尋ねるかもしれません。もちろんです。あなたがSSHでリモートサーバーを使用していて、突然ネットワーク接続が途切れたとします。その際、データベースの移行やプロダクションのバックアップなど、ターミナルウィンドウ内で実行されている最中だったとしたらどうなるでしょう。これはよく起こることで、接続が途切れたときに実行中だったいかなるコマンドも終了してしまい、そのコマンドがどの状態にあったとしても影響を受けるという問題があります。

この明らかに迷惑な状況は、あらゆるコストをかけてでも避けたいものです。システムやソフトウェアパッケージが不定状態になる可能性があるだけでなく、これまでのすべての作業が単に失われるかもしれません。

screen へようこそ。これは、仮想端末セッション(いわゆる「screen」)を開始できるLinuxユーティリティです。このセッションの主な利点は、ネットワーク接続が切れたり、screen セッションを開始した端末セッション(親プロセス)を閉じたりしても、そのセッションが終了しないことです。ネットワーク接続が回復するのを待ったり、SSHを介さずにローカルマシンで作業している場合は別の端末を開いたりして、簡単にscreen セッションに再接続できます。

素晴らしいですか?まだなら、さっそくscreenをインストールしましょう。

screenのインストール

screenをDebian/AptベースのLinuxディストリビューション(UbuntuやMintなど)にインストールするには、端末で次のコマンドを実行してください:

sudo apt install screen

RedHat/YumベースのLinuxディストリビューション(RHEL、CentOS、Fedoraなど)にscreenをインストールするには、ターミナルで以下のコマンドを実行してください:

sudo yum install screen

画面がインストールされたので、すぐに使い始めることができます。コマンドラインでscreenを実行するだけで、すぐに使用開始できます。screenのスプラッシュスクリーンを通過するには、Enterキーやスペースを押す必要があるかもしれません。

新しいコマンドプロンプトが表示されます。キーシーケンスCTRL+aを押してください。

CTRL+d

親シェルセッションのコマンドプロンプトに戻ります。それから、実行できます

screen -ls

アクティブなスクリーンセッションのリストを見るには、(あなたが今いる親シェルでコマンドを入力する必要があります、テキストに正確に従った場合)

screen -d -r

アクティブな screen セッションが1つだけの場合、あなたをその screen セッションに戻します(複数のセッションを開始することができます)。

もしあなたのシステムで複数のスクリーンセッションが実行されていて(かつあなたが所有している場合)、次のように入力できます。

screen -d -r NAME

どこ

NAME

は、記載された画面の名前です

screen -ls

例えば

367434.pts-1.roel1

ただ、ドットの前または後の任意の部分を指定することはできますが(例えば)

367

または

pts

特定の画面セッションを一意に識別するためのものであり、これも十分です。

Percona-QA GitHubリポジトリ(GPLv2ライセンス)のsetup_server.shの抜粋に基づいて、素晴らしいスクリーンプロファイルを定義する方法を見てみましょう。このスクリプトは、品質保証テストのためにサーバーを設定するために作成されたもので、古くなっているため、実行することはお勧めしません。参考にのみ使用し、通常は手動で段階を追って実行されます。私たちが使用する唯一のセクションは、以下に再現された.screenrcコードです。

素晴らしい.screenrc設定の定義

.screenrcファイルは、ホームディレクトリにある隠し設定ファイルです。これを編集するには(特にscreenを新しくインストールしたばかりの場合はまだ存在しない可能性があります)、お好きなテキストエディタを使用してファイル~/.screenrcを開くだけです。Vimに慣れている場合は、ターミナルプロンプトにそのまま入力できます。

vi ~/.screenrc

.vimrcを使用して素晴らしいVimプロファイルを定義するという記事を読むことを検討して、Vi/Vimについてもっと学びたい場合は、ぜひお勧めします。

~/.screenrc を開いたら、以下のテキストブロックを追加するだけです:

General settings

vbell on

vbell_msg '!Bell!'

autodetach on

startup_message off

defscrollback 10000

Termcapinfo for xterm

termcapinfo xterm* Z0=E[?3h:Z1=E[?3l:is=E[rE[mE[2JE[HE[?7hE[?1;4;6l # Do not resize window

termcapinfo xterm* OL=1000 # Increase output buffer for speed

Remove various keyboard bindings

bind x # Do not lock screen

bind ^x # Idem

bind h # Do not write out copy of screen to disk

bind ^h # Idem

bind ^ # Do not kill all windows/exit screen

bind . # Disable dumptermcap

Add keyboard bindings

bind } history

bind k kill

テキストエディタを使用したくない場合、またはこの .screenrc ファイルを多くのシステムにインストールするためのスクリプトを作成したい場合は、以下のコードを使用できます。このコードは、貼り付けられたり別のスクリプトから実行されたりするたびに、スクリプトを実行しているユーザーのために ~/.screenrc ファイルを作成します。スクリプトの名前を make_screenrc.sh やそれに類似したものと呼びましょう。

#!/bin/bash

Create screen script ~/.screenrc

touch ~/.screenrc

if [ -z "$(cat ~/.screenrc|grep 'termcapinfo xterm')" ]; then cat << EOF > ~/.screenrc

General settings

vbell on

vbell_msg '!Bell!'

autodetach on

startup_message off

defscrollback 10000

Termcapinfo for xterm

termcapinfo xterm* Z0=E[?3h:Z1=E[?3l:is=E[rE[mE[2JE[HE[?7hE[?1;4;6l # Do not resize window

termcapinfo xterm* OL=1000 # Increase output buffer for speed

Remove various keyboard bindings

bind x # Do not lock screen

bind ^x # Idem

bind h # Do not write out copy of screen to disk

bind ^h # Idem

bind ^ # Do not kill all windows/exit screen

bind . # Disable dumptermcap

Add keyboard bindings

bind } history

bind k kill

EOF

fi

スクリプトは多くの設定を事前に設定しますが、ここにあるほとんどはかなり分かりやすいです。例えば、startup_message offは、先ほど見たスプラッシュ画面を単にオフにします。defscrollback 10000は、スクロールバックを10000行に設定します(スクロールバック/編集モードには、キーシーケンスCTRL+a > CTRL+ESCを押すことでアクセスでき、このモードを終了するには、ESCを1回または2回押します)。

私たちは、リモートサーバーのスピーカーが鳴っているのを聞くことができないため、vbell on と vbell_msg '!Bell!' コマンドを使用して、仮想ベルをオンにします。このコマンドは、仮想ベルメッセージを '!Bell!' に設定します。しかし、実際には仮想ベルがうまく機能しないことが多いと感じています。

次に、出力バッファを拡大し、ウィンドウのリサイズを調整するために、いくつかの特定のtermcapinfoコードを設定します。また、さまざまな迷惑なキーバインディングを削除し、いくつか便利なキーボード設定を追加します。

この新しい .screenrc 設定を有効にするために必要なことは、新しい screen セッションを開くだけです。これで新しく定義された設定の恩恵を受けることができます。

まとめる

優れたデフォルトの .screenrc ファイルを定義することは、screen を頻繁に使用する際に役立ちます。スプラッシュスクリーンの無効化、スクロールバックの増加、速度向上のための出力バッファの改善は、私たちの .screenrc テンプレートで行ったことのいくつかです。screen と .screenrc テンプレートを楽しんでください!

関連記事: