web-dev-qa-db-ja.com

ターミナルウィンドウをリモートで監視するにはどうすればよいですか?

Centos 7サーバーでスクリプトを実行しているアクティブなターミナルウィンドウを使用して、以前にオフィスを離れました。今、私は家からSSHで接続しており、それがどこにあるのかを見たいのです。これは可能ですか?ここから同じターミナルウィンドウに再度参加できますか?

8
samerivertwice

@Svenが述べたように、最良のオプションはscreenまたはtmuxを使用することです。これらは「ターミナルマルチプレクサ」と呼ばれるツールです。これらを使用すると、実際のログインに接続したり、接続を解除したりできるシェルセッションを作成できます。これらのツールは、他の端末から作業を確認するのに役立つだけでなく、他のユーザーとセッションを共有したり、インターネット接続が失われた場合でもコマンドが停止しないことを確認するなど、他の機能を備えています。 screenを検索している場合は、「GNU Screen」を検索してみてください。これらのツールはどちらも、ほとんどのLinuxシステムで使用できます。

通常、セッションを開始し、そのセッション内でコマンドを実行します。ただし、コマンドを既に開始している場合は、実行中のコマンドをスクリーンセッションに移動する方法に関する記事を参照することをお勧めします。ただし、重要なもので初めてこれを試すことはお勧めしません。この質問はいくつかの役に立つかもしれません:

既に実行中のプロセスをScreenに移動

プロセスが実行されているかどうかを確認するだけの場合は、私のお気に入りのツールはstraceです。このツールを使用すると、プロセスによって行われた各カーネル呼び出しを確認できます。出力を理解するにはある程度のスキルが必要ですが、少なくともプロセスが実行されているかどうか、十分に注意して監視すると、開いているファイル名を把握できる可能性があります。これを行うには、まずps aux|grep yourcommandを検索してPIDを見つけてから、次のようにします。

strace -fp YOUR_PID

^ Cでそれから抜け出すことができます。再接続することはできないかもしれませんが、それが何をしているかを知りたいだけなら、それで十分でしょう。

14
DKing

それを行う1つの方法:TMUX

ほとんどの回答がすでに指摘したように-既存のSSHセッションの場合-コマンドでtmux(またはscreen)を使用します

tmux

これで、新しいbashセッションが開始され、プログラム/コマンドを開始できます。いつでも(CTRL + Dを使用せずにウィンドウを閉じることで)閉じ、後で同じマシンの同じユーザーへのSSH接続を確立してコマンドを書き込むことで、そのウィンドウに戻ることができます。

tmux attach

また、multipletmuxセッションに、

tmux new -s myname

ユーザーが開いているすべてのtmuxセッションのリストは、

tmux ls

名前付きのtmuxセッションに

tmux a -t myname

包括的なtmux cheat sheetここ を見つけます。

実行中のプログラムの場合

これまでの回答は、すでに実行中のプロセスを別のtmux/screenに移動できるという事実を認識していないようです この回答 が指摘しています。仕事をするプログラムはreptyrと呼ばれ、Ubuntu/Debianの下で簡単にインストールできます

Sudo apt-get install reptyr

その後、実行中のプログラムのプロセスIDを調べ(たとえば、topまたはhtopを使用)、tmuxセッションを開始し、簡単な

reptyr PID

実行中のプロセスをtmux bashセッションに再接続します。

9
Manu CJ

将来的には、screenまたはtmuxを使用して、実行中のセッションを再接続できます。

5
Sven

私は byob を使用しており、信じられないほど強力です。 Byobuは、GPLv3オープンソースのテキストベースのウィンドウマネージャーおよびターミナルマルチプレクサーです。

したがって、「byobu」と入力するだけで、byobuセッションを開くことができます。そして、Ctrl + F2で新しいタブを作成し、Ctrl + F3で後へ、Ctrl + F4で前へ移動できます。 Ctrl + F6でタブを閉じるか、Shift + F6でセッションから切り離すことができます。その後、単に「byobu」と入力するだけで、セッションに再接続します。

Byobuは垂直および水平分割をサポートしています。 Ubuntu/Debian、CentOS/Fedora/RedHat、FreeBSDで利用できます。

3
David Okwii

すでに指摘したように、将来的にはtmuxまたはscreenを使用することをお勧めしますが、それは事前に考えた場合にのみ機能します。

私はあなたの状況に何度も行ったことがある。実行したままにした端末がオフィスのデスクトップPCにあった場合は、PCにSSHで接続してVNCサーバーを起動できます。そうすれば、少なくとも開いているターミナルを確認できます。

2

誰もが述べたように、tmuxを使用できます。 screenは、複数の人と画面を共有したい場合には役に立ちません。

何よりも、ローカルマシンへの一時的なアクセスを許可する https://tmate.io/ を試してみることをお勧めします。 tmateは上記すべてをサポートします:)

https://tmate.io/

0
Anto