Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

daemon

Package Overview
Dependencies
Maintainers
1
Versions
9
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

daemon

Add-on for creating *nix daemons

  • 0.4.1
  • Source
  • npm
  • Socket score

Version published
Maintainers
1
Created
Source

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 daemon = require('daemon');
  
  //
  // Your awesome code here
  //
  
  daemon.daemonize({ stdout: 'somefile.log', stderr: 'error.log' }, '/tmp/yourprogram.pid', function (err, pid) {
    //
    // We are now in the daemon process
    //
    if (err) {
      return console.log('Error starting daemon: ' + err);
    }
    
    console.log('Daemon started successfully with pid: ' + pid);
  });

If you wish you can also simply pass a single pass which you wish to be used for both stdout and stderr:

  var daemon = require('daemon');
  
  //
  // Your awesome code here
  //
  
  daemon.daemonize('stdout-and-stderr.log', '/tmp/yourprogram.pid', function (err, pid) {
    //
    // We are now in the daemon process
    //
    if (err) {
      return console.log('Error starting daemon: ' + err);
    }
    
    console.log('Daemon started successfully with pid: ' + pid);
  });

Methods

daemon.start(stdout[, stderr])

Takes two file descriptors, one for stdout and one for stderr. If only stdout is supplied, stderr will use the same fd. If no arguments are passed, stdout and stderr output 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

FAQs

Package last updated on 06 Jan 2012

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc