bionic (5) crontab.5.gz

Provided by: systemd-cron_1.5.13-1_amd64 bug

NAME

       crontab - tables for driving systemd-cron

DESCRIPTION

       A crontab file contains instructions to systemd-cron 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.

       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.

       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,

           name = value

       where the spaces around the equal-sign (=) are optional, and any subsequent non-leading spaces  in  value
       will  be part of the value assigned to name.  The value string may be placed in quotes (single or double,
       but matching) to preserve leading or trailing blanks. The value string is not  parsed  for  environmental
       substitutions or replacement of variables, thus lines like

           PATH = $HOME/bin:$PATH

       will not work as you might expect. And neither will this work

           A=1
           B=2
           C=$A $B

       There will not be any subsitution for the defined variables in the last value.

       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 bash for your tasks you can use this:

            SHELL=/bin/bash
            PATH=~/bin:/usr/bin/:/bin

       Special variables:

       SHELL, PATH, USER, LOGNAME, HOME, LANG
              Those are set up automatically by systemd itself, see systemd.exec(5) SHELL defaults  to  /bin/sh.
              SHELL and PATH may be overridden by settings in the crontab.

       MAILTO
              On  error  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.
              This mail only contains an small excerpt from the log, as seen when  using  systemctl  status  The
              full output remains available in the journal.

       RANDOM_DELAY
              (in minutes) environment variable is translated to AccuracySec=.

       DELAY  (in  minutes) environment variable is translated to 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.

       START_HOURS_RANGE
              (in hours) environment variable is translated  to  the  ´hour´  component  of  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.

       PERSISTENT
              With this flag, you can override the generator default heuristic.
              'yes': force all further jobs to be persistent
              'auto': only recognize @ keywords to be persistent
              'no': force all further jobs not to be persistent

       BATCH  This boolean flag is translated to  options  CPUSchedulingPolicy=idle  and  IOSchedulingClass=idle
              when set.

       The  format of a 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.

       Commands  are executed by systemd when the minute, hour, and month of year fields match the current time,
       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:

              field          allowed values
              -----          --------------
              minute         0-59
              hour           0-23
              day of month   1-31
              month          1-12 (or names, see below)
              day of week    0-7 (0 or 7 is Sun, or use names)

       A field may be an asterisk (*), which always stands for ``first-last''.

       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.

       Lists are allowed.  A list is a set of numbers (or ranges) separated by commas.   Examples:  ``1,2,5,9'',
       ``0-4,8-12''.

       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''.

       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.

       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  ,  will be executed by /bin/sh or by the shell specified in the SHELL
       variable of the crontab file.

       systemd-crontab-generator doesn't handle multi-line command split by the % character like vixie-cron.

       Note: The day of a command's execution can be specified by two fields — day of month, and  day  of  week.
       If  both  fields  are  restricted (i.e., aren't *), the command will be run when either field matches the
       current time.  For example,
       ``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).

       Instead of the first five fields, one of eight special strings may appear:

              string         meaning
              ------         -------
              @reboot        Run once, at startup.
              @yearly        Run once a year, "0 0 1 1 *".
              @annually      (same as @yearly)
              @monthly       Run once a month, "0 0 1 * *".
              @weekly        Run once a week, "0 0 * * 0".
              @daily         Run once a day, "0 0 * * *".
              @midnight      (same as @daily)
              @hourly        Run once an hour, "0 * * * *".

       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.

EXAMPLE CRON FILE

       The following lists an example of a user crontab file.

       # 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
       15 14 1 * *     $HOME/bin/monthly
       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"

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.

       # /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 usercommand
       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 )
       #

       This is only an example, systemd-cron uses native units instead for those jobs.
       If you add those lines, your jobs will run twice.

SEE ALSO

       systemd.cron(7), systemd-crontab-generator(8), crontab(1)

       Some extra settings can only be tweaked with

           systemctl edit cron-<schedule>.[timer|service]

       see systemd.cron(7) for more details.

LIMITATIONS

       The 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 TZ environment variable in his crontab this will affect only the commands executed  in  the  crontab,
       not the execution of the crontab tasks themselves.

       The  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 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.

       systemd-crontab-generator doesn't support these vixie-cron features:

       *      spawning forking deamons, the 'Service' units are all set with 'Type=oneshot'

       *      multi-line jobs separated by the '%' character

       *      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.
              systemd-crontab-generator considers this crontab as valid

DIAGNOSTICS

       You can see how your crontab where translated by typing:
       systemctl cat cron-<userid>-*

       systemctl cat does support command-line completion.

AUTHOR

       Paul  Vixie  <paul@vix.com> is the author of 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.
       This page has been reworded by Alexandre Detiste for inclusion in systemd-cron.