問題タブ [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.

0 投票する
0 に答える
543 参照

ruby - Ruby の「デーモン化された」スクリプトで予期しない問題が発生する

ここにあるスクリプトの動作が突然変化しましたが、その理由がわかりません。私の知る限り、スクリプトは変更されておらず、ルビーや宝石も変更されていません。

まず、スクリプトは次のとおりです。

スクリプトは「run.rb」と呼ばれ、パスは /var/www/main/projects/systems/background です。このスクリプトは、「メイン」フォルダーにある 2 つの異なる bash スクリプトによって呼び出されます。'background_restart.sh' と呼ばれる最初のものは、次のように Ruby インタープリターと完全修飾名を呼び出します。

これは失敗し、端末にのみ 'Terminated' を出力します。「deploy.sh」と呼ばれるもう 1 つのスクリプトは Web アプリケーションをデプロイし、同じ出力で失敗します (最初と最後のコマンドはそれぞれ停止と開始です)。

これが突然失敗し始めた理由については説明がありません。

その他の注意事項:

  1. バックグラウンドディレクトリにいる場合、ターミナルでスクリプトの完全修飾パスを呼び出すと機能します。
  2. bashスクリプトのディレクトリを「バックグラウンド」に変更すると、最初は問題が解決されたように見えますが、私には少し満足できません。
  3. 展開すると、さらに問題が発生します。

deploy スクリプトは基本的に、現在の本番コードを別のディレクトリに移動し、更新されたコードをその場所に配置します。再起動すると、「run.rb」スクリプトが「background」に「var」フォルダーを再作成することが期待されますが (24 行目)、デーモンの gem で次のエラーが発生します。

これで、ターミナルに 'var' フォルダーを作成して再度実行するだけで、これを修正できます。単にハッキングしたくないということです。ここで何が起こったのかを解明し、以前の状態に戻そうとします!

0 投票する
1 に答える
292 参照

ruby - Daemons Ruby gem を使用した戻りコードの開始/停止

サーバーとして実行する必要があるコードをいくつか作成し、それを Daemons as でラップしましたDaemons.run('myserver.rb')。動作するように実行しても./daemon.rb start、まったく有益ではありません。つまりmyserver.rb、例外がスローされた場合、サーバーが起動していないことさえわかりません。デーモンは終了コード0で終了します。デーモンに非を返すように指示する方法はありますか-ラップされたスクリプトが起動に失敗した場合、終了コードはありませんか? または、サーバーが正常に起動したかどうかを知る別の方法はありますか?

0 投票する
2 に答える
7621 参照

django - celeryd および celerybeat pid ファイルが作成されず、ワーカーが開始されませんが、出力は OK と表示されます

私は celeryd と celerybeat をデーモンとしてセットアップしました。しかし、しばらくしてから、ワーカーを起動せず、pid ファイルを作成しません。

これが私のもの/etc/default/celerydです:

init.dスクリプトは次のとおりです。

また、ドキュメントsh -x /etc/init.d/celeryd startで提案されているように、次のコマンドで init スクリプトを実行しました。これが出力です。

次に、pids dir を確認すると、空であり、ps auxアクティブなプロセスがないと表示されます。ログにも何もありません。私はvirtualenvを使用していません。機能しなくなりました。のバージョンdjango-celery3.0.21. これが私のwsgiスクリプトです:

そして、これは私の djcelery 関連の設定です:

お願いします、どんな提案でも本当に感謝します!!!! 前もって感謝します...

0 投票する
1 に答える
937 参照

daemons - ruby gem Daemons でログ出力のオプションを設定するにはどうすればよいですか?

Daemons 1.1.9 を使用しています。デーモンのログをログ ファイルに記録できません。私のデーモン制御ファイルは次のとおりです。

pids と log ディレクトリはどちらもルート フォルダから 1 つ下にあり、pid ファイルは正常に書き込まれているため、ディレクトリ/ディレクトリ モードの指定ミスではないことがわかります。ファイル myserver.rb.log および myserver.rb.output はログ ディレクトリにあります。私は何を間違っていますか?前もって感謝します。

0 投票する
1 に答える
48 参照

hadoop - Hadoop: デーモンを起動できない

疑似分散 Hadoop 構成でデーモンを起動できません。次のコマンドを入力します。

sudo bin/start-all.sh

パスワードの入力を求めるプロンプトが表示されますが、一度入力すると、このエラー メッセージが表示されます

chown コマンドを使用して、hadoop の所有権をローカル ユーザーに変更しようとしました。ただし、この厄介なエラーはまだ発生しています。そして、このスクリプトをルートモードで呼び出そうとしています。

ここでどこが間違っていますか?どこでもオンラインで検索しましたが、私の質問に答えるのに十分な Hadoop の経験がないようです。

あなたの応答は本当に感謝しています..

0 投票する
3 に答える
6909 参照

hadoop - データノードが起動しない

Hadoop データノードの起動に問題があります。できる限りの調査を行いましたが、問題の解決に役立つ方法はありませんでした。を使用して起動しようとしたときの端末コンソールの出力は次のとおりです

これが起こることです:

ご覧のとおり、DataNode は開始を試みますが、その後シャットダウンします。その間ずっと、NameNode の起動に問題がありました。以前は、手動で開始してこれを修正していました

そして今、問題は DataNode にあります。この問題を解決するために、皆様のご協力をお願いいたします。

そして、もう 1 つの一般的な質問です。Hadoop がこのように一貫性のない動作を示しているのはなぜですか。*-site.xml の設定を変更していないことは確かです。

0 投票する
0 に答える
595 参照

unix - シグナルと waitpid の共存

次の質問があります: SIGCHLD にシグナルハンドラを使用し、特定の場所で代わりに waitpid(3) を使用できますか?

これが私のシナリオです: ソケットをリッスンするデーモン プロセスを開始します (この時点では、それが TCP ソケットか UNIX ソケットかは関係ありません)。クライアントが接続するたびに、デーモンは要求を処理するために子を fork し、親プロセスは着信接続を受け入れ続けます。リクエストを処理する子は、ある時点でサーバー上でコマンドを実行する必要があります。この例で、次のようなコピーを実行する必要があると仮定しましょう:

そのために、clild は execl(3) (または execve(3) など) を使用して copy コマンドを実行する新しいプロセスを fork します。

コードをより適切に制御するために、コピーを実行している子プロセスの終了ステータスを waitpid(3) でキャッチすることが理想的です。さらに、私のデーモン プロセスは要求を処理するために子プロセスをフォークしているため、ゾンビ プロセスが作成されないように、SIGCHLD のシグナル ハンドラが必要です。

私のコードでは、signal(3) を使用して SIGCHLD のシグナル ハンドラをセットアップし、2 回 fork してプログラムをデーモン化し、ソケットで受信接続をリッスンし、プロセスを fork して、着信する各リクエストと子プロセスのフォークを処理します。コピーを実行する孫プロセスで、waitpid(3) を介して終了ステータスを取得しようとします。

何が起こるかというと、孫プロセスが終了すると、waitpid(3) がアクションを実行し、孫プロセスが成功して終了したにもかかわらず、waitpid(3) が -1 を返す前に、ハンドラによって SIGCHLD が捕捉されます。

私の最初の考えは、追加することでした:

接続しているクライアントを処理するために子プロセスをフォークする直前に、成功しませんでした。SIG_IGN を使用しても機能しませんでした。

私のシナリオを機能させる方法についての提案はありますか?

事前にご協力いただきありがとうございます。

PS。コードが必要な場合は投稿しますが、サイズが大きいため、必要な場合にのみ投稿することにしました。

PS2。私の意図は、私のコードを FreeBSD で使用することですが、私のチェックは Linux で実行されます。

編集[解決済み]:

私が直面していた問題は解決されました。「予期しない」動作は、ある時点でバグがあった私の waitpid(3) 処理コードが原因でした。

したがって、上記の方法を実際に使用して、デーモンのようなプログラムで signal(3) と waitpid(3) を共存させることができます。

この方法が、そのようなことを達成したい人に役立つことを願っています!