タグ

daemonに関するclavierのブックマーク (14)

  • GitHub - fiorix/go-daemon: Utility to "daemonize" Go programs

    Go daemon (or just god) is a utility to "daemonize" Go programs that originally only run in foreground and write logs to the console. Go daemon can turn these programs into daemons by managing essential aspects of their execution. The process of making a program become a daemon has very peculiar steps and can be done outside the code. This is what god is for. It executes a program for you doing th

    GitHub - fiorix/go-daemon: Utility to "daemonize" Go programs
  • GitHub - cortesi/modd: A flexible developer tool that runs processes and responds to filesystem changes

    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

    GitHub - cortesi/modd: A flexible developer tool that runs processes and responds to filesystem changes
  • Goでデーモンを作るにはどうするのが良い? - Qiita

    少し前にAdvent Calendarのネタでswiftfsと言うツールを作ったのですが、Goでデーモンプログラムをどう書けば良いのかよくわからなかった。以下の記事を参考にしたけど、そもそもfork()しちゃいかんとなると、なかなか難しいですね。 Goでデーモンを実装する で、swiftfsは以下のような実装にしました。syscall使うとWindowsとかで動かなくなってしまうとか、そもそも長いとか、あまり良い実装ではないように思います。Go的にもっとい良い方法があったら教えて下さい。コード全文は末尾とGistにあります。 親プロセス、子プロセス(デーモン体)共通 func main() { var child *bool = flag.Bool("child", false, "Run as a child process") flag.Parse() // 子プロセスとのパイプを作

    Goでデーモンを作るにはどうするのが良い? - Qiita
  • Pythonスクリプトをサービスで起動させる - Qiita

    ほぼ、Getting a Python script to run in the background (as a service) on bootのまま。 pythonスクリプトの作成 たとえば、ここでは/usr/bin/local/test/test.pyをサービスで起動したと仮定する。 Deamon Spcriptの作成 ひな形 下記のスクリプトをmyservice.shとして/usr/local/bin/testに作成する。 #!/bin/sh ### BEGIN INIT INFO # Provides: myservice # Required-Start: $remote_fs $syslog # Required-Stop: $remote_fs $syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-D

    Pythonスクリプトをサービスで起動させる - Qiita
    clavier
    clavier 2015/07/12
    Pythonスクリプトをサービスで起動させる - Qiita
  • Job-Queue Workerの実装を管理するdaemon - 時計を壊せ

    Message Queueとか だいたいみんな、Message QueueとしてGearmanとかQ4MとかResqueとかRabbitMQとかZeroMQとかまあたくさんあるけど、なにかを使っていると思う。 Perlの人だとQudoとかTheSchwartzとかをつかっている人も多いと思う。 でも、preforkなworkerを実装するとなるとSignal処理とかをちゃんとやるのが意外と難しい。 下の2つのスライドを読むと難しいんだなぁという事がなんとなくわかるとおもう。 YAPC 2012 - 続・Mobage を支える技術 Unix Programming with Perl 2 graceful shutdownとかgraceful restartとかは欲しいし、max_reqs_per_child的なこともしたいし、時間が掛かり過ぎているjobはリトライして新しいworkerで処

    Job-Queue Workerの実装を管理するdaemon - 時計を壊せ
  • iQONのバックエンドの非同期処理について(具体的な実装編) | VASILY TECH BLOG

    はじめに こんにちは、じゃがいもの皮はもっぱらキレイにむいてべるエンジニアの村田です。 前回のエントリ iQONのバックエンドの非同期処理について ではざっくりとした方針とかを書きましたが今回は具体的な実装方法や運用方法などについて紹介したいと思います。 使用技術 iQONではResqueという仕組みを採用して、メール送信やDBの重たい更新処理などを非同期処理しています。 ResqueはRedisにキューを出し入れして遅延処理を実現する仕組みです。シンプルだし導入しやすいと思い採用しました。 このResqueの仕組みをdaemon-spawnというgemでデーモン化して運用しています。 イメージにするとこんな感じです。 導入方法 1.Gemfileに記述 gem 'resque' gem 'daemon-spawn', :require => 'daemon_spawn' 2. in

  • mod_wsgi: WSGIDaemonProcess - Pyxis 開発ブログ

    mod_wsgi には embeded mode (Apache のプロセスと一心同体) とdaemon mode があるのですが、小さなWSGIスクリプト以外では daemon mode を使った方が応用が利きます。 そこで、mod_wsgi の daemon mode について調べてみました。 まず、 mod_wsgi の daemon mode (以降、WSGIDaemonProcess で表します) を図で表すと次のようになります(たぶん)。WSGIDaemonProcess と Apache は Proxy でゆるくつながっていて、設定ファイルでの WSGIDaemonProcess 宣言1つにつき複数の DaemonProcess が存在し、それぞれにまた複数のスレッドがぶら下がっています。 以下、 WSGIDaemonProcess の特徴です。 Apache のプロセスとは

    mod_wsgi: WSGIDaemonProcess - Pyxis 開発ブログ
  • Rubyのdaemonを手軽に作る - ぱろっと・すたじお

    今回も基的には個人的なメモ書き...φ(・ω・`) 時間のかかる処理を非同期化して動かすって手段(gem/plugin等)はいろいろありまして、 そういうのを知らなかった頃、自前でタスク処理フレームワーク*1を組んだりしましたが、 それは置いておいて・・・ そこまでいかなくても、何かを単純な処理を実行しっぱなしにしたい、 つまりdaemon化したいってのは良くある話でして そんな人のために、Ruby1.9系には「Process.daemon」という、 そのものズバリのメソッドが用意されています ただ、こいつは「単純なdaemon化*2」しかしません pidファイルの処理や、出力をlogへリダイレクトなんて処理は、 自前で書かなければなりません(´-ω-) それも面倒なので、軽量な仕組みはないかな・・・と探したところ、 「daemon-spawn」というgemを見つけました https:/

    Rubyのdaemonを手軽に作る - ぱろっと・すたじお
  • Supervisorで簡単にデーモン化 - Qiita

    やりたいこと 常時起動させたいスクリプトなど、デーモンプロセスとして動かしたいことがあると思います。 しかし例えば/etc/init.dのスクリプトなどを自分で書くとなると・・・ PIDファイルの管理をいちいち書くのが面倒でミスりやすい。 ステータスの取得とかも同様。 そもそもそんなローレベルのツールを使わなくてもよい。もっとユーザレベルに近いもので充分。 一般ユーザで起動停止くらいさせたい。 つまりは、大体同じ様になるはずの 「プロセス管理スクリプト書くのが面倒」 なのと、 サービスとして登録してしまうと 「基はrootで起動停止管理」 になるので、 この2つを避けたいということになります。 systemdを使うとスクリプトを書く必要はなくなりますが、 rootでなければ起動停止ができない、という扱いにしたくない。 stdout/errに色々吐きまくって直したくない。 システムのサービ

    Supervisorで簡単にデーモン化 - Qiita
  • 適当なスクリプトをデーモン化するのにSupervisorが便利 - id:anatooのブログ

    適当なスクリプトをデーモン化しようと思った時の典型的な要件が以下であるが、この記事でも紹介したpython製のプロセス管理ツールであるSupervisorを使うことによって解決できる。 プロセスの生死の監視する プロセスが死んだら勝手に再起動する 標準出力やエラー出力のログを取る 場合によっては複数プロセスを起動したい プロセスのステータスを簡単に確認したい この記事では、プロセス管理ツールSupervisorの導入を簡単に紹介する。 インストール easy_installからインストールできる。そもそもeasy_installが入ってない場合は以下みたいにインストール。 $ curl -O http://peak.telecommunity.com/dist/ez_setup.py $ python ez_setup.pySupervisorをeasy_installからインストールしま

  • 楽々運用!Supevsord+unicorn/gunicornで作る、Linux daemon 概要 - Hack the World!

    最近、redmineやら、joruri gwやら、python,pyramidで作った自作アプリやら、trac(bloodhound)やら、色んなサービスを動かしています。 しかしながら、インフラ周りを触れる人の少ないこと少ないこと。 公開されていて、簡素なドキュメントのあるWebアプリですら、挫折してしまうこと有りますよね。 (私にも身に覚えが。。。 と言うのは、Webに求められている事が大変多くなっていることに原因があると思われます。 javascriptなどを用いたアーキテクチャの変異などアプリケーション層が複雑化してきている事 フレームワークの手厚いサポートにより、 開発者はアプリケーション層に専念できるようになっていること(その反面、インフラまで手が伸びない。 また、昔ほど長期間エンジニアを抱えてる現場も少なくなってきたように感じます。 一つの言語やフレームワークを使ってノウハウ

    楽々運用!Supevsord+unicorn/gunicornで作る、Linux daemon 概要 - Hack the World!
  • Go で書いたサーバーを管理するには circus が便利 - methaneのブログ

    Go を使うとサーバーとアプリケーションの境界が無くなり、アプリケーションサーバーを書けるようになります。 それは良いことなのですが、アプリケーションを書く人が、従来サーバーを書く人が設計していた機能を理解して実現できないと、運用できないサーバーができあがる結果になってしまいます。 例えば Apache は、 master, worker プロセスが分離していて、設定変更を反映させるときなどは新しい worker を作ってから古い worker を殺すことで、サービスを一瞬も止めずに worker を再起動していました。これを graceful restart と呼びます。 Go で 1024 以下のポートを Listen するアプリを作る で触れたとおり、 Go はプロセス管理システムを作るのには少し向いていない面がありますし、せっかくアプリケーションプログラマーが簡単にサーバーを書ける

    Go で書いたサーバーを管理するには circus が便利 - methaneのブログ
  • Rubyでデーモンを作ってみる - ぬけラボ

    Rubyでデーモンを作ってみます。 test.txtファイルに1秒ごとに"test"と書き続けるデーモンです。 # daemon.rb require 'fileutils' require 'logger' class DaemonTest def initialize @term = false @logger = Logger.new(STDOUT) @logger.info "daemon start..." @pid_file_path = './daemon.pid' @file = "./test.txt" end def execute File.open(@file, "w") do |f| loop do f.puts "test" f.flush break if @term sleep 1 end end end def run daemonize begin Si

    Rubyでデーモンを作ってみる - ぬけラボ
  • なるほどUnixプロセス読んだ - デーモン化のためのdouble fork - はこべにっき ♨

    なるほどUnixプロセス ― Rubyで学ぶUnixの基礎を読みました。UNIXプロセスの話、特に実用的なforkの利用方法についての話がコンパクトにまとまっていてわかりやすかったです。あまり詳細に踏みこんでいるという感じではないけど、とっかかりにこのにあるような知識があるのは良いと思いました。(シェルスクリプトから"foreman start"したときにCtrl-Cで終了できない現象の解説 - はこべブログ ♨ではまる前に読んでおいたら、もっとはやく問題解決できたと思います。) 第18章 デーモンプロセスに関係して二回目のforkについていろいろ調べたので、せっかくなのでメモを残しておきます。*1 第18章 デーモンプロセス では、プロセスをデーモン化するために必要な手順が丁寧に説明されています。その中で、プロセスを制御端末から切り離す手順として以下のようなコードが紹介されていました。

    なるほどUnixプロセス読んだ - デーモン化のためのdouble fork - はこべにっき ♨
  • 1