summaryrefslogtreecommitdiffstats
path: root/upstream/debian-unstable/man5/crontab.5
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-15 19:43:11 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-15 19:43:11 +0000
commitfc22b3d6507c6745911b9dfcc68f1e665ae13dbc (patch)
treece1e3bce06471410239a6f41282e328770aa404a /upstream/debian-unstable/man5/crontab.5
parentInitial commit. (diff)
downloadmanpages-l10n-fc22b3d6507c6745911b9dfcc68f1e665ae13dbc.tar.xz
manpages-l10n-fc22b3d6507c6745911b9dfcc68f1e665ae13dbc.zip
Adding upstream version 4.22.0.upstream/4.22.0
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'upstream/debian-unstable/man5/crontab.5')
-rw-r--r--upstream/debian-unstable/man5/crontab.5407
1 files changed, 407 insertions, 0 deletions
diff --git a/upstream/debian-unstable/man5/crontab.5 b/upstream/debian-unstable/man5/crontab.5
new file mode 100644
index 00000000..b3f3d158
--- /dev/null
+++ b/upstream/debian-unstable/man5/crontab.5
@@ -0,0 +1,407 @@
+.\"/* 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 "19 April 2010"
+.UC 4
+.SH NAME
+crontab \- tables for driving cron
+.SH DESCRIPTION
+A
+.I crontab
+file contains instructions to the
+.IR cron (8)
+daemon 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. Uucp and News will usually have
+their own crontabs, eliminating the need for explicitly running
+.IR su (1)
+as part of a cron command.
+.PP
+Note that comments on the same line as cron commands are not interpreted as
+comments in the cron sense, but are considered part of the command and passed
+to the shell. This is similarly true for comments 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. 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. To define an empty variable, quotes
+.B must
+be used.
+.PP
+The
+.I value
+string is
+.B not
+parsed for environmental substitutions or replacement of variables or
+tilde(~) expansion, thus lines like
+.PP
+.in +4n
+.nf
+PATH=$HOME/bin:$PATH
+PATH=~/bin:/usr/bin
+.fi
+.in
+.PP
+will not work as you might expect. And neither will this work
+.PP
+.in +4n
+.nf
+A=1
+B=2
+C=$A $B
+.fi
+.in
+.PP
+There will not be any substitution for the defined variables in the
+last value. However, with most shells you can also try e.g.,:
+.PP
+ P=PATH=/a/b/c:$PATH
+ 33 22 1 2 3 eval $P && some commands
+.PP
+Several environment variables are set up automatically by the
+.IR cron (8)
+daemon.
+SHELL is set to /usr/bin/sh, and LOGNAME and HOME are set from the /etc/passwd
+line of the crontab's owner.
+HOME and SHELL may be overridden by settings in the crontab; LOGNAME may not.
+.PP
+(Another note: the LOGNAME variable is sometimes called USER on BSD systems...
+on these systems, USER will be set also.)
+.PP
+In addition to LOGNAME, HOME, and SHELL,
+.IR cron (8)
+will look at MAILTO if it has any reason to send mail as a result of running
+commands in ``this'' crontab. If MAILTO is defined (and non-empty), mail is
+sent to the user so named. If MAILTO is defined but empty (MAILTO=""), no
+mail will be sent. Otherwise mail is sent to the owner of the crontab. This
+option is useful if you decide on /usr/bin/mail instead of /usr/lib/sendmail as
+your mailer when you install cron -- /usr/bin/mail doesn't do aliasing, and UUCP
+usually doesn't read its mail.
+.PP
+The format of a cron command is very much the V7 standard, with a number of
+upward-compatible extensions. Each line has five time and date fields,
+followed by a command, followed by a newline character ('\en').
+The system crontab (/etc/crontab) uses 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. The maximum permitted length for the command field is
+998 characters.
+.PP
+Commands are executed by
+.IR cron (8)
+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).
+.IR cron (8)
+examines cron entries once every minute.
+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 0-31
+.br
+month 0-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 /usr/bin/sh or by the shell
+specified in the SHELL variable of the cronfile.
+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.
+.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, is the time when
+the
+.IR cron (8)
+daemon startup. In particular, it 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
+.nf
+
+# use /usr/bin/sh to run commands, no matter what /etc/passwd says
+SHELL=/usr/bin/sh
+# mail any output 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"
+0 */4 1 * mon echo "run every 4th hour on the 1st and on every Monday"
+0 0 */2 * sun echo "run at midn on every Sunday that's an uneven date"
+# Run on every second Saturday of the month
+0 4 8\-14 * * test $(date +\e%u) \-eq 6 && echo "2nd Saturday"
+# Same thing, efficient too:
+0 4 * * * Sat d=$(date +\%e) && test $d -ge 8 -a $d -le 14 && echo "2nd Saturday"
+#Execute early the next morning following the first
+#Thursday of each month
+57 2 * * 5 case $(date +\%d) in 0[2-8]) echo "After 1st Thursday"; esac
+.fi
+
+.PP
+All the above examples run non-interactive programs. If you wish to run a
+program that interacts with the user's desktop you have to make sure the proper
+environment variable
+.I DISPLAY
+is set.
+
+.\" Note: Based on some web searches, below example might not fully
+.\" work in all systems, as notify-send might require also
+.\" to have knowledge of the dbus session in use (through the environment)
+.\" However, adding that code here is an overkill
+.nf
+# Execute a program and run a notification every day at 10:00 am
+0 10 * * * $HOME/bin/program | DISPLAY=:0 notify-send "Program run" "$(cat)"
+.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
+
+# Example of job definition:
+# .---------------- minute (0 - 59)
+# | .------------- hour (0 - 23)
+# | | .---------- day of month (1 - 31)
+# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
+# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
+# | | | | |
+# 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
+
+Note that all the system-wide tasks will run, by default, from 6 am to 7 am. In
+the case of systems that are not powered on during that period of time, only
+the hourly tasks will be executed unless the defaults above are changed.
+
+.SH YET ANOTHER EXAMPLE
+
+In that example one can see that numbers can be prepended some 0, in order
+to line up columns.
+
+.nf
+17 * * * * root cd / && run-parts --report /etc/cron.hourly
+25 16 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
+47 06 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
+52 06 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
+.fi
+
+.SH SEE ALSO
+cron(8), crontab(1)
+.SH EXTENSIONS
+When specifying day of week, both day 0 and day 7 will be considered Sunday.
+BSD and AT&T seem to disagree about this.
+.PP
+Lists and ranges are allowed to co-exist in the same field. "1-3,7-9" would
+be rejected by AT&T or BSD cron -- they want to see "1-3" or "7,8,9" ONLY.
+.PP
+Ranges can include "steps", so "1-9/2" is the same as "1,3,5,7,9".
+.PP
+Names of monts or days of the week can be specified by name.
+.PP
+Environment variables can be set in the crontab. In BSD or AT&T, the
+environment handed to child processes is basically the one from /etc/rc.
+.PP
+Command output is mailed to the crontab owner (BSD can't do this), can be
+mailed to a person other than the crontab owner (SysV can't do this), or the
+feature can be turned off and no mail will be sent at all (SysV can't do this
+either).
+.PP
+All of the `@' commands that can appear in place of the first five fields
+are extensions.
+.SH LIMITATIONS
+The
+.I cron
+daemon 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. If one wants to specify a particular
+timezone for crontab tasks, one may check the date in the child script,
+for example:
+
+.nf
+ # m h dom mon dow command
+
+ TZ=UTC
+ 0 * * * * [ "$(date +\e%R)" = 00:00 ] && run_some_script
+.fi
+
+POSIX specifies that the day of month and the day of week fields both need to
+match the current time if either of them
+.I is
+a *. However, this implementation only checks if the
+.I first character
+is a *. This is why "0 0 */2 * sun" runs every Sunday that's an
+uneven date while the POSIX standard would have it run every Sunday and on
+every uneven date.
+
+The
+.I crontab
+syntax does not make it possible to define all possible periods one can
+imagine. For example, it is not straightforward to define the last
+weekday of a month.
+To have a task run in a time period that cannot be defined using
+.I crontab
+syntax, 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.
+
+If the program itself cannot do the checks then a wrapper script would be
+required. Useful tools that could be used for date analysis are
+.I ncal
+or
+.I calendar
+For example, to run a program the last Saturday of every month you could use
+the following wrapper code:
+
+.nf
+0 4 * * Sat [ "$(date +\e%e)" = "$(LANG=C ncal | sed \-n 's/^Sa .* \e([0\-9]\e+\e) *$/\e1/p')" ] && echo "Last Saturday" && program_to_run
+.fi
+
+.SH USING EVAL TO WRAP MISC ENVIRONMENT SETTINGS
+The following tip is kindly provided by 積丹尼 Dan Jacobson:
+.PP
+ CONTENT_TYPE="text/plain; charset=UTF-8"
+ d=eval LANG=zh_TW.UTF-8 w3m -dump
+ 26 22 16 1-12 * $d https://www.ptt.cc/bbs/transgender/index.html
+.PP
+ it won't work without the eval. Saying
+ d=LANG=zh_TW.UTF-8 w3m -dump
+ will get
+ /bin/sh: LANG=zh_TW.UTF-8: command not found
+
+.SH DIAGNOSTICS
+cron requires that each entry in a crontab end in a newline character. If the
+last entry in a crontab is missing a newline (i.e.\& terminated by EOF),
+cron will consider the crontab (at least partially) broken.
+A warning will be written to syslog.
+
+.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, Christian Kastner,
+Christian Pekeler, Georges Khaznadar.