Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Add-on for creating *nix daemons, handling chroots, etc for nodejs
C++ JavaScript
branch: master

This branch is 43 commits ahead of Slashed:master

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
example
lib
src
.gitignore
.npmignore
LICENSE
README.md
package.json
test_chroot.js
wscript

README.md

daemon.node

A C++ add-on for Node.js to enable simple daemons in Javascript plus some useful wrappers in Javascript.

Installation

Installing npm (node package manager)

  curl http://npmjs.org/install.sh | sh

Installing daemon.node with npm

  [sudo] npm install daemon

Installing daemon.node locally

  node-waf configure build  

Usage

There is a great getting started article on daemons and node.js by Slashed that you can read here. The API has changed slightly from that version thanks to contributions from ptge and fugue; there is no longer a daemon.closeIO() method, this is done automatically for you.

Starting a daemon:

Starting a daemon is easy, just call daemon.start() and daemon.lock().

  var daemon = require('daemon');

  // Your awesome code here

  fs.open('somefile.log', 'w+', function (err, fd) {
    daemon.start(fd);
    daemon.lock('/tmp/yourprogram.pid');
  });

This library also exposes a higher level facility through javascript for starting daemons:

  var sys = require('sys'),
      daemon = require('daemon');

  // Your awesome code here

  daemon.daemonize('somefile.log', '/tmp/yourprogram.pid', function (err, pid) {
    // We are now in the daemon process
    if (err) return sys.puts('Error starting daemon: ' + err);

    sys.puts('Daemon started successfully with pid: ' + pid);
  });

Methods Available

daemon.start([fd for stdout and stderr])

If you supply a file descriptor it will redirect stdout and stderr to it, else stdout and stderr will be sent to /dev/null.

daemon.closeStdin()

Closes stdin and reopens fd as /dev/null.

daemon.closeStdout()

Closes stdout and reopens fd as /dev/null.

daemon.closeStderr()

Closes stderr and reopens fd as /dev/null.

daemon.closeStdio()

Closes std[in|out|err] and reopens fd as /dev/null.

daemon.lock('/file_to_lock')

Try to lock the file. If it's unable to OPEN the file it will exit. If it's unable to get a LOCK on the file it will return false. Else it will return true.

daemon.setsid()

Starts a new session for the process. Returns the SID as an integer.

daemon.chroot('/path_to_chroot_to')

Attempts to chroot the process, returns exception on error, returns true on success.

daemon.setreuid(1000)

Change the effective user of the process. Can take either an integer (UID) or a string (Username). Returns exceptions on error and true on success.

The Fine Print

This library is available under the MIT LICENSE. See the LICENSE file for more details. It was created by Slashed and forked / improved / hacked upon by a lot of good people. Special thanks to Isaacs for npm and a great example in glob.

Author: Slashed

Contributors: Charlie Robbins, Pedro Teixeira, James Halliday, Zak Taylor, Daniel Bartlett

Something went wrong with that request. Please try again.