1.4.2 • Published 3 years ago

crontab v1.4.2

Weekly downloads
581
License
-
Repository
github
Last release
3 years ago

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 pair of arguments
  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

1.4.2

3 years ago

1.4.1

3 years ago

1.4.0

4 years ago

1.3.0

4 years ago

1.2.0

6 years ago

1.1.4

6 years ago

1.1.3

8 years ago

1.1.2

8 years ago

1.1.1

8 years ago

1.1.0

9 years ago

1.0.3

9 years ago

1.0.2

10 years ago

1.0.1

10 years ago

1.0.0

10 years ago

0.3.4

11 years ago

0.3.3

11 years ago

0.3.2

11 years ago

0.3.1

11 years ago

0.3.0

12 years ago

0.2.10

13 years ago

0.2.99

13 years ago

0.2.9

13 years ago

0.2.8

13 years ago

0.2.7

13 years ago

0.2.6

13 years ago

0.2.5

13 years ago

0.2.4

13 years ago

0.2.3

13 years ago

0.2.2

13 years ago

0.2.1

13 years ago

0.2.0

13 years ago

0.1.5

13 years ago

0.1.4

13 years ago

0.1.3

13 years ago

0.1.2

13 years ago

0.1.1

13 years ago

0.1.0

13 years ago