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

crontab

Package Overview
Dependencies
Maintainers
1
Versions
37
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

crontab

A module for reading, creating, deleting, manipulating, and saving system cronjobs with node.js

  • 1.4.2
  • latest
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
566
decreased by-5.67%
Maintainers
1
Weekly downloads
 
Created
Source

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

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

Credits

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

License

GPL3

Keywords

FAQs

Package last updated on 07 May 2021

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