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

公開: 2022-01-29
他のターミナルセッションが背後に重ねられたラップトップ上のLinuxターミナル。
fatmawati achmad zaenuri / Shutterstock

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

関連:初心者向けの10の基本的なLinuxコマンド

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

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

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

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

インストール画面

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

 sudoapt-getインストール画面

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

 sudo pacman -Sy screen 

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

 sudodnfインストール画面

画面入門

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

 画面

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

広告

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

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

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

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

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

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

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

 screen -ls 

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

 画面-r23167 

広告

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

再接続された画面セッションがターミナルウィンドウに復元されました。

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

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

 出口

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

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

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

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

 screen -S bigfile 

screenがセッションを起動すると、コマンドプロンプトを含む空白のウィンドウが表示されます。 大きなファイルをダウンロードするので、例として長時間実行されるプロセスを使用できます。

次のように入力します。

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

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

 screen -ls 

広告

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

 screen -r bigfile 

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

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

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

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

次のように入力して、「モニター」と呼ばれる画面セッションを開始します。

 画面-Sモニター

広告

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

次のように入力します。

 dmesg -H -w 

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

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

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

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

 vmstatを見る

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

現在、2つのプロセスが実行されています。 screenウィンドウ間を移動するには、Ctrl + Aとウィンドウの番号を押します。 最初に作成したのはウィンドウゼロ(0)、次はウィンドウ1、というように続きます。 最初のウィンドウ( dmesgウィンドウ)にホップするには、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] 

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

 画面-Sssh-geek 

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

次のように入力します。

広告

ウィンドウで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セッションを作成します。

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

 画面-d-m -Sssh-オタク

広告

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

 screen -xssh-オタク

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

 ssh [email protected] 

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

 screen -Xssh-オタク

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

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


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

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

関連:開発者と愛好家のための最高のLinuxラップトップ