Google CloudでSSHが閉じているときにJavaアプリを実行し続ける


12

現在、Google Cloud ComputeのVMにSSH接続してJavaアプリを実行しています。アプリを実行するコマンドを発行すると、コンソールが読み込まれます。SSH接続を終了するとすぐに、アプリがシャットダウンします。これはコンソールが閉じられたためだと思います。

このアプリ(サーバー)は、SSHを終了した後も存続し、いつでもコンソールに再接続してサーバー上でコマンドを発行できるようにしたいと考えています。


回答:


14

あなたはこれを述べます:

このアプリ(サーバー)は、SSHを終了した後も存続し、いつでもコンソールに再接続してサーバー上でコマンドを発行できるようにしたいと考えています。

目標はやや漠然としているが、私はそれに挑戦する!

Linuxサーバーでコマンドをバックグラウンドプロセスとして実行するには、コマンドの先頭にコマンドをnohup追加&し、最後に追加する必要があります。

したがって、最後のコマンドは次のようになります。

nohup [your command] &

nohupコマンドは無視して、アンパサンド「UPSハング」必要がある手段&が追加はバックグラウンドプロセスとしてコマンドを実行するようにシステムに指示するシェルコマンドです。使用方法の詳細については、こちらをご覧ください

このようなコマンドを実行すると、プロセスが実行され、コマンドプロンプトに戻り、ターミナルセッションを終了するか、そのターミナルセッション中にそのコマンドに関連しない他のことを実行することもできます。


1
プロセスに戻り、Javaコンソールにコマンドを入力する場合、どうすればよいですか?
Noahb32

1
@ Noahb32まあ、これはバックグラウンドプロセスとして起動します。私は主にこの方法を使用して、プロセスを起動してからそれを忘れます。新しいJavaコンソールを起動したい場合は、シェルに戻っているので、それを実行できます。ただしscreen、起動後にセッションに戻ることができるため、代わりにを使用して調査する必要があります。正直に言ってあなたの質問は非常に曖昧なので、それを明確にすることができれば、それは物事を明確にするのに役立つかもしれません。
JakeGould

1
ありがとうございました!別の端末からの出力を監視できることを追加したいと思いますtail -f nohup.out。同じ作業で実行するだけです。dir。
naXa 2018年

3

これを行うには、少なくとも3つの方法があります:(nohup「ハングアップなし」)、screen/ tmux、またはdisown。サーバーに接続し、切断後にデーモンとやり取りする必要があるかどうかについては、質問から少し不明確です。

これはケースで、場合nohupdisown(それが動作を続けますが)あなたがプロセスを解放するように良い試合ではありません。tmux(またscreen)は、あなたがいつでも実行する用語を維持します。

詳細については、それぞれのページをご覧ください。

man nohup
man tux

Bashの却下Bashを実行していることを前提としていますが、他の多くのシェルには同様のものが含まれています)


disownGoogle Cloud にはコマンドがないようです。少なくとも、私が使用しているインスタンスは、2019年または2018年後半に開始しました。nohupコマンドは正常に機能しますが、不要な可能性がある追加のファイルを作成します。
トリシス

1

実行中のシェルからアプリケーションを切り離し、シェルの終了後もアプリケーションを存続させるには、nohupコマンドを使用します。

通常のコマンドにプレフィックスを付けるだけでnohup動作します。


0

nohubが機能していない場合も、screen を使用できます

 ssh into your remote box. 

type screen次に、必要なプロセスを開始します。

Press Ctrl-A then Ctrl-D. 

これにより、スクリーンセッションが切り離されますが、プロセスは実行されたままになります。これで、リモートボックスからログアウトできます。

If you want to come back later, log on again and type screen -r This will resume your screen session, and you can see the output

あなたのプロセス。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.