私は自宅のコンピュータでパテを使用し、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 を使用して切り替える必要がある場合があります。
とにかくそうなりました。