compile man files
This commit is contained in:
parent
ed838a13f1
commit
dc14212752
26
build.rs
26
build.rs
@ -11,13 +11,13 @@ use rumblebars::{Template, EvalContext};
|
||||
use rustc_serialize::json::Json;
|
||||
|
||||
static UNITS_DIR: &'static str = "units";
|
||||
static MAN_DIR: &'static str = "man";
|
||||
|
||||
fn main() {
|
||||
let out_dir = env::var("OUT_DIR").unwrap();
|
||||
let output = Path::new(&*out_dir);
|
||||
|
||||
let data = build_render_data();
|
||||
let ctx = EvalContext::new();
|
||||
|
||||
let mut config = File::create(out_dir.clone() + "/config.rs").unwrap();
|
||||
writeln!(config, "pub static USERS_CRONTAB_DIR: &'static str = {:?};", data["statedir"].as_string().unwrap()).unwrap();
|
||||
@ -27,17 +27,25 @@ fn main() {
|
||||
|
||||
let data = Json::Object(data);
|
||||
|
||||
for entry in fs::read_dir(UNITS_DIR).unwrap() {
|
||||
compile_templates(UNITS_DIR, output, &data);
|
||||
compile_templates(MAN_DIR, output, &data);
|
||||
}
|
||||
|
||||
fn compile_templates<P: AsRef<Path>>(source_dir: &str, output_dir: P, data: &Json) {
|
||||
let ctx = EvalContext::new();
|
||||
for entry in fs::read_dir(source_dir).unwrap() {
|
||||
let entry = entry.unwrap();
|
||||
let name = entry.file_name().into_string().unwrap();
|
||||
let target = output.join(&name[..name.len()-3]);
|
||||
let tmpl = File::open(entry.path()).and_then(|mut file| {
|
||||
let mut buf = String::new();
|
||||
file.read_to_string(&mut buf).map(|_| Template::new(&*buf).unwrap())
|
||||
}).unwrap();
|
||||
if name.ends_with(".in") {
|
||||
let target = output_dir.as_ref().join(&name[..name.len()-3]);
|
||||
let tmpl = File::open(entry.path()).and_then(|mut file| {
|
||||
let mut buf = String::new();
|
||||
file.read_to_string(&mut buf).map(|_| Template::new(&*buf).unwrap())
|
||||
}).unwrap();
|
||||
|
||||
println!("generating unit: {:?} -> {:?}...", entry.path(), target);
|
||||
tmpl.eval(&data, &mut File::create(target).unwrap(), &ctx).unwrap();
|
||||
println!("compiling from template: {:?} -> {:?}...", entry.path(), target);
|
||||
tmpl.eval(data, &mut File::create(target).unwrap(), &ctx).unwrap();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
91
man/anacrontab.5.in
Normal file
91
man/anacrontab.5.in
Normal file
@ -0,0 +1,91 @@
|
||||
.TH ANACRONTAB 5 "2014-09-16" "{{ package }} {{ version }}" anacrontab
|
||||
|
||||
.SH NAME
|
||||
/etc/anacrontab \- monotonic jobs
|
||||
|
||||
.SH DESCRIPTION
|
||||
The file
|
||||
.I /etc/anacrontab
|
||||
follow the rules previously set by \fBanacron(8)\fR.
|
||||
.PP
|
||||
Lines starting with '#' are comments.
|
||||
.PP
|
||||
Environment variables can be set using
|
||||
.B VAR=VALUE
|
||||
keypairs.
|
||||
.PP
|
||||
|
||||
The special
|
||||
.B RANDOM_DELAY
|
||||
(in minutes) environment variable is translated to
|
||||
.B AccuracySec=.
|
||||
|
||||
The special
|
||||
.B START_HOURS_RANGE
|
||||
(in hours) environment variable is translated to the
|
||||
.I \'hour\'
|
||||
component of
|
||||
.B OnCalendar=.
|
||||
anacron expect a range in the format ##-##, systemd-crontab-generator
|
||||
only use the starting hour of the range as reference.
|
||||
|
||||
The other lines are job-descriptions that follow this layout:
|
||||
.PP
|
||||
.B period delay job-identifier command
|
||||
.PP
|
||||
.TP
|
||||
*
|
||||
.I period
|
||||
is a number of days to wait between each job execution, or special values @daily, @weekly, @monthly, @yearly
|
||||
.PP
|
||||
.TP
|
||||
*
|
||||
.I delay
|
||||
is a number of extra minutes to wait before starting job. It is translated in
|
||||
.B OnBootSec=
|
||||
.
|
||||
.PP
|
||||
.TP
|
||||
*
|
||||
.I job-identifier
|
||||
is a single word. systemd-crontab-generator uses it to construct the dynamic unit names:
|
||||
.I cron-<job-identifier>-root-0.timer
|
||||
and matching
|
||||
.I cron-<job-identifier>-root-0.service
|
||||
.PP
|
||||
.TP
|
||||
*
|
||||
.I command
|
||||
is the command that is run by a shell
|
||||
|
||||
.SH BUGS
|
||||
systemd-crontab-generator doesn't support multiline commands.
|
||||
.PP
|
||||
Any
|
||||
.I period
|
||||
greater than 30 is rounded to the closest month
|
||||
.PP
|
||||
There are subtle differences on how anacron & systemd handle persistente timers:
|
||||
anacron will run a weekly job at most once a week, with allways a minimum delay of 6 days
|
||||
between runs; where systemd will try to run it every monday at 00:00;
|
||||
or as soon the system boot. In the most extreme case, if a system was only started on sunday;
|
||||
a weekly job will run this day and the again the next (mon)day.
|
||||
.br
|
||||
With carefull manual settings, it would be possible to run the
|
||||
real anacron binary (not your distro's package) with systemd-cron;
|
||||
if you need an identical behaviour.
|
||||
.br
|
||||
There is no difference for the daily job.
|
||||
|
||||
.SH DIAGNOSTICS
|
||||
After editing /etc/anacrontab, you can run
|
||||
.I journalctl -n
|
||||
and
|
||||
.I systemctl list-timers
|
||||
to see if the timers have well been updated.
|
||||
|
||||
.SH "SEE ALSO"
|
||||
.B systemd-crontab-generator(8), systemd.timer(5)
|
||||
|
||||
.SH AUTHOR
|
||||
Alexandre Detiste <alexandre.detiste@gmail.com>
|
62
man/crontab.1.in
Normal file
62
man/crontab.1.in
Normal file
@ -0,0 +1,62 @@
|
||||
.TH "CRONTAB" "1" "2014-12-10" "{{ package }} {{ version }}" "crontab"
|
||||
|
||||
.SH NAME
|
||||
crontab - maintain crontab files for individual users
|
||||
|
||||
.SH SYNOPSIS
|
||||
crontab [\-u user] file
|
||||
.br
|
||||
crontab [\-u user] [\-l | \-r | \-e | \-s] [\-i]
|
||||
|
||||
.TP
|
||||
.B (blank)
|
||||
default operation is replace
|
||||
.TP
|
||||
.B -u, --user
|
||||
edit some other user's crontab
|
||||
.TP
|
||||
.B -l, --list
|
||||
list user's crontab
|
||||
.TP
|
||||
.B -r, --remove
|
||||
delete user's crontab
|
||||
.TP
|
||||
.B -e, --edit
|
||||
edit user's crontab
|
||||
.TP
|
||||
.B -s, --show
|
||||
show all user who have a crontab
|
||||
.TP
|
||||
.B -i, --ask
|
||||
prompt before deleting user's crontab
|
||||
|
||||
.SH DESCRIPTION
|
||||
Crontab is the program used to let users install, deinstall or list
|
||||
recurrent jobs in the legacy cron format.
|
||||
.br
|
||||
Each user can have their own crontab, and though these are files in {{ statedir }},
|
||||
they are not intended to be edited directly.
|
||||
.br
|
||||
These jobs are then automatically translated in systemd Timers & Units
|
||||
by systemd-crontab-generator.
|
||||
|
||||
.SH FILES
|
||||
.TP
|
||||
.I {{ statedir }}
|
||||
Directory for users crontabs.
|
||||
.TP
|
||||
.I /etc/cron.allow
|
||||
list of users that can use crontab
|
||||
.TP
|
||||
.I /etc/cron.deny
|
||||
list of users that aren't allowed to use crontab
|
||||
.br
|
||||
(by default, only root can use crontab)
|
||||
|
||||
.SH LIMITATIONS
|
||||
SELinux is not supported.
|
||||
|
||||
.SH AUTHOR
|
||||
Konstantin Stepanov <me@kstep.me>
|
||||
.br
|
||||
Alexandre Detiste <alexandre@detiste.be> for this manpage & setgid helper
|
375
man/crontab.5.in
Normal file
375
man/crontab.5.in
Normal file
@ -0,0 +1,375 @@
|
||||
.\"/* Copyright 1988,1990,1993,1994 by Paul Vixie
|
||||
.\" * All rights reserved
|
||||
.\" *
|
||||
.\" * Distribute freely, except: don't remove my name from the source or
|
||||
.\" * documentation (don't take credit for my work), mark your changes (don't
|
||||
.\" * get me blamed for your possible bugs), don't alter or remove this
|
||||
.\" * notice. May be sold if buildable source is provided to buyer. No
|
||||
.\" * warrantee of any kind, express or implied, is included with this
|
||||
.\" * software; use at your own risk, responsibility for damages (if any) to
|
||||
.\" * anyone resulting from the use of this software rests entirely with the
|
||||
.\" * user.
|
||||
.\" *
|
||||
.\" * Send bug reports, bug fixes, enhancements, requests, flames, etc., and
|
||||
.\" * I'll try to keep a version up to date. I can be reached as follows:
|
||||
.\" * Paul Vixie <paul@vix.com> uunet!decwrl!vixie!paul
|
||||
.\" */
|
||||
.\"
|
||||
.\" $Id: crontab.5,v 2.4 1994/01/15 20:43:43 vixie Exp $
|
||||
.\"
|
||||
.TH CRONTAB 5 "03 July 2014" "{{ package }} {{ version }}" "crontab"
|
||||
.UC 4
|
||||
.SH NAME
|
||||
crontab \- tables for driving {{ package }}
|
||||
.SH DESCRIPTION
|
||||
A
|
||||
.I crontab
|
||||
file contains instructions to
|
||||
.IR {{ package }}
|
||||
of the general form: ``run this command at this time on this date''.
|
||||
Each user has their own crontab, and commands in any given crontab will be
|
||||
executed as the user who owns the crontab.
|
||||
.PP
|
||||
Blank lines and leading spaces and tabs are ignored. Lines whose first
|
||||
non-space character is a hash-sign (#) are comments, and are ignored.
|
||||
Note that comments are not allowed on the same line as cron commands, since
|
||||
they will be taken to be part of the command. Similarly, comments are not
|
||||
allowed on the same line as environment variable settings.
|
||||
.PP
|
||||
An active line in a crontab will be either an environment setting or a cron
|
||||
command. The crontab file is parsed from top to bottom, so any environment
|
||||
settings will affect only the cron commands below them in the file.
|
||||
An environment setting is of the form,
|
||||
.PP
|
||||
name = value
|
||||
.PP
|
||||
where the spaces around the equal-sign (=) are optional, and any subsequent
|
||||
non-leading spaces in
|
||||
.I value
|
||||
will be part of the value assigned to
|
||||
.IR name .
|
||||
The
|
||||
.I value
|
||||
string may be placed in quotes (single or double, but matching) to preserve
|
||||
leading or trailing blanks. The
|
||||
.I value
|
||||
string is
|
||||
.B not
|
||||
parsed for environmental substitutions or replacement of variables, thus lines
|
||||
like
|
||||
.PP
|
||||
PATH = $HOME/bin:$PATH
|
||||
.PP
|
||||
will not work as you might expect. And neither will this work
|
||||
.PP
|
||||
A=1
|
||||
B=2
|
||||
C=$A $B
|
||||
.PP
|
||||
There will not be any subsitution for the defined variables in the
|
||||
last value.
|
||||
.PP
|
||||
An alternative for setting up the commands path is using the fact that
|
||||
many shells will treat the tilde(~) as substitution of $HOME, so if you use
|
||||
.I bash
|
||||
for your tasks you can use this:
|
||||
.PP
|
||||
SHELL=/bin/bash
|
||||
PATH=~/bin:/usr/bin/:/bin
|
||||
.PP
|
||||
|
||||
.I Special variables:
|
||||
.TP
|
||||
.B SHELL, PATH, USER, LOGNAME, HOME, LANG
|
||||
Those are set up automatically by systemd itself, see
|
||||
.IR systemd.exec (5)
|
||||
SHELL defaults to /bin/sh.
|
||||
SHELL and PATH may be overridden by settings in the crontab.
|
||||
|
||||
.TP
|
||||
.B MAILTO
|
||||
.br
|
||||
On error
|
||||
.IR systemd.cron (7)
|
||||
will look at MAILTO. If MAILTO is defined mail is sent to this email address.
|
||||
MAILTO may also be used to direct mail to multiple
|
||||
recipients by separating recipient users with a comma.
|
||||
If MAILTO is defined but empty (MAILTO=""), no mail will be sent.
|
||||
Otherwise mail is sent to the owner of the crontab.
|
||||
.br
|
||||
This mail only contains an small excerpt from the log, as seen when using
|
||||
.B systemctl status
|
||||
The full output remains avaible in the journal.
|
||||
|
||||
.TP
|
||||
.B RANDOM_DELAY
|
||||
(in minutes) environment variable is translated to
|
||||
.B AccuracySec=.
|
||||
|
||||
.TP
|
||||
.B DELAY
|
||||
(in minutes) environment variable is translated to
|
||||
.B OnBootSec=.
|
||||
This works like the 'delay' field of anacrontab(5) and make systemd wait # minutes
|
||||
after boot before starting the unit. This value can also be used to spread out
|
||||
the start times of @daily/@weekly/@monthly... jobs on a 24/24 system.
|
||||
|
||||
.TP
|
||||
.B START_HOURS_RANGE
|
||||
(in hours) environment variable is translated to the
|
||||
.I \'hour\'
|
||||
component of
|
||||
.B OnCalendar=.
|
||||
This variable is inheritted from anacrontab(5), but also supported in crontab(5)
|
||||
by systemd-crontab-generator. Anacron expect a time range in the START-END format (eg: 6-9),
|
||||
systemd-crontab-generator will only use the starting hour of the range as reference.
|
||||
Unless you set this variable, all the @daily/@weekly/@monthly/@yearly jobs
|
||||
will run at midnight. If you set this variable and the system was off during
|
||||
the ours defined in the range, the (persitent) job will start at boot.
|
||||
|
||||
.TP
|
||||
.B PERSISTENT
|
||||
With this flag, you can overide the generator default heuristic.
|
||||
.br
|
||||
.B 'yes':
|
||||
force all further jobs to be persistent
|
||||
.br
|
||||
.B 'auto':
|
||||
only recognize @ keywords to be persistent
|
||||
.br
|
||||
.B 'no':
|
||||
force all further jobs not to be persistent
|
||||
|
||||
.TP
|
||||
.B BATCH
|
||||
This boolean flag is translated to options
|
||||
.B CPUSchedulingPolicy=idle
|
||||
and
|
||||
.B IOSchedulingClass=idle
|
||||
when set.
|
||||
|
||||
.PP
|
||||
The format of a
|
||||
.B cron command
|
||||
is the same as the one defined by the cron daemon.
|
||||
Each line has five time and date fields,
|
||||
followed by a command, followed by a newline character ('\\n').
|
||||
The system crontab (/etc/crontab) and the packages crontabs (/etc/cron.d/*)
|
||||
use the same format, except that the username for the command is specified after the time and
|
||||
date fields and before the command. The fields may be separated
|
||||
by spaces or tabs.
|
||||
.PP
|
||||
Commands are executed by
|
||||
.IR systemd
|
||||
when the minute, hour, and month of year fields match the current time,
|
||||
.I and
|
||||
when at least one of the two day fields (day of month, or day of week)
|
||||
match the current time (see ``Note'' below).
|
||||
The time and date fields are:
|
||||
.IP
|
||||
.ta 1.5i
|
||||
field allowed values
|
||||
.br
|
||||
----- --------------
|
||||
.br
|
||||
minute 0-59
|
||||
.br
|
||||
hour 0-23
|
||||
.br
|
||||
day of month 1-31
|
||||
.br
|
||||
month 1-12 (or names, see below)
|
||||
.br
|
||||
day of week 0-7 (0 or 7 is Sun, or use names)
|
||||
.br
|
||||
.PP
|
||||
A field may be an asterisk (*), which always stands for ``first\-last''.
|
||||
.PP
|
||||
Ranges of numbers are allowed. Ranges are two numbers separated
|
||||
with a hyphen. The specified range is inclusive. For example,
|
||||
8-11 for an ``hours'' entry specifies execution at hours 8, 9, 10
|
||||
and 11.
|
||||
.PP
|
||||
Lists are allowed. A list is a set of numbers (or ranges)
|
||||
separated by commas. Examples: ``1,2,5,9'', ``0-4,8-12''.
|
||||
.PP
|
||||
Step values can be used in conjunction with ranges. Following
|
||||
a range with ``/<number>'' specifies skips of the number's value
|
||||
through the range. For example, ``0-23/2'' can be used in the hours
|
||||
field to specify command execution every other hour (the alternative
|
||||
in the V7 standard is ``0,2,4,6,8,10,12,14,16,18,20,22''). Steps are
|
||||
also permitted after an asterisk, so if you want to say ``every two
|
||||
hours'', just use ``*/2''.
|
||||
.PP
|
||||
Names can also be used for the ``month'' and ``day of week''
|
||||
fields. Use the first three letters of the particular
|
||||
day or month (case doesn't matter). Ranges or
|
||||
lists of names are not allowed.
|
||||
.PP
|
||||
The ``sixth'' field (the rest of the line) specifies the command to be
|
||||
run.
|
||||
The entire command portion of the line, up to a newline
|
||||
.\" or % character
|
||||
, will be executed by /bin/sh or by the shell
|
||||
specified in the SHELL variable of the crontab file.
|
||||
.\"Percent-signs (%) in the command, unless escaped with backslash
|
||||
.\"(\\), will be changed into newline characters, and all data
|
||||
.\"after the first % will be sent to the command as standard
|
||||
.\"input. There is no way to split a single command line onto multiple
|
||||
.\"lines, like the shell's trailing "\\".
|
||||
.PP
|
||||
systemd-crontab-generator doesn't handle multi-line command split by
|
||||
the % character like vixie-cron.
|
||||
.PP
|
||||
Note: The day of a command's execution can be specified by two
|
||||
fields \(em day of month, and day of week. If both fields are
|
||||
restricted (i.e., aren't *), the command will be run when
|
||||
.I either
|
||||
field matches the current time. For example,
|
||||
.br
|
||||
``30 4 1,15 * 5''
|
||||
would cause a command to be run at 4:30 am on the 1st and 15th of each
|
||||
month, plus every Friday. One can, however, achieve the desired result
|
||||
by adding a test to the command (see the last example in EXAMPLE CRON FILE
|
||||
below).
|
||||
.PP
|
||||
Instead of the first five fields, one of eight special strings may appear:
|
||||
.IP
|
||||
.ta 1.5i
|
||||
string meaning
|
||||
.br
|
||||
------ -------
|
||||
.br
|
||||
@reboot Run once, at startup.
|
||||
.br
|
||||
@yearly Run once a year, "0 0 1 1 *".
|
||||
.br
|
||||
@annually (same as @yearly)
|
||||
.br
|
||||
@monthly Run once a month, "0 0 1 * *".
|
||||
.br
|
||||
@weekly Run once a week, "0 0 * * 0".
|
||||
.br
|
||||
@daily Run once a day, "0 0 * * *".
|
||||
.br
|
||||
@midnight (same as @daily)
|
||||
.br
|
||||
@hourly Run once an hour, "0 * * * *".
|
||||
.br
|
||||
.PP
|
||||
Please note that startup, as far as @reboot is concerned,
|
||||
may be before some system daemons,
|
||||
or other facilities, were startup. This is due to the boot order
|
||||
sequence of the machine.
|
||||
|
||||
.SH EXAMPLE CRON FILE
|
||||
|
||||
The following lists an example of a user crontab file.
|
||||
|
||||
.nf
|
||||
|
||||
# use /bin/bash to run commands, instead of the default /bin/sh
|
||||
SHELL=/bin/bash
|
||||
# mail errors to `paul', no matter whose crontab this is
|
||||
MAILTO=paul
|
||||
#
|
||||
# run five minutes after midnight, every day
|
||||
5 0 * * * $HOME/bin/daily.job >> $HOME/tmp/out 2>&1
|
||||
# run at 2:15pm on the first of every month
|
||||
.\" -- output mailed to paul
|
||||
15 14 1 * * $HOME/bin/monthly
|
||||
.\"# run at 10 pm on weekdays, annoy Joe
|
||||
.\"0 22 * * 1-5 mail \-s "It's 10pm" joe%Joe,%%Where are your kids?%
|
||||
23 0-23/2 * * * echo "run 23 minutes after midn, 2am, 4am ..., everyday"
|
||||
5 4 * * sun echo "run at 5 after 4 every sunday"
|
||||
# Run on every second Saturday of the month
|
||||
0 4 8-14 * * test $(date +\\%u) \-eq 6 && echo "2nd Saturday"
|
||||
.fi
|
||||
.SH EXAMPLE SYSTEM CRON FILE
|
||||
|
||||
The following lists the content of a regular system-wide crontab file. Unlike a
|
||||
user's crontab, this file has the username field, as used by /etc/crontab.
|
||||
|
||||
.nf
|
||||
# /etc/crontab: system-wide crontab
|
||||
# Unlike any other crontab you don't have to run the `crontab'
|
||||
# command to install the new version when you edit this file
|
||||
# and files in /etc/cron.d. These files also have username fields,
|
||||
# that none of the other crontabs do.
|
||||
|
||||
SHELL=/bin/sh
|
||||
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
|
||||
|
||||
# m h dom mon dow user command
|
||||
17 * * * * root cd / && run-parts \-\-report /etc/cron.hourly
|
||||
25 6 * * * root test \-x /usr/sbin/anacron || ( cd / && run-parts \-\-report /etc/cron.daily )
|
||||
47 6 * * 7 root test \-x /usr/sbin/anacron || ( cd / && run-parts \-\-report /etc/cron.weekly )
|
||||
52 6 1 * * root test \-x /usr/sbin/anacron || ( cd / && run-parts \-\-report /etc/cron.monthly )
|
||||
#
|
||||
.fi
|
||||
|
||||
.PP
|
||||
This is only an example,
|
||||
.B systemd-cron uses native units instead for those jobs.
|
||||
.br
|
||||
If you add those lines, your jobs will run twice.
|
||||
|
||||
.SH SEE ALSO
|
||||
systemd.cron(7), systemd-crontab-generator(8), crontab(1)
|
||||
|
||||
.SH LIMITATIONS
|
||||
The
|
||||
.I systemd-cron
|
||||
units runs with a defined timezone. It currently does not support
|
||||
per-user timezones. All the tasks: system's and user's will be run based on the
|
||||
configured timezone. Even if a user specifies the
|
||||
.I TZ
|
||||
environment variable in his
|
||||
.I crontab
|
||||
this will affect only the commands executed in the crontab, not the execution
|
||||
of the crontab tasks themselves.
|
||||
|
||||
The
|
||||
.I crontab
|
||||
syntax does not make it possible to define all possible periods one could
|
||||
image off. For example, it is not straightforward to define the last
|
||||
weekday of a month. If a task needs to be run in a specific period of time
|
||||
that cannot be defined in the
|
||||
.I crontab
|
||||
syntaxs the best approach would be to have the program itself check the
|
||||
date and time information and continue execution only if the period
|
||||
matches the desired one.
|
||||
|
||||
.B systemd-crontab-generator
|
||||
doesn't support these
|
||||
.B vixie-cron
|
||||
features:
|
||||
.TP
|
||||
*
|
||||
spawning forking deamons, the 'Service' units are all set with 'Type=oneshot'
|
||||
.TP
|
||||
*
|
||||
multi-line jobs separated by the '%' character
|
||||
.TP
|
||||
*
|
||||
vixie-cron requires that each entry in a crontab end in a newline character. If the
|
||||
last entry in a crontab is missing a newline (ie, terminated by EOF), vixie-cron will
|
||||
consider the crontab (at least partially) broken.
|
||||
.br
|
||||
systemd-crontab-generator considers this crontab as valid
|
||||
|
||||
.SH DIAGNOSTICS
|
||||
You can see how your crontab where translated by typing:
|
||||
.br
|
||||
.B systemctl cat cron-<userid>-*
|
||||
.PP
|
||||
.B systemctl cat
|
||||
does support command-line completion.
|
||||
|
||||
.SH AUTHOR
|
||||
Paul Vixie <paul@vix.com> is the author of
|
||||
.I cron
|
||||
and original creator of this manual page. This page has also been modified for
|
||||
Debian by Steve Greenland, Javier Fernandez-Sanguino and Christian Kastner.
|
||||
.br
|
||||
This page has been reworded by Alexandre Detiste for inclusion in systemd-cron.
|
101
man/systemd-crontab-generator.8.in
Normal file
101
man/systemd-crontab-generator.8.in
Normal file
@ -0,0 +1,101 @@
|
||||
.TH SYSTEMD-CRONTAB-GENERATOR 8 "2014-06-29" "{{ package }} {{ version }}" systemd-crontab-generator
|
||||
|
||||
.SH NAME
|
||||
systemd-crontab-generator - translate cron schedules in systemd Units
|
||||
|
||||
.SH SYNOPSIS
|
||||
{{ libdir }}/systemd/system-generators/systemd-crontab-generator output_folder
|
||||
|
||||
.SH DESCRIPTION
|
||||
systemd-crontab-generator is a generator that translates the legacy cron files (see FILES)
|
||||
into native systemd units & timers.
|
||||
.PP
|
||||
It is not meant to be run manually, it is called automatically by systemd.
|
||||
.PP
|
||||
It is run
|
||||
.TP
|
||||
*
|
||||
during early boot,
|
||||
.TP
|
||||
*
|
||||
a second time by cron-after-var.service, only if /var is a separate mount,
|
||||
in order to process user crontabs in {{ statedir }}; if any,
|
||||
.TP
|
||||
*
|
||||
after each manual updates to the cron files, (*)
|
||||
.TP
|
||||
*
|
||||
and when distribution packages add files in /etc/cron.d/. (*)
|
||||
.PP
|
||||
|
||||
.B
|
||||
(*):
|
||||
those are monitored by cron-update.path
|
||||
|
||||
.PP
|
||||
systemd\-crontab\-generator
|
||||
implements the
|
||||
\m[blue]\fBgenerator specification\fR\m[]\&\s-2\u[1]\d\s+2\&.
|
||||
|
||||
.SH FILES
|
||||
.TP
|
||||
.B /etc/crontab
|
||||
System crontab, see \fBcrontab\fR(5).
|
||||
|
||||
.TP
|
||||
.B /etc/cron.d
|
||||
Directory for system crontabs provided by packages.
|
||||
|
||||
.TP
|
||||
.B /etc/anacrontab
|
||||
See \fBanacrontab\fR(5).
|
||||
|
||||
.TP
|
||||
.B {{ statedir }}
|
||||
Directory for users crontabs.
|
||||
.br
|
||||
|
||||
.TP
|
||||
.B /run/systemd/generator
|
||||
Directory where the generated units are stored.
|
||||
|
||||
.TP
|
||||
.B /run/crond.reboot
|
||||
Flag used to avoid running @reboot jobs again after boot.
|
||||
|
||||
.TP
|
||||
.B /var/lib/systemd/timers
|
||||
Directory where systemd store time stamps needed for the
|
||||
.I Persistent
|
||||
feature.
|
||||
|
||||
.SH DIAGNOSTICS
|
||||
With systemd >= 209, you can execute
|
||||
.B "systemctl list-timers"
|
||||
to have a overview of timers and know when they will elapse.
|
||||
.br
|
||||
|
||||
If you get errors like
|
||||
.br
|
||||
.B {{ libdir }}/systemd/system-generators/systemd-crontab-generator failed with error code 1.
|
||||
.br
|
||||
in the journal, you can manually run
|
||||
.br
|
||||
.B "{{ libdir }}/systemd/system-generators/systemd-crontab-generator /tmp"
|
||||
.br
|
||||
to get a more verbose error message.
|
||||
|
||||
.SH SEE ALSO
|
||||
\fBsystemd.cron\fR(7),\fBcrontab\fR(5),\fBsystemd.unit\fR(5),\fBsystemd.timer\fR(5)
|
||||
|
||||
.SH "NOTES"
|
||||
.IP " 1." 4
|
||||
generator specification
|
||||
.RS 4
|
||||
\%http://www.freedesktop.org/wiki/Software/systemd/Generators
|
||||
.RE
|
||||
|
||||
.SH AUTHOR
|
||||
Konstantin Stepanov <me@kstep.me> for the generator
|
||||
.br
|
||||
Alexandre Detiste <alexandre@detiste.be> for this man page
|
179
man/systemd.cron.7.in
Normal file
179
man/systemd.cron.7.in
Normal file
@ -0,0 +1,179 @@
|
||||
.TH SYSTEMD.CRON 7 "" "{{ package }} {{ version }}" systemd.cron
|
||||
|
||||
.SH NAME
|
||||
systemd.cron - systemd cron units
|
||||
|
||||
.SH SYNOPSIS
|
||||
cron.target,
|
||||
cron-boot.timer, cron-boot.target, cron-boot.service,
|
||||
cron-minutely.timer, cron-minutely.target, cron-minutely.service,
|
||||
cron-hourly.timer, cron-hourly.target, cron-hourly.service,
|
||||
cron-daily.timer, cron-daily.target, cron-daily.service,
|
||||
cron-weekly.timer, cron-weekly.target, cron-weekly.service,
|
||||
cron-monthly.timer, cron-monthly.target, cron-monthly.service,
|
||||
cron-quarterly.timer, cron-quarterly.target, cron-quarterly.service,
|
||||
cron-semi-annually.timer, cron-semi-annually.target, cron-semi-annually.service,
|
||||
cron-yearly.timer, cron-yearly.target, cron-yearly.service,
|
||||
cron-update.path, cron-update.service.
|
||||
|
||||
.SH DESCRIPTION
|
||||
These units provide cron daemon functionality by running scripts in cron directories.
|
||||
.br
|
||||
The crontabs are monitored by cron-update.path and are automatically translated by \fBsystemd-crontab-generator\fR(8) .
|
||||
|
||||
.SH FILES
|
||||
.TP
|
||||
.I {{ confdir }}/cron.boot
|
||||
Directory for scripts to be executed on boot.
|
||||
|
||||
.TP
|
||||
.I {{ confdir }}/cron.minutely
|
||||
Directory for scripts to be executed every minute.
|
||||
|
||||
.TP
|
||||
.I {{ confdir }}/cron.hourly
|
||||
Directory for scripts to be executed every hour.
|
||||
|
||||
.TP
|
||||
.I {{ confdir }}/cron.daily
|
||||
Directory for scripts to be executed every day.
|
||||
|
||||
.TP
|
||||
.I {{ confdir }}/cron.weekly
|
||||
Directory for scripts to be executed every week.
|
||||
|
||||
.TP
|
||||
.I {{ confdir }}/cron.monthly
|
||||
Directory for scripts to be executed every month.
|
||||
|
||||
.TP
|
||||
.I {{ confdir }}/cron.quarterly
|
||||
Directory for scripts to be executed every 3 months.
|
||||
|
||||
.TP
|
||||
.I {{ confdir }}/cron.semi-annually
|
||||
Directory for scripts to be executed every 6 months.
|
||||
|
||||
.TP
|
||||
.I {{ confdir }}/cron.yearly
|
||||
Directory for scripts to be executed every year.
|
||||
|
||||
.TP
|
||||
.I {{ confdir }}/cron.d
|
||||
Directory for \fBcrontabs\fR to be executed on a custom schedule.
|
||||
The files in this folder must follow the \fBcrontab\fR(5) layout.
|
||||
.br
|
||||
If there exists a timer of the same name + '.timer' in {{ unitdir }} or /etc/systemd/system,
|
||||
this crontab will be ignored to enable a smooth migration to native timers.
|
||||
.br
|
||||
You can also use this to mask an unneeded crontab provide by a package:
|
||||
.br
|
||||
ln \-s /dev/null /etc/systemd/system/[package].timer
|
||||
|
||||
.SH SYSTEM UNITS
|
||||
.TP
|
||||
cron.target
|
||||
The target unit which starts the others. This should be enabled and started to use cron functionality.
|
||||
|
||||
.TP
|
||||
cron-\fIschedule\fR.timer
|
||||
The timer units which pull the cron-\fIschedule\fR.target units at the appropriate time. Started and stopped by the
|
||||
cron.target unit. These units cannot be controlled manually.
|
||||
|
||||
.TP
|
||||
cron-\fIschedule\fR.target
|
||||
The targets invoke all service units wanted by them, including cron-\fIschedule\fR.service.
|
||||
|
||||
.TP
|
||||
cron-\fIschedule\fR.service
|
||||
The service units which run scripts in the cron directories. Started and stopped by the cron-\fIschedule\fR.target
|
||||
units. These units cannot be controlled manually. You can use \fBjournalctl\fR(1) to view the output of scripts run
|
||||
from these units.
|
||||
|
||||
.SH LIMITATIONS
|
||||
This cron replacement only send mails on failure. The log of jobs is saved in systemd journal.
|
||||
Do \fInot\fR use with a cron daemon or anacron, otherwise scripts may be
|
||||
executed multiple times.
|
||||
.br
|
||||
All services are run with
|
||||
.B
|
||||
Type=oneshot
|
||||
, that means you can't use systemd-cron to launch long lived forking daemons.
|
||||
|
||||
.SH EXTENSIONS
|
||||
The generator can optionally turn all crontabs in persistent timers with the
|
||||
.B PERSISTENT=true
|
||||
flag, while a regular cron+anacron setup won't catch-up the missed executions of crontabs on boot.
|
||||
|
||||
.SH EXAMPLES
|
||||
|
||||
.IP "Start cron units"
|
||||
.SB # systemctl start cron.target
|
||||
|
||||
.IP "Start cron units on boot"
|
||||
.SB # systemctl enable cron.target
|
||||
|
||||
.IP "View script output"
|
||||
.SB # journalctl -u cron-boot
|
||||
.br
|
||||
.SB # journalctl -u cron-minutely
|
||||
.br
|
||||
.SB # journalctl -u cron-hourly
|
||||
.br
|
||||
.SB # journalctl -u cron-daily
|
||||
.br
|
||||
.SB # journalctl -u cron-weekly
|
||||
.br
|
||||
.SB # journalctl -u cron-monthly
|
||||
.br
|
||||
.SB # journalctl -u cron-quarterly
|
||||
.br
|
||||
.SB # journalctl -u cron-semi-annually
|
||||
.br
|
||||
.SB # journalctl -u cron-yearly
|
||||
.br
|
||||
|
||||
.IP "Example service file executed every hour"
|
||||
.SB [Unit]
|
||||
.br
|
||||
.SB Description=Update the man db
|
||||
|
||||
.SB [Service]
|
||||
.br
|
||||
.SB Nice=19
|
||||
.br
|
||||
.SB IOSchedulingClass=2
|
||||
.br
|
||||
.SB IOSchedulingPriority=7
|
||||
.br
|
||||
.SB ExecStart=/usr/bin/mandb --quiet
|
||||
|
||||
.SB [Install]
|
||||
.br
|
||||
.SB WantedBy=cron-hourly.target
|
||||
|
||||
.SH NOTES
|
||||
.nr step 1 1
|
||||
.IP \n[step]. 3
|
||||
The exact times scripts are executed is determined by the values of the special calendar events \fIhourly\fR,
|
||||
\fIdaily\fR, \fIweekly\fR, \fImonthly\fR, and \fIyearly\fR defined by \fBsystemd.time\fR(7).
|
||||
.IP \n+[step].
|
||||
\fBrun-parts\fR(8) is used to run scripts. Scripts must be executable by \fIroot\fR to run.
|
||||
|
||||
.SH DIAGNOSTICS
|
||||
With systemd >= 209, you can execute "systemctl list-timers" to have a overview of
|
||||
timers and know when they will elapse.
|
||||
|
||||
.SH SEE ALSO
|
||||
.BR systemd (1),
|
||||
.BR systemd.unit (5),
|
||||
.BR systemd.service (5),
|
||||
.BR systemd.target (5),
|
||||
.BR systemd.timer (5),
|
||||
.BR systemd.time (7),
|
||||
.BR systemd-crontab-generator (8),
|
||||
.BR crontab (5),
|
||||
.BR run-parts (8)
|
||||
|
||||
.SH AUTHOR
|
||||
Dwayne Bent
|
Loading…
Reference in New Issue
Block a user