Linuxの画面コマンドの使用方法

Linuxscreenコマンドを使用すると、実行中のターミナルアプリケーションをバックグラウンドにプッシュし、表示したいときに前方にプルできます。また、分割画面表示をサポートし、切断して再接続した後でも、SSH接続を介して機能します。

画面コマンドとは何ですか?

このscreenコマンドはターミナルマルチプレクサであり、オプションが満載です。それがたくさんできると言うことは控えめな表現の祖父です。マニュアルページは4,100行を超えています。

以下は、screenコマンドを使用する最も一般的なケースです。これらについては、この記事で詳しく説明します。

  • 標準的な操作は、シェルを含む新しいウィンドウを作成し、コマンドを実行してから、ウィンドウをバックグラウンドにプッシュすることです(「デタッチ」と呼ばれます)。プロセスがどのように実行されているかを確認したい場合は、ウィンドウを再び前面にプルして(「再アタッチ」)、再度使用できます。これは、ターミナルウィンドウを閉じて誤って終了したくない長いプロセスに最適です。
  • あなたが持ってたらscreenセッションを実行し、新しいウィンドウを作成し、それらに他のプロセスを実行することができます。ウィンドウ間を簡単に移動して、進行状況を監視できます。ターミナルウィンドウを垂直領域または水平領域に分割し、さまざまなscreenウィンドウを1つのウィンドウに表示することもできます。
  • リモートマシンに接続し、screenセッションを開始して、プロセスを起動できます。リモートホストから切断して再接続しても、プロセスは引き続き実行されます。
  • screen2つの異なるSSH接続間でセッションを共有して、2人が同じものをリアルタイムで見ることができるようにすることができます。

インストール画面

screenubuntuにインストールするには、次のコマンドを使用します。

sudoapt-getインストール画面

screenManjaroにインストールする には、次のコマンドを使用します。

sudo pacman -Sy screen

Fedoraでは、次のように入力します。

sudodnfインストール画面

画面入門

開始するにはscreen、以下に示すように入力し、Enterキーを押します。

画面

ライセンス情報のページが表示されます。スペースバーを押して2ページ目を読むか、Enterキーを押してコマンドプロンプトに戻ることができます。

コマンドプロンプトが表示されたままになり、何も起こらなかったようです。ただし、現在、多重化端末エミュレーター内でシェルを実行しています。なぜこれが良いことなのですか?さて、完了するまでに長い時間がかかるプロセスを始めましょう。最新のLinuxカーネルのソースコードをダウンロードして、というファイルにリダイレクトしますlatest_kernel.zip

これを行うには、次のように入力します。

curl //cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.5.9.tar.xz> latest_kernel.zip

ダウンロードが始まり、curl出力に進行状況が表示されます。

次のビットの画像はキーストロークシーケンスであるため、表示できません。Ctrl + Aを入力し、それらのキーを放してから、dを押して画面を切り離します。

ダウンロードプロセスはまだ実行中ですが、ダウンロードを表示しているウィンドウが削除されます。screen セッションを開始したターミナルウィンドウに戻ります。screenラベルの付いたウィンドウ23167.pts-0.howtogeekが切り離されたことを通知するメッセージが表示されます。

再度取り付けるには、ウィンドウ名の先頭からの番号が必要です。忘れた場合は、次に-ls示すように、いつでも(list)オプションを使用して、切り離されたウィンドウのリストを取得できます。

screen -ls

準備ができたら、-r(再接続)オプションとセッションの番号を使用して、次のように再接続できます。

screen -r 23167

バックグラウンドで機能していたウィンドウが、離れたことがないかのようにターミナルウィンドウに戻されます。

それが結論に至るまで実行されるプロセスである場合、それは最終的に完了します。それが継続的なプロセスである場合は、最終的には終了する必要があります。いずれにせよ、プロセスが終了したら、を入力exit して終了できます screen。または、Ctrl + Aを押してからKを押して、ウィンドウを強制的に強制終了することもできます。

次のコマンドを入力します。

出口

以前のターミナルウィンドウに戻りますが、ウィンドウの再接続に使用したコマンドが引き続き表示されます。切り離された唯一のウィンドウを閉じたため、screen終了するメッセージが表示されます。

関連:curlを使用してLinuxコマンドラインからファイルをダウンロードする方法

名前付き画面セッションの使用

-S(セッション名)オプションを使用して、セッションに名前を付けることができますscreen。セッションの数値IDではなく、覚えやすい名前を使用する場合は、セッションに再接続する方が便利です。次のように入力して、セッションに「bigfile」という名前を付けます。

screen -S bigfile

ときにscreen私たちのセッションを起動し、我々は、プロンプトのコマンドで空のウィンドウを参照してください。大きなファイルをダウンロードするので、例として長時間実行されるプロセスを使用できます。

次のように入力します。

curl //ipv4.download.thinkbroadband.com/1GB.zip> bigfile.zip

ダウンロードが開始されたら、Ctrl + Aを押してから、Dを押してセッションをデタッチします。次のように入力して-ls(list)オプションを使用し、screenデタッチされたセッションの詳細を表示します。

screen -ls

数値識別子(23266)の後ろに、セッションの名前(bigfile)が表示されます。セッションの名前を含めて次のように入力して、セッションを再接続します。

screen -r bigfile

ダウンロードウィンドウに再接続し、長いダウンロードがまだ進行中であることを確認します。

ダウンロードが完了したら、入力exitしてセッションウィンドウを閉じます。

複数のウィンドウで画面を使用する

これまで、screen分離されたウィンドウのバックグラウンドに単一のプロセスを配置してきました。ただし、 screenそれ以上のことができます。次に、コンピューターのいくつかの側面を監視できるようにするいくつかのプロセスを実行します。

次のように入力して、「monitor」という画面セッションを開始します。

画面-Sモニター

新しいウィンドウセッションのコマンドプロンプトでdmesg 、-H(人間が読める形式の-w)オプションと(新しいメッセージを待つ)オプションを起動して使用します。これにより、カーネルバッファメッセージが表示されます。新しいメッセージが発生すると表示されます。

次のように入力します。

dmesg -H -w

既存のメッセージが表示されます。dmseg新しいメッセージを待っているため、コマンドプロンプトに戻らず、メッセージが到着すると表示されます。

関連:Linuxでdmesgコマンドを使用する方法

別のアプリケーションを実行したいので、新しいscreen ウィンドウが必要です。Ctrl + A、Cの順に押して、新しいウィンドウを作成します。をwatch繰り返し実行するために使用するvmstatので、コンピュータの仮想メモリ使用量の表示が頻繁に更新されます。

新しいコマンドプロンプトで、次のように入力します。

vmstatを見る

vmstat出力が表示され、2秒ごとに更新されます。

2つのプロセスが実行されています。screenウィンドウ間を移動するには 、Ctrl + Aとウィンドウの番号を押します。最初に作成したのはウィンドウ0(0)、次はウィンドウ1、というように続きます。最初のウィンドウ(dmesg1つ)に移動するには、Ctrl + Aと0を押します。

Ctrl + Aと1を押すと、vmstatウィンドウに戻ります。

それはかなり気の利いたです!Ctrl + Aを押してから、Dを押してこのセッションから切り離すことができます。後で再接続できます。両方のセッションは引き続き実行されます。ここでも、ウィンドウを切り替えるには、Ctrl + Aと切り替え先のウィンドウの番号(0または1)を押します。

次のステップに進み、1つのウィンドウで両方の画面を表示しましょう。これを行うときは、この手順が役立つサイズにターミナルウィンドウを拡大します。私たちの例はスクリーンショットのサイズに制限されているので、ウィンドウは少し窮屈に見えます。

これを行うには、Ctrl + Aを押してから、Shift + Sを押します(大文字の「S」が必要です)。

ウィンドウは2つの「領域」に分割されます。

上部の領域は引き続き表示されvmstat、下部の領域は空白です。以下のスクリーンショットでは、カーソルが強調表示されています。下の領域に移動するには、Ctrl + Aを押してから、Tabキーを押します。

カーソルが下の領域に移動します。これは実際には単なる空のスペースです。シェルではないので、何も入力できません。便利な表示を得るには、Ctrl + Aを押してから、「0」を押しdmesgてこの領域にウィンドウを表示します。

これにより、1つの分割ウィンドウで両方のライブ出力が得られます。Ctrl + AとDを押してウィンドウを切り離してから再度アタッチすると、分割ペインビューが失われます。ただし、次のキーボードショートカットを使用して復元できます。

  • Ctrl + A、S:ウィンドウを水平に分割します。
  • Ctrl + ATab:下の領域に移動します。
  • Ctrl + A、0:下部領域にウィンドウゼロを表示します。

私たちは物事をさらに一歩進めることができます。次に、下のペインを垂直に分割し、3番目のプロセスを表示に追加します。下の領域にカーソルを置き、Ctrl + AとCを押して、シェルを含む新しいウィンドウを作成します。下の領域に新しいウィンドウが表示され、コマンドプロンプトが表示されます。

次に、dfコマンドを実行してファイルシステムの使用状況を確認します。

df

df実行中を確認したら、Ctrl + Aとパイプ文字を押します(|)。これにより、下部領域が垂直方向に分割されます。Ctrl + AとTabを押して、新しい領域に移動します。次に、Ctrl + Aと0を押してdmesgウィンドウを表示します。

リージョン間を移動したり、垂直または水平の分割を追加したりすることもできます。さらに便利なキーの組み合わせを次に示します。

  • Ctrl + A:現在の領域と前​​の領域の間を行ったり来たりします。
  • Ctrl + A、Q:現在の領域を除くすべての領域を閉じます。
  • Ctrl + A、X:現在の領域を閉じます。

SSH経由の画面の使用

を使用screenすると、ウィンドウセッションを開始し、それをデタッチしてバックグラウンドで実行されたままにし、ログオフまたは再度ログインして、セッションを再接続できます。

ssh コマンドを使用して、別のコンピューターからコンピューターにSSH接続を確立しましょう 。接続するアカウントの名前とリモートコンピューターのアドレスを指定する必要があります。

この例では、次のように入力します。

ssh [email protected]

リモートコンピューターで認証してログインした後、次のように入力してscreen「ssh-geek」というセッションを開始します。

画面-Sssh-geek

デモンストレーションの目的top で、screenウィンドウ内で実行しますが、実行 時間の長いプロセスや無限のプロセスを開始できます。

次のように入力します。

topウィンドウで実行されたら 、Ctrl + Aを押してから、Dを押してウィンドウを切り離します。

元のリモートターミナルウィンドウに戻ります。

私たちが入力した場合exit、以下のように、それはSSHセッションを切断し、私たちは、ローカルコンピュータに戻っています:

出口

再接続するには、次のように入力します。

ssh [email protected]

再接続してログインした後、次のように入力してscreenセッションを再接続できます。

screen -rssh-オタク

これで、まだ実行中ののインスタンスに再接続されましたtop

これは、あるマシンでプロセスを開始し、別のマシンで中断したところから再開する場合に最適です。

関連:LinuxシェルからSSHキーを作成してインストールする方法

画面セッションの共有

screenセッションを使用して、2人が同じウィンドウを表示して操作できるようにすることもできます。コンピューターでFedoraを実行している誰かがUbuntuサーバーに接続したいとします。

彼は次のように入力します。

ssh [email protected]

接続後、-S(セッション名)オプションを使用して「ssh-geek」という画面セッションを開始します。彼はまた、-d(デタッチ)および -m(強制作成)オプションを使用して、screenすでにデタッチされている新しいセッションを作成します。

彼は次のように入力します。

screen -d -m -Sssh-オタク

彼は、-X(マルチスクリーンモード)オプションを使用してセッションをアタッチし、次のように入力します。

screen -X ssh-geek

Manjaroコンピューターでは、以下に示すように、別の人が同じアカウント資格情報を使用してUbuntuコンピューターに接続します。

ssh [email protected]

接続したら、 screenコマンドを入力し、-X(マルチスクリーンモード)オプションを使用して、次のように同じウィンドウセッションに参加します。

screen -X ssh-geek

さて、どちらかの人がタイプするものは何でも、もう一方が見るでしょう。たとえば、ある人がdateコマンドを発行すると、入力されたとおりの出力と出力が表示されます。

両方の人がscreen、リモートのUbuntuコンピューターで実行されているセッションを共有しています。

1987年に最初に日の目を見るソフトウェアの場合、screen それでも優れた生産性の壁が詰まっています。それをよく理解することは、よく費やされる時間になるでしょう!

関連:知っておくべき37の重要なLinuxコマンド