パテセッションを閉じた後、どのようにプロセスを生き続けることができますか?


41

Linuxサーバーと対話するために、パテを使用しています。パテを使用してプロセスを開始しました。プロセスは実行中であり、5〜6時間かかります。パテセッションを閉じた後も、そのプロセスを実行し続けたいと思います。パテセッションを閉じた後、そのプロセスを生き続けるにはどうすればよいですか?コンピューターを常時オンにしたくない。これを行う方法はありますか?

回答:


32

私はそのようなことのためにスクリーンを使います。実際、時々私はしばらくそれを置いたままにして、自分がやっていることに戻れるようにします。


プロセスは現在実行中ですが、そのプロセスで動作しますか?プロセスが中間にあり、今すぐ再起動したくないので、私は尋ねています

議論の余地のないお気に入りのコマンドラインツールに言及して+1。これは、このような状況での逸品です。
Noufalイブラヒム

@Noufal、完全に!@prakash、プロセスを開始する前に画面を実行する必要があります
-ziya

複数のマシンに接続する場合、最初の画面内で複数の画面を実行することをお勧めします。実行中のすべてのリモートにアクセスするには、1つの画面に接続するだけです。

リンクが機能しなくなった
Malky.Kid

31
^Z
bg %1
disown -h %1

'-h'は、セッションが完了したときにプロセスをSIGHUPの影響を受けないようにします。


3
プロセスを「再所有」または「採用」する方法はないことに注意してください-一度これを行うと、フォアグラウンドに戻すことはできません。ただし、プロセスがいくつかのファイルを生成するバッチジョブである場合、それは問題ではありません。

19

nohupコマンドを使用します。コマンドの前に付けるだけでデーモン化され、シェルセッションをログオフ/終了したときに停止しないようになります。標準出力は、デフォルトでnohup.outというファイルに保存されます。詳細については、マニュアルページを確認してnohup(1)ください。


プロセスが実行されていますが、それはそのプロセスで動作しますか?プロセスが中間にあり、今すぐ再起動したくないので、私は尋ねていますか?

遅すぎる...少なくとも、通常の操作では。デバッガーをプロセスにアタッチし、適切なシステムコールのセットでそれを微調整すると、おそらくバックグラウンドに置くことができることを見つけることはまったく驚くことではありません。しかし、それは推奨できるものではありません。たとえば、私は気にしませんし、何が関係するのかについて少なくともある程度の考えは持っています。2つの選択肢があります...終了するまで接続を維持するか、現在のプロセスを停止して、nohupを使用して新しいプロセスを再起動します。
ジョナサンレフラー

1
bash(およびzshと思う)を使用している場合は、Tom Andersonのソリューションとdisownプロセスを使用して、切断しても実行し続けることができます。
Noufalイブラヒム

うん-否認はすでに実行中の仕事に行く方法であるように見えます。ジョブを開始したシェルが必要なプロパティを操作できるため、実行可能です。
ジョナサンレフラー

5

でプロセスを開始しますnohup "processname" &screenまたはでデタッチすることもできtmuxます。


3

上記のソリューションは非常によく説明されていますが、PuTTYの構成を次のように編集するまで、それらのいずれも機能しませんでした

TCPキープアライブを有効にする(SO_KEEPALIVEオプション)

私はこれを他のどこにも見たことがなく、試行錯誤で見つけました。


1

Ctrl + z現在のプロセスをバックグラウンドに送信します。

また、コマンドの最後に&を追加して、バックグラウンドで実行できます。


4
通常、control-zはプロセスを一時停止したアニメーションの状態にします。bgコマンドはそれをバックグラウンドに入れます。ただし、プロセスは端末に接続されたままになりますが、nohupは端末からプロセスを切り離します。そのため、パテは切断され、プロセスは切断後も存続できます。
ジョナサンレフラー

「&」を使用してバックグラウンドに送信すると、パテで機能することがわかりましたが、シェルから直接sshを使用して接続すると、接続を閉じると、バックグラウンドプロセスが強制終了されます。理由は何ですか?
-Zardoz89

0

プロセスに含まれるプログラムを常にまたは頻繁にバックグラウンドで実行する場合は、制御端末から分離するようにコーディングし(オプションフラグを介してそのような動作を制御可能にし)、バックグラウンドで実行できます。

もちろん、現在実行中のプロセスではなく、長期的なソリューションです。


0

&リンクの後に使用できます。

例:

[localhost ~ ]# wget http://www.link.com/download/download.zip &

質問はリンクに関するものではなく&、コマンドラインの後に記号を追加するということですか?
ダニー

0

パテウィンドウを閉じた後にweblogicを実行し続ける方法:

簡単な手順:puttyを介してログインした後、次の手順を実行します。

  1. startWebLogic.shコマンドが配置されているサーバー上のディレクトリに移動します。
  2. コマンドを入力screenして押しますEnter(新しい画面が開きます)。
  3. 新しい画面で、実行コマンドを入力し./startWebLogic.shます。
  4. プレスCtrl+ aを押しd(保持なしCtrl)。前の画面に戻ります。
  5. サーバーのログ画面に戻るには、commandと入力しscreen -rます。

0

プロセスがnodejs用であり、最初にstackoverflowに投稿したので、それがあなたの意図である場合があります。私はもともとこの質問を自分で探していました。pm2を見つけましたが、すごいです。他の回答は一般的なパテに役立ちますが、ノード固有の場合、監視が組み込まれており、セットアップは単に

$ npm install pm2 -g
$ cd yourappdirectory

「PM2は、ロードバランサーが組み込まれたNode.jsアプリケーションのプロダクションプロセスマネージャーです。アプリケーションを永久に維持し、ダウンタイムなしでリロードし、一般的なシステム管理タスクを容易にすることができます。

実稼働モードでのアプリケーションの起動は次のように簡単です:」

$ pm2 start yourappname.js

「保存してからフリーズコマンドを使用すると、再起動時にプロセスを自動起動できます」

$ pm2 save
$ pm2 freeze

その監視のため

$ pm2 monit

そして再起動

$ pm2 restart yourappname

直接ロギング情報用

$ pm2 logs

これで、私のディジアロシーブラウザウィンドウ(スクロールアップできなかった)を使用する代わりに、2つのパテウィンドウを簡単に実行できます。詳細については、メインgithubを参照してください

https://github.com/Unitech/pm2

すごい。


pm2 とは何か、そして表示するコマンドが何をするのかについてもう少し説明できますか?コメントで返信しないでください。 回答を編集して、より明確で完全なものにします。
G-Manによると、「Reinstate Monica」

コミュニティ向けにもう少しドキュメントを追加しました。2年前にpm2を見つけたらよかったのに。
サジーソリューション
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.