Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

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

Notifications You must be signed in to change notification settings

fcic/node-crontab

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

158 Commits

Repository files navigation

node-crontab

Build Status Dependencies NPM version

Stand With Ukraine

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:/comment2/});
 // 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:/comment1/});
 // 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

About

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

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • JavaScript 100.0%

AltStyle によって変換されたページ (->オリジナル) /