Source code for fabtools.cron

"""
Cron tasks
==========

This module provides tools to manage periodic tasks using cron.

"""
from __future__ import with_statement

from tempfile import NamedTemporaryFile

from fabtools.files import upload_template
from fabtools.utils import run_as_root


[docs]def add_task(name, timespec, user, command, environment=None): """ Add a cron task. The *command* will be run as *user* periodically. You can use any valid `crontab(5)`_ *timespec*, including the ``@hourly``, ``@daily``, ``@weekly``, ``@monthly`` and ``@yearly`` shortcuts. You can also provide an optional dictionary of environment variables that should be set when running the periodic command. Examples:: from fabtools.cron import add_task # Run every month add_task('cleanup', '@monthly', 'alice', '/home/alice/bin/cleanup.sh') # Run every tuesday and friday at 5:30am add_task('reindex', '30 5 * * 2,4', 'bob', '/home/bob/bin/reindex.sh') .. _crontab(5): http://manpages.debian.net/cgi-bin/man.cgi?query=crontab&sektion=5 """ if environment is None: environment = {} with NamedTemporaryFile() as script: # Write optional environment variables first for key, value in environment.iteritems(): script.write('%(key)s=%(value)s\n' % locals()) # Write the main crontab line script.write('%(timespec)s %(user)s %(command)s\n' % locals()) script.flush() # Upload file filename = '/etc/cron.d/%(name)s' % locals() upload_template(filename, script.name, context={}, chown=True, use_sudo=True) # Fix permissions run_as_root('chmod 0644 %s' % filename)
[docs]def add_daily(name, user, command): """ Shortcut to add a daily cron task. Example:: import fabtools # Run every day fabtools.cron.add_daily('backup', 'root', '/usr/local/bin/backup.sh') """ add_task(name, '@daily', user, command)
Read the Docs v: 0.16.0
Versions
latest
0.16.0
0.15.0
0.14.0
0.13.0
0.12.0
0.11.0
Downloads
On Read the Docs
Project Home
Builds

Free document hosting provided by Read the Docs.