pythonでちょっとしたクローラーを書いて終夜で流したい時に、夜中に落ちたりすると時間がもったいないので、死んでも生き返るようにしておきたいことがある。 追記121203 はてブで指摘された通り で良かった。ドキュメントにちゃんと書いてあった。 node.jsで書いた場合にはforeverが使えて便利だが、他の言語で書いた場合にはchild_processで子プロセスにして呼び出せばいいので、javascriptをちょっと書いておけば、PythonでもPerlでもHaskellでもなんでも使える。 でもjavascriptを毎回書くのは(忘れるし)面倒なのでforever用のjavascriptを出力するスクリプトをpythonで書いてみた(foreverizeっていう名前)。 #!/usr/bin/env python import sys js_str = """var spawn
prefork して、シグナルで綺麗に終了できるようになったので次はデーモン化する。デーモンをkill しやすいように プロセスIDをファイルに書いておくwrite_pid()関数と、デーモン化関数daemonize()を追加している。 my_prefork_daemon.c デーモン化の処理が入ったバージョンのソース #include <stdlib.h> #include <stdio.h> #include <string.h> #include <apr_hash.h> #include <sys/types.h> #include <sys/stat.h> #include <unistd.h> #include <sys/wait.h> #include <signal.h> #define MAX_CHILDREN 16 //子プロセスの数 #define PID_FILE
DAEMON Section: C Library Functions (3) Index JM Home Page roff page BSD mandoc Linux NetKit (0.17) 名前 daemon - バックグラウンドで動作させる 書式 Fd #include <stdlib.h> Fn daemon int nochdir int noclose 説明 Fn daemon は、制御端末から分離させてシステムデーモンとして動作させたい プログラムのための関数である。 引き数 Fa nochdir が 0 の場合、 Fn daemon は、カレント・ワーキング・ディレクトリをルート (``/'') に変更する。 引き数 Fa noclose が 0 の場合、 Fn daemon は、標準入力・標準出力・標準エラーを ``/dev/null'' に送る。 エラー Fn
http://d.hatena.ne.jp/unageanu/20080125/1201255847 の通りコピペプログラミング macのgrowlで3秒おきに出すデーモン daemon-test.rb #!/usr/bin/ruby require 'webrick' require 'rubygems' require 'ruby-growl' g = Growl.new('localhost','growltest',['event1','event2'],nil,'') # ブロックをdaemonとして実行。 WEBrick::Daemon.start { loop { g.notify('event1','title','daemon test') sleep 3 } } ruby test-daemon.rb して動かして、 psすると sho@hashimoto-shou-n
Ruby 1.9 系だと daemon は Process.daemon な標準ライブラリで扱えますが、Ruby 1.8 系だと ちょいちょいと自前でやるか WEBrick::Daemon クラスを使うか (標準ライブラリ) Daemonize モジュールを使う といった 3 つが手軽に使えるものでしょうか(Ruby レシピブックの「レシピ 11.1」に記述されてますね)。 no title モジュールはすごく短いコードで構成されているので眺めてみるには最適な量ですね。 Daemonize 0.1.2 のソースは下記 56 行で構成されています。 module Daemonize VERSION = "0.1.2" # Try to fork if at all possible retrying every 5 sec if the # maximum process limit for
rubyプログラムをdaemonとして実行する方法について。 deamon化の手順 deamon化の手順については「PC覚え書き-プログラムのデーモン化」の解説が詳しい。ポイントは次の通りです。 子プロセスの生成 fork関数を実行して子プロセスを生成し、親プロセスを終了させる。 これにより、プロセスはinitプロセスグループに属するプロセスになる。 次に行うsetsidは、プロセスグループリーダーで行うと失敗するので、この処理を行ってプロセスリーダーでない状態にしておく。 セッションの新規作成と割り当て Process.setsid関数を実行し、新規にセッションを開始して割り当てる。 子プロセスの再生成 fork関数を再度実行して、initプロセスグループに属するプロセスにする。 こうすると制御端末を設定することができなくなってよいらしい。 デバッグモード等で制御端末が必要な場合は実行し
20070405コードレビュー posted by (C)フォト蔵 尾藤正人です 先日ウノウの勉強会でUNIXデーモンの作り方についてプレゼンしました。 UNIXのデーモンの仕組みはWebサービスの開発にあたって直接関係の深いトピックではないかもしれませんが、知っておいて損はないと思います。 発表資料と動画を公開しますので、よかったらご覧下さい。 普段は気にしないUNIXデーモンが裏で何をやってるのか、少しでも身近に感じていただければと思います。 発表資料の公開にはちまたで話題のScribdを使ってみました。 プレゼン資料はKeynoteで作ったのですが、PowerPoint形式に変換してアップロードする簡単にできました。 デモ用に実際に動く簡単なデーモンプログラム ccho(シコー) を作成しました。 ccho は前々回の勉強会で行ったGnu Autotoolsで作った bat プログラ
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く