問題タブ [daemons]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - ProcessBuilder と Daemons でうまくいかないこと
ProcessBuilder の JavaDoc には、次のように記載されています
プロセスを作成する方法は、ネイティブ ウィンドウ プロセス、デーモン プロセス、 Microsoft Windows の Win16/DOS プロセス、シェル スクリプトなど、特定のネイティブ プラットフォームの特殊なプロセスではうまく機能しない場合があります。
私の主な質問は、ProcessBuilder がデーモン プロセスでうまく動作しないことについてです。ProcessBuilder は、これらのタイプのアプリケーションを起動するための受け入れ可能な方法にはならないのでしょうか?
ありがとう!
ruby - Ruby スクリプトから実行された AppleScript からのアボート トラップ
とりわけ、ユーザー定義のコード ブロックを実行する Ruby プログラムがあります (コードは Github にあります。こちら)。これらのブロックの多くにはシステム コマンドが含まれており、呼び出している bash スクリプト内で AppleScript の一部を実行する非常に特殊なケースをデバッグしようとしています。問題のスクリプトは、コマンド ラインで Spotify を制御するためのもので、これがコードです。
私が得ている問題は、スクリプトが実行されるたびにアボート トラップ エラーが発生することです。
これは、呼び出しが行われる Ruby スクリプトの環境に関連しているに違いありませんが、その理由がわかりません。それを呼び出すコードのブロックは次のとおりです。
このブロックはyield
、特定のイベントがソケット接続を介してトリガーされると、ステートメントを介して定期的に実行されます。ps
スクリプトはまた、Ruby gem「daemons」を使用してデーモン化され、バックグラウンドで実行できます (ただし、ruby 環境変数に従って、現在のユーザーとして実行されます)。これだけでなく、ソケット接続ごとに新しいスレッドが開始されるため、コードはメイン スレッドとは別のスレッドで実行されます。
私のデバッグではsystem "spotify pause"
、デーモンがスクリプトを起動した後に行を実行しようとしましたが、問題はありませんでした。次のスクリプトでも問題なく動作します。
したがって、問題の原因は新しいスレッドの開始やデーモン化自体ではありませんが、これらの組み合わせのようであり、おそらくブロックが生成されているという事実は、AppleScript によって中止トラップが発生していることを意味します。 bashスクリプトで。
いくつもの複雑なレイヤーを現実に引き戻すことができる場合は、この奇妙なケースを解決またはデバッグするための提案をいただければ幸いです。
ruby - Mailman アプリのデーモン化
実行して私のmailmanアプリを起動するとrails runner lib/daemons/mailman_server.rb
うまくいきます。
私のデーモンスクリプトとコマンドbundle exec rails runner script/daemon run mailman_server.rb
で開始すると、スクリプトはエラーを生成します:
私のコードは次のとおりです。
lib/daemons/mailman_server.rb
私のスクリプト/デーモンファイルは次のとおりです。
デーモンとして失敗する理由についての洞察はありますか?
ruby - デーモンの再起動をループするにはどうすればよいですか?
Ruby のdaemon
gem を使用して、独自のループを持つデーモンの再起動をループしようとしています。私のコードは次のようになります。
これを実行すると、次のエラーが表示されます(60秒後):
したがって、明らかにDaemons.call
、私が思うように制御可能なデーモンを返しません。これを正しく設定するにはどうすればよいですか。デーモンはここで適切なツールですか?
ruby - デーモンは再起動されませんか?
複数のデーモンで同じスクリプトを実行しようとしています。
myapp.rb
このように見えます:
私のmyapp_controller.rb
:
ruby myapp_controller.rb start
連続して数回実行すると、予想どおり、その数のデーモンが作成されます。しかし、しばらくするとmyapp.rb
、デーモンのエラーが原因でクラッシュし、モニターがすべてではなく1つだけ再起動します。そのため、デーモンが1つ実行されることになります。
なんで?私は何が間違っているのですか?
ruby - Ruby:ロガーとデーモン
私はruby1.9.2p180(2011-02-18リビジョン30909)を使用しています
ロギングを行うために、ロギングジェムを使用します。私のプログラムには、デーモンとして使用される2つのブロックがあります。
ただし、これらのブロックからログを記録するとエラーが発生し、ログファイルには何も書き込まれません。
コードで何が起こるかを次に示します。
何かアイデア、そこに何が問題なのですか?
ruby - 停止時にrubyThor内のすべてのプロセスを強制終了する方法は?
以下に、 Thorを使用してrakeタスク管理のように実行するスクリプトがありますARGV
。
開始するruby script.rb start
と、2つのサブプロセス(合計3つ)が生成されます。私の質問は、実行時にすべてのプロセスを強制終了する方法ruby script.rb stop
です。Webの周りで、開始時にpid親プロセスをファイルに保存し、停止するとそれを読み取って強制終了する必要があることを確認しました。問題は、親を殺しても子供は殺されないということです。したがって、3つのpidをすべてファイルに保存し、後で1つずつ強制終了することができます。
これを行う正しい方法は何か、そして内部のプロセスを操作する方法が正しいかどうかを自問していstart
ます。
php - PHPプロセスをデーモンとして実行し、バックグラウンドから安全に強制終了します
キューを調べ、ワーカージョブを受け取り、それを処理するためにワーカーを生成するPHPデーモンを実行しています。作業者自身が先に進む前に特定の場所のロックを取得します。
nohupバックグラウンドプロセスとしてデーモンを生成します。
このアーキテクチャ全体は、何らかの理由でプロセスを強制終了する必要がある場合を除いて、機能しているようです。-9を使用してそれらを殺した場合、それをワーカープロセスにトラップし、死ぬ前にロックを解除する方法はありません。
-9未満のもの(TERMやHUPなど)を使用する場合、デーモンまたはワーカープロセスのいずれにも受信されていないようです。
誰かがこの問題をより良い方法で解決しましたか?
(ps:ところで、他の考慮事項により、実装言語を変更できない場合があるため、PHPベースのソリューションのみを検討してください)
python - Mac OSX/Windowsデーモンサービスを開発するためのツールキット
システムトレイにも存在するデーモンサービスを開発する必要があります。システムトレイアイコンを使用すると、ユーザーは右クリックメニューからいくつかのオプションをカスタマイズ/アクセスできます。ウィンドウを開くだけでなく、これらのオプションをより適切に管理することもできます。
アプリは主にRESTfulサービスと通信し、ファイルを投稿およびダウンロードします。
これで、デーモンサービスは、ネイティブである必要があることがわかりました。ただし、特にアプリが実験的であるため、3つの異なる開発パイプラインを維持する余裕はありません(ただし、ユーザーの手に渡る可能性があります)
私はJava/Scala、続いてC ++ / Python/JSの経験があります。私はjava/Scala(既存のコードベース)を好みますが、他の言語のフレームワークを受け入れます。
私はウィンドウ処理用のスイングを備えたscalaベースのアプリを作成することを考えていましたが、それはきれいではありません。何か案は?
c++ - カーネルスレッドを含むデーモンの開始と停止
openSUSE 12 で POSIX スレッドをデーモンとして使用する C++ プログラムを実行し、次のテンプレートに基づく通常の init.d スクリプトを使用して、サービスとして起動、停止、再起動できるようにしたいと考えています: http://www.novell .com/coolsolutions/feature/15380.html .
ただし、startproc と killproc はカーネル スレッドの処理には適していないことが判明しました (POSIX スレッドは明らかにそうです)。startproc でプログラムを開始することはできますが、killproc によって認識されず、強制終了されません。rc_status は、プログラムが実際に開始されていても startproc を実行すると赤色の「失敗」を返し、killproc を実行するとプロセスを強制終了していなくても緑色の「完了」を返します。
openSUSE 12 で startproc/killproc を使用する代わりの方法はありますか? 単純な nohup でサービスを開始した場合、通常はどのように停止されるのでしょうか? 殺すだけで?その場合、「kill」に必要なpidを取得する良い方法は何ですか?