Linuxの画面コマンドの使用方法
公開: 2022-01-29 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 + A 、 Tab:下の領域に移動します。
- 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コマンド | ||
ファイル | tar・pv・cat・tac・chmod・grep・diff・sed・ar・man・pushd・popd・fsck・testdisk・seq・fd・pandoc・cd・$ PATH・awk・join・jq・fold・uniq・journalctl・tail・stat・ls・fstab・echo・less・chgrp・chown・rev・look・strings・type・rename・zip・unzip・mount・umount・install・fdisk・mkfs・rm・rmdir・rsync・df・gpg・vi・nano・mkdir・du・ln・patch・convert・rclone・shred・srm | |
プロセス | エイリアス・screen・top・nice・renice・progress・strace・systemd・tmux・chsh・history・at・batch・free・which・dmesg・chfn・usermod・ps・chroot・xargs・tty・pinky・lsof・vmstat・タイムアウト・wall・yes・kill・sleep・sudo・su・time・groupadd・usermod・groups・lshw・shutdown・reboot・halt・poweroff・passwd・lscpu・crontab・date・bg・fg | |
ネットワーキング | netstat・ping・traceroute・ip・ss・whois・fail2ban・bmon・dig・finger・nmap・ftp・curl・wget・who・whoami・w・iptables・ssh-keygen・ufw |
関連:開発者と愛好家のための最高のLinuxラップトップ