Learn about our RFC process, Open RFC meetings & more.Join in the discussion! »

crontab

1.3.0 • Public • Published

node-crontab

Build Status Dependencies NPM version

A module for creating, reading, updating, and deleting system cron jobs

Installation

$ npm install crontab

Examples

Working with jobs

require('crontab').load(function(err, crontab) {
  // create with string expression
  var job = crontab.create('ls -la', '0 7 * * 1,2,3,4,5');
 
  // create with Date
  var job = crontab.create('ls -lh', new Date(1400373907766));
 
  // create with comment
  var job = crontab.create('ls -lt', null, 'comment 2');
 
  // create special: @reboot, @hourly, @daily, @weekly, @monthly, @yearly, @annually, @midnight
  var job = crontab.create('ls -la', '@reboot');
 
  // check valid
  var job = crontab.create();
  if (job == null) {
    console.log('failed to create job');
  }
 
  // remove object
  var job = crontab.create('ls -lr', '0 7 * * 1,2,3,4,5', 'comment 3');
  crontab.remove(job);
 
  // remove conditions
  crontab.remove({command:'ls -lh', comment:/comment 2/});
 
  // manipulate: every business hour
  var job = crontab.create('ls -l');
  job.minute().at(0);
  job.hour().between(8, 17);
  job.dow().between('mon', 'fri');
 
  // manipulate: every other hour on weekday nights
  var job = crontab.create('ls -l');
  job.hour().between(19, 0).every(2);
  job.hour().between(0, 6).every(2);
  job.dow().between('mon', 'fri');
  
  // manipulate: summer
  var job = crontab.create('ls -l');
  job.month().between('jun', 'sep');
  
  // manipulate: Christmas
  var job = crontab.create('ls -l');
  job.minute().at(30);
  job.hour().at(9);
  job.dom().on(24);
  job.month().in('dec');
 
  // show all jobs
  var jobs = crontab.jobs();
 
  // show jobs with conditions
  var jobs = crontab.jobs({command:'ls -l', comment:/comment 1/});
 
  // reset jobs to their original state
  crontab.reset();
 
  // save
  crontab.save(function(err, crontab) {
  
  });
 
  console.log(crontab);
});

Working with environment variables

require('crontab').load(function(err, crontab) {
  // get all env variables
  var vars = crontab.vars();
  // find env variables by name
  var vars = crontab.vars({name: 'FOO'});
  // find env variables by value
  var vars = crontab.vars({val: 'bar'});
  // find env variables by name and value
  var vars = crontab.vars({name: 'FOO', val: 'bar'});
  // find env variables by name
  var vars = crontab.vars('FOO');
 
  // create with a argument pair
  crontab.vars().add('FOO', 'foo');
  // create multiple with an object argument
  crontab.vars().add({'FOO':'foo', 'BAR':'1'});
 
  // remove all env variables
  crontab.vars().rm();
  // remove selected env variables
  crontab.vars({name: 'FOO'}).rm();
 
  // save
  crontab.save(function(err, crontab) {
 
  });
});

Naive reboot

require('crontab').load(function(err, crontab) {
  if (err) {
    return console.error(err);
  }
 
  var command = 'ls -l';
 
  crontab.remove({command:command});
  crontab.create(command, '@reboot');
 
  crontab.save(function(err, crontab) {
 
  });
});

More robust reboot and forever

require('crontab').load(function(err, crontab) {
  if (err) {
    return console.error(err);
  }
 
  var uuid           = '64d967a0-120b-11e0-ac64-0800200c9a66';
  var nodePath       = process.execPath.split('/').slice(0, -1).join('/');
  var exportCommand  = 'export PATH=' + nodePath + ':$PATH';
  var foreverCommand = require('path').join(__dirname, 'node_modules', 'forever', 'bin', 'forever');
  var sysCommand     = exportCommand + ' && ' + foreverCommand + ' start ' + __filename;
 
  crontab.remove({comment:uuid});
  crontab.create(sysCommand, '@reboot', uuid);
 
  crontab.save(function(err, crontab) {
    console.log(err)
  });
});

Specific user

// when executing for another user the library uses sudo, unless the
// current process runs as root
require('crontab').load('alice', function(err, crontab) {
  if (err) {
    return console.error(err);
  }
 
  crontab.save(function(err, crontab) {
    console.log(err)
  });
});

Author

Blagovest Dachev

Copyright

  • Blagovest Dachev (2010-2014)
  • Martin Owens (2009-2012)

Credits

This is a JavaScript port of a Python package by Martin Owens

License

GPL3

Install

npm i crontab

DownloadsWeekly Downloads

472

Version

1.3.0

License

none

Unpacked Size

73.3 kB

Total Files

12

Last publish

Collaborators

  • avatar