0.0
Repository is archived
No commit activity in last 3 years
No release in over 3 years
A simple library for daemonizing scripts.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

Runtime

>= 0.2.1
 Project Readme

simple_daemon¶ ↑

This is a simple library for daemonizing scripts. It was extracted from Kenneth Kalmer’s excellent daemon-kit project (github.com/kennethkalmer/daemon-kit). The daemon-kit framework is amazing for bootstrapping your daemons, but if you need something more lightweight (e.g., a single file daemon), then you’re out of luck (for now). There are a number of daemon gem libraries available, but I was most impressed by the daemon-kit setup. This library lets you use the well thought out daemonization process from daemon-kit for simpler daemon setups.

Usage¶ ↑

You set configuration options as follows:

SimpleDaemon.setup do |config|
  config.daemon_name = "some_name"
  config.pid_file = "/var/run/some_name.pid"
  config.user = "some_user"
  config.group = "some_group"
end

To actually daemonize your script, just run the code you want to run daemonized in a block as follows:

SimpleDaemon.daemonized do
  loop {
    # do something useful here
  }
end

The pid file is automatically created and the script is backgrounded when run. When the process exits the pid file is cleaned up automatically. If the process dies or is forcibly killed with a KILL signal then the pid file will stay in place, but the daemonized blocks check to see if the process in the pid file is running or not. If it isn’t, it will spin up a new process and replace the existing pid file. Keep in mind that there’s no facility (yet) to handle the case where the process is still running, but no pid file exists.

Another thing to keep in mind is that the daemonized process is chroot’d to / and has its umask set to 0000. So, if you’re writing out to files in the relative directory they’ll show up in /, so you’ll likely want to use full paths.

Copyright © 2010 Joel Watson. Portions copyright Kenneth Kalmer. See LICENSE for details.