実行中のプログラムをデーモンとして停止するにはどうすればよいですか?

実行中のプログラムをデーモンとして停止するにはどうすればよいですか?

デーモンとして実行されるJavaスクリプトを実行しています。入力すると、プロセスがデーモンとして実行されていることがわかりますjps。私はこのプログラムがcronジョブによって自動的に実行されることを検討しているので、デーモンとして実行したくありません。これにより、バックグラウンドで多くのデーモンが実行されるのを見ることができるので、停止したいと思います。 Javaプログラムは実行する必要がありますが、デーモンプロセスでは実行されないので、誰でもこの質問に答えることができますか?

私は次のコマンドを使用しています:

java -cp $CP com.sdp.cloudwatch.DevAWSCloudWatch

それ以前は、以下を使用しました。

nohup java -cp $CP com.sdp.cloudwatch.DevAWSCloudWatch &

プログラムがデーモンとして実行されるのを防ぐために削除しましたが、上記のコマンドから削除してもデーモンnohup &としてnohup &実行されます。

答え1

実際にデーモンとして実行されていないようです。実際のデーモンは再びフォーク、setid、フォーク(および他のjiggeryポーカー)を実行する必要があります。これはJava内では実行できません。

あなたが意味するのは、呼び出したプロセスが終了していないことです。

唯一の実用的なオプションは、Javaコードを書き換えることです。

答え2

Javaプロセスを開始するためにスクリプトを使用するとします。この場合、制御したいスクリプトです(繰り返しインスタンスとして実行)。

一時ファイルを作成してロックできます。まだ開いているウィンドウがあっても状況は変わる可能性がありますが、通常は数分ごとにスクリプトをスケジュールするので動作します。

報告:冗長クローン作業の防止

関連情報