問題タブ [daemon]
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.
c++ - 標準出力を syslog にリダイレクトする
OpenTibia Serverを Debian 用にパッケージ化する予定です。私がやりたいことの 1 つは、プロセス/etc/init.d
のデーモン化によるスタートアップを追加することです。otserv
おそらく、出力を syslog にリダイレクトする必要があります。これは通常、syslog()
関数を介して行われます。現在、コードには次のものが群がっています。
std::cout や友人へのすべての「呼び出し」を置き換えることなく、標準出力と標準エラー出力を syslog にリダイレクトする適切で簡単に追加できる方法はありますか?
mysql - Ubuntu 8.04 で mysql を再起動するスクリプトの改善
Ubuntu 8.04.2で言うと、CPU の 99% をsudo /etc/init.d/mysql restart
消費するプロセスが残っていることがあります。mysql_safe
マシンを実質的に使用不能にする。
mysql を再起動するより良い方法はありますか? 私はスクリプトを書くことを考えました:
しかし、これは悪い回避策になります。(そして、スクリプトは簡単なショットです)
私はグーグルで調べて、それがmysql_safe
起動するラッパースクリプトであることがわかりましたmysqld
。したがって、物事を再起動するためのより良い方法があるはずです。
これは、この ubuntu バージョンの一般的な問題であるとググりました。この時点で Debian / Ubuntu は間違っているのでしょうか? /etc/init.d
スクリプトは非常に洗練されているように見え、それも処理しますmysql_safe
が、私のスキルはそれを完全に理解するのに十分ではありません. しかし、これは改善するのに最適な場所です。これは私のマシンのバージョンの貼り付けです(変更されていません):
多くのヒントが見つかりましたが、これは本番サーバー用にある程度の信頼性で解決してほしいです。
編集: まさにこの未解決のバグのようです。
これは関連または同一のようです。
の 2 つのインスタンスによる競合状態について話す人もいますmysql_safe
。起動スクリプトの健全性チェックをコメントアウトすることを提案する人もいます。
locking - Unix で PID ファイルを適切に処理するためのリファレンス
Unix での PID ファイルの適切な処理について詳しく説明している、評判の良いリファレンスはどこにありますか?
Unix オペレーティング システムでは、特殊なロック ファイル (PID ファイル) を使用してプログラム (多くの場合、デーモン) を「ロック」するのが一般的です。
これは予測可能な場所にあるファイルで、多くの場合「/var/run/foo.pid」です。プログラムは、起動時に PID ファイルが存在するかどうかを確認し、ファイルが存在する場合はエラーで終了することになっています。したがって、これは一種の助言的で協調的なロック メカニズムです。
このファイルには、現在ロックを保持しているプロセスの数値プロセス ID (したがって「PID ファイル」という名前) である 1 行のテキストが含まれています。これにより、ロックを保持しているプロセスへのシグナルの送信を自動化する簡単な方法が可能になります。
私が見つけられないのは、PID ファイルを処理するための予想される動作または「ベスト プラクティス」の動作に関する適切なリファレンスです。さまざまなニュアンスがあります: ファイルを実際にロックする方法 (気にしないでください。カーネルを使用しますか? プラットフォームの非互換性についてはどうですか?)、古いロックの処理 (静かに削除しますか? いつチェックするか?)、正確にいつロックを取得して解放するかなど。
この小さなトピックについて、尊敬され、最も権威のある参考文献(理想的には W. リチャード・スティーブンスのレベル) をどこで見つけることができますか?
php - PHPデーモン/ワーカー環境
問題:非同期ジョブをMQサーバーキューでリッスンしているいくつかのphp-workerプロセスを実装したいと思います。現在の問題は、サーバー上でデーモンとしてこのプロセスを実行するだけでは、インスタンス(ロード、ステータス、ロックアップ)を実際に制御することはできません...おそらくps-auxをダンプする場合を除きます。そのため、システム(プロセス)レベルまたは上位層(ある種のJavaスタイルのアプリサーバー)のいずれかでインスタンスを監視および制御できる、ある種のランタイム環境を探しています。
ポインタはありますか?
python - 処理のために zip ファイルを受け入れるデーモンの提案
次のようなデーモンを書きたいと思っています。
- zip ファイルへのパスを含むキュー (sqs、rabbit-mq など) からメッセージを読み取ります
- 「このジョブは処理中です」などと言って、データベース内のレコードを更新します
- 前述のアーカイブのコンテンツを読み取り、見つかった各ファイルのファイル メタデータから選別された情報を使用して、データベースに行を挿入します
- 各ファイルを s3 に複製します
- zipファイルを削除します
- ジョブを「完了」とマークする
- キュー内の次のメッセージを読み取り、繰り返します
これはサービスとして実行され、誰かが Web フロントエンド経由でファイルをアップロードしたときにキューに入れられたメッセージによって開始されます。アップローダはすぐに結果を確認する必要はありませんが、アップロードはバックグラウンドで適切に処理されます。
私はPythonに堪能なので、最初に頭に浮かぶのは、各リクエストを処理して上記のプロセスを実行するためのツイストを備えた単純なサーバーを作成することです。しかし、マルチユーザー コンテキストで実行されるこのようなものを作成したことはありません。1 分または 1 時間に数百のアップロードを処理するわけではありませんが、一度に複数のアップロードを処理できると便利です。また、マルチスレッド アプリケーションを作成したり、ブロッキングなどの問題に対処したりすることにもあまり詳しくありません。
過去に人々はこれをどのように解決しましたか?私が取ることができる他のいくつかのアプローチは何ですか?
助けと議論を前もってありがとう!
linux - LinuxでPerlスクリプトをシステムデーモンとして実行するにはどうすればよいですか?
LinuxでPerlスクリプトをデーモンとして実行する簡単な方法は何ですか?
現在、これは CentOS 上にあります。システムと一緒に起動し、システムと一緒にシャットダウンしたいので、いくつかの/etc/rc.d/init.d
統合もいいでしょうが、いつでもカスタム行を追加でき/etc/rc.d/rc.local
ます.
c++ - プログラムが実行されていることを確認し、必要に応じて再起動するにはどうすればよいですか?
継続的に実行する必要のあるソフトウェア(C ++)を開発しました。つまり、基本的には、停止するたびに再起動する必要があります。
cronジョブを使用して、それがまだ生きているかどうかを毎分チェックすることを考えていましたが、これを行うためのよりクリーンな方法または標準的な方法があるかもしれません。
前もって感謝します
python - Python スクリプトが実行されているかどうかを確認する
Web アプリの一部として Python デーモンを実行しています。デーモンが実行されているかどうかを (Python を使用して) すばやく確認し、実行されていない場合は起動するにはどうすればよいですか?
デーモンのクラッシュを修正するためにそのようにしたいので、スクリプトを手動で実行する必要はありません。スクリプトは呼び出されるとすぐに自動的に実行され、その後は実行され続けます。
スクリプトが実行されているかどうか (python を使用して) 確認するにはどうすればよいですか?
ruby-on-rails - RubyデーモンがRailsのロードでハングする
動作中のデーモンを正しく動作させるのに問題があります。私が走るとき:
デーモンはレールのロードを開始しますが、無期限にハングします。プロセスを強制終了すると、スタックトレースは常に同じになります。
デーモンライブラリなしでスクリプトを実行すると、期待どおりに機能します。実際、Rails環境を必要とするものをロードするためにデーモンgemを使用するのに問題がありました。何か案は?
更新:workling_clientはworklingslisten.rbをデーモンとしてロードします。listen.rbにrailsをロードする代わりに、代わりにworkling_clientにロードされるように変更し、プロセスは問題なく機能します。したがって、デーモン化されたスクリプトでレールをロードできない理由がいくつかあります:-(
c - execl を使用してデーモンを実行する
リモートマシンでシェルコマンドを実行できるようにするモジュールを含むLinux上のCでプログラムを書いています。コマンドを実際に実行する最も簡単な方法は、もちろん、system() 関数を使用するか、popen を使用して出力を取得することです。ただし、現在の問題に関連しない他の設計要件のため、より低レベルのアプローチを使用することにしました。
基本的には、パイプとフォークをセットアップしてから、execl を呼び出します。厄介な例外を除いて、これはすべて完全に機能します。実行するシェルコマンドがデーモンの場合、正しく動作しません。その場合、ハングするだけです。理由がわかりません。私の理解では、デーモンが起動すると、通常はフォークしてから親が終了します。私のアプリケーションには親へのパイプが開いているため、親が終了すると read() の呼び出しは失敗するはずです。しかし、代わりにアプリケーションがハングします。
問題を再現する必要最小限のコードを次に示します。
}
通常のシェルコマンドで使用すると、コードは正常に機能します。しかし、デーモンを実行しようとすると、本来のプロンプトに戻るのではなく、ハングするだけです。