この簡単なガイドでは、画面にいるかどうかを確認する方法について説明します Linuxではセッションかどうか。お気づきかもしれませんが、 Tmuxを起動すると セッションでは、下の図に示すように、下部のステータスバーに、現在のシェル名、ホスト名、現在の日時などのセッションの詳細が表示されます。
Tmuxセッションの詳細
ただし、スクリーンセッション内では、そのような詳細は表示されません。 Ubuntuシステムでの画面セッションは次のようになります。
スクリーンセッション
あなたは違いを見つけることができますか?スクリーンセッションと通常のセッションはまったく同じように見えます。 「screen-ls」コマンドを実行して、実行中の画面セッションを一覧表示します。
$ screen -ls
出力例:
画面セッションの一覧表示
見る?スクリーンセッション中ですが、通常のセッションのようです。下部のステータスバーには何も表示されません。 Screenセッション内で作業しているかどうかをどのようにして知ることができますか?それが私たちが今見つけようとしていることです。
スクリーンセッションに参加しているかどうかを確認する
スクリーンセッションに参加しているかどうかを確認するには、いくつかの方法があります。ここでは3つの方法を示しました。
方法1-「echo」コマンドを使用する
スクリーンセッション中であるかどうかを確認するには、次のコマンドを実行するだけです。
$ echo $STY
Screenセッション内にいる場合は、次のような出力が表示されます。
18704.pts-0.ostechnix
スクリーンセッションに参加しているかどうかを確認する別の方法は次のとおりです。
$ echo $TERM
「画面」という用語が表示されます 出力で。
出力例:
screen.xterm-256color
Linuxでスクリーンセッションを行っているかどうかを確認する
実行中の画面セッションがなかった場合、最初のコマンドには何も表示されません。また、2番目のコマンドでは、出力に「画面」という用語は含まれません。画面セッションを終了またはデタッチして、上記のコマンドを再度実行してください。以下のような出力が表示されます。
スクリーンセッションを確認する
見る?私たちはスクリーンセッションの中にいません。
上記の2つのコマンドは、ローカルシステムで実行中の画面セッションにいる場合にのみ機能します。ローカルシステムでScreenセッションを開始し、SSH経由でネットワーク上の他のシステムにアクセスした場合は機能しません。
その場合は、以下の2番目の方法を使用できます。
方法2-画面プレフィックスキーの使用
スクリーンセッション中であるかどうかを確認するには、 Ctrl + aを押すだけです。 次にCtrl+ t キー。スクリーンセッション中の場合は、時間とホスト名が表示されます。
次のデモをご覧ください。
画面プレフィックスキーを使用して画面セッションに参加しているかどうかを確認します
上記の出力のように、
- 最初に、画面セッションを開始し、Ctrl+aキーとCtrl+tキーを押して、画面セッションに参加しているかどうかを確認します。
- 次に、 Ctrl + a を押して、画面セッションから切り離しました。 およびd 。
- 最後に、画面セッションに再度接続し、Ctrl+aとCtrl+tを押して、画面セッションにいるかどうかをもう一度確認します。
この方法は、他の場所にSSHで接続している場合でも機能します。
方法3-キャプションコマンドを使用する
毎回キーを押したくない場合は、〜/ .screenrcに次のコードを追加できます。 ファイル。このファイルが利用できない場合は、作成してください。
$ nano ~/.screenrc
コードを追加します:
caption always "%{= kc}Screen session on %H (system load: %l)%-28=%{= .m}%D %d.%m.%Y %0c"
ファイルを保存して閉じます。
今後、Screenセッションを起動するたびに、以下に示すように、ターミナルウィンドウの下部に小さな通知バー(ホスト名、日時、システム負荷などを含む)が表示されます。
Screen session on ubuntuserver (system load: 0.00 0.00 0.00) Sat 22.02.2020 12:37
キャプションコマンドを使用して、ターミナルウィンドウの下部に画面セッションの詳細を表示します
この通知バーは、スクリーンセッションを終了すると消えます。
方法4-スクリーンセッションに別のBashプロンプトを設定する
これは、〜/ .bashrc に数行のコードを追加することで、画面セッションを簡単に認識できるようにするもう1つの方法です。 ファイル。 実際、これは推奨される方法ではありません 。 zshのような別のシェルが現在のシェルを継承する場合、多くの不要な問題が発生する可能性があります。これは教育目的のみです。ご自身の責任で使用してください!
まず、現在の〜/ .bashrcをバックアップします ファイル:
$ cp ~/.bashrc ~/.bashrc.bak
以下のように、通常のセッションと画面セッションに異なるBashプロンプト名を設定するだけです。たとえば、〜/ .bashrcに次の行を追加しました ファイル。
if [ -z $STY ] then PS1="This is normal session:~$ " else PS1="This is Screen session:~$ " fi
ログアウトして再度ログインします。通常のセッションと画面セッションを切り替えると、設定に従ってターミナルプロンプト名が変更されます。
スクリーンセッションに別のBashプロンプトを設定する
繰り返しますが、Bashプロンプト名を変更することはお勧めできません。代わりに、前述の方法のいずれかを使用して、スクリーンセッションに参加しているかどうかを確認してください。
関連記事:
- LinuxでBashプロンプトをカスタマイズする方法
これがお役に立てば幸いです。