Centos 7サーバーでスクリプトを実行しているアクティブなターミナルウィンドウを使用して、以前にオフィスを離れました。今、私は家からSSHで接続しており、それがどこにあるのかを見たいのです。これは可能ですか?ここから同じターミナルウィンドウに再度参加できますか?
@Svenが述べたように、最良のオプションはscreen
またはtmux
を使用することです。これらは「ターミナルマルチプレクサ」と呼ばれるツールです。これらを使用すると、実際のログインに接続したり、接続を解除したりできるシェルセッションを作成できます。これらのツールは、他の端末から作業を確認するのに役立つだけでなく、他のユーザーとセッションを共有したり、インターネット接続が失われた場合でもコマンドが停止しないことを確認するなど、他の機能を備えています。 screen
を検索している場合は、「GNU Screen」を検索してみてください。これらのツールはどちらも、ほとんどのLinuxシステムで使用できます。
通常、セッションを開始し、そのセッション内でコマンドを実行します。ただし、コマンドを既に開始している場合は、実行中のコマンドをスクリーンセッションに移動する方法に関する記事を参照することをお勧めします。ただし、重要なもので初めてこれを試すことはお勧めしません。この質問はいくつかの役に立つかもしれません:
プロセスが実行されているかどうかを確認するだけの場合は、私のお気に入りのツールはstraceです。このツールを使用すると、プロセスによって行われた各カーネル呼び出しを確認できます。出力を理解するにはある程度のスキルが必要ですが、少なくともプロセスが実行されているかどうか、十分に注意して監視すると、開いているファイル名を把握できる可能性があります。これを行うには、まずps aux|grep yourcommand
を検索してPIDを見つけてから、次のようにします。
strace -fp YOUR_PID
^ Cでそれから抜け出すことができます。再接続することはできないかもしれませんが、それが何をしているかを知りたいだけなら、それで十分でしょう。
ほとんどの回答がすでに指摘したように-既存の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セッションに再接続します。
将来的には、screen
またはtmux
を使用して、実行中のセッションを再接続できます。
私は byob を使用しており、信じられないほど強力です。 Byobuは、GPLv3オープンソースのテキストベースのウィンドウマネージャーおよびターミナルマルチプレクサーです。
したがって、「byobu」と入力するだけで、byobuセッションを開くことができます。そして、Ctrl + F2で新しいタブを作成し、Ctrl + F3で後へ、Ctrl + F4で前へ移動できます。 Ctrl + F6でタブを閉じるか、Shift + F6でセッションから切り離すことができます。その後、単に「byobu」と入力するだけで、セッションに再接続します。
Byobuは垂直および水平分割をサポートしています。 Ubuntu/Debian、CentOS/Fedora/RedHat、FreeBSDで利用できます。
すでに指摘したように、将来的にはtmux
またはscreen
を使用することをお勧めしますが、それは事前に考えた場合にのみ機能します。
私はあなたの状況に何度も行ったことがある。実行したままにした端末がオフィスのデスクトップPCにあった場合は、PCにSSHで接続してVNCサーバーを起動できます。そうすれば、少なくとも開いているターミナルを確認できます。
誰もが述べたように、tmuxを使用できます。 screenは、複数の人と画面を共有したい場合には役に立ちません。
何よりも、ローカルマシンへの一時的なアクセスを許可する https://tmate.io/ を試してみることをお勧めします。 tmateは上記すべてをサポートします:)