プロセスを再び開く方法は? [コピー]

プロセスを再び開く方法は? [コピー]

私は自宅のコンピュータでパテを使用し、SSHを介してリモートサーバーに接続し、完了するのに数時間かかるPythonプログラムを実行し、実行中に何かを印刷しました。しばらくすると、インターネットがダウンしてPuttyとSSHを閉じてからもう一度開く必要がありました。 「top」と入力すると、バックグラウンドで実行されているPythonプログラムとそのPID番号を表示できます。デフォルトでは、プロセスを再び開き、コンテンツを再印刷するために使用できるコマンドはありますか?

ありがとう

答え1

screen コマンドを使用すると、カーネルのコンパイルなどの操作を開始できます。たとえば、次のようになります。

screen -R -S YOUR_SESSION_NAME

次にEnterを押してセッションに戻ります。

セッション終了:CTRL++ad

セッションをリストするには:

mohsen@debian:~$ screen -ls
There is a screen on:
    30473.compilekernel (03/06/2015 05:59:05 AM)    (Detached)
1 Socket in /var/run/screen/S-mohsen.

セッションを分離するには:

screen -dr 30473

セッション名を使用しないと、画面自体は次の形式を使用するため、サーバーに複数のセッションを提供することが困難になります。

pid.tty.host

たとえば、

30522.pts-0.debian

答え2

GNU画面http://www.gnu.org/software/screen/端末で実行され、一種の仮想セッションを作成するアプリケーションです。切断すると、画面は分離されたエンティティとして引き続き実行され、後で再接続できます。

まず、インストール画面がまだインストールされていない場合(インストールされている可能性があります)。

次にサーバーにログインします。

画面セッションを開始します。

$ screen

今、あなたは画面にいます。プロセスを開始してください。私はそれがfoo.pyであると仮定します。通常どおり開始することも、開始してバックグラウンドで送信することをお勧めします。

$ foo.py &

バックグラウンドで送信したくない場合(つまり、端末で実行されているものを見たい場合)、通常どおり実行してください。しかし、その後、新しい画面に切り替える必要があります。

$ foo.py

スクリプトの実行を開始したら、ctrl-a ctrl-c(「新しい画面の作成」)をクリックします。

これにより、新しい空の画面が作成されます。スクリプトはまだ実行中ですが、別の画面で実行しています。 ctrl-a ctrl-nと入力して、それを直接証明してください(例:次の画面に進みます)。

ログアウトする準備ができたら、次のように入力します。

$ screen -d

これにより、仮想画面から離れることができます。つまり、すべてがあなたが去ったかのようにまだ実行されています。

PuTTYをオフにすることもできます。あなたのサーバーはまだ画面とあなたが起動したすべてを実行しています。

再接続するには、もう一度ログインして画面に再接続してください。

$ screen -raAd

これで画面に戻りました。 foo.py コマンドの出力を表示したり、ctrl-a ctrl-n を使用して切り替える必要がある場合があります。

とにかくそうなりました。

関連情報