Run Commands at Specified Times Usage: cron [-asLwW!h-] [-o<opt>] [-d <dir>] [ crontab1 crontab2 ... ] | -install [-N <name>] [-D <dispname>] [-u <user>] [-p <password>] [-H <directory] [-MI] <arguments> | -start [-N <name>] [-D <dispname>] <arguments> | -stop [-N <name>] [-D <dispname>] | -pause [-N <name>] [-D <dispname>] | -continue [-N <name>] [-D <dispname>] | -delete [-N <name>] [-D <dispname>] | -status [-N <name>] [-D <dispname>] cron executes commands at times according to the crontab (.crt) files specifed. If any path specified is a directory, cron will run any crontab files in that directory or any subdirectory. If no files are specified, cron will read the crontab from stdin. Each file is expected to contain a list of activities to be run at certain times, specified one per line. There are six fields per line, separated by white space. The first five specify: minute (0-59) hour (0-23) day of the month (1-31) month of the year (1-12) day of the week (0-6, 0 is Sunday) Each of these fields may be an asterisk (meaning all legal values) or a comma-separated list of elements, where each element is either a single number or a range, given as two numbers separated by a minus. If either end of a range is omitted, it defaults to the highest/lowest legal value, as appropriate. If the days are specified in both day of the month and day of the week fields, the union of those fields is used; to specify the days by only one field, the other should be an asterisk. For example, 0 0 1 * 1 means run the command at midnight on the first of every month and also on every Monday. The sixth field of each line is a command that is to be executed by the shell at the specified times. Any percent characters in this field (unless escaped by the escape character) are translated to carriage return/newline combinations. Only the first line (up to the first % or end of line) is passed as a command; the other lines are written to the shell as stdin. If no input lines are given, the shell will inherit stdin opened to the nul device. Blank lines and any lines beginning with # will be considered as comments. If the crontab was read from a file, the shell will inherit stdout and stderr handles for writing (appending, if the file already exists) to a file created by replacing the .crt extension on the crontab file with .nnn, where nnn is the linenumber in the .crt file. (If the crontab was read from stdin, then the shell will inherit the stdout and stderr that cron inherited when it started.) If a syntax or other error is encountered in a crontab, that line, but not the rest of the file will be ignored. The rationale is that cron should continue running even if it encounters problems; it should not be necessary to restart it just because one entry in one crontab contained an error. By default, if the crontab is read from a file, commands will be run asynchronously, meaning that all entries that are ready to run at any given time will be quickly spawned, one right after another, without waiting for each to complete before the next is spawned. If the crontab is read from stdin, the default will be synchronous execution, meaning each must complete before the next starts; that's so any output from one won't be jumbled with that of another. These defaults can be overridden with command-line options. Once it's started, cron will make an initial scan of the crontab files or directories. Once every minute after that it will look for any changes by comparing timestamps on the files. Running Cron as a Service: Under Windows NT, there are two ways to run cron. The simplest is as an ordinary process. But cron can also be run as a service, which means it can run even under a different ID than the person currently logged in or even when no one is logged in. When run as a service, cron can be set up to start up automatically when Windows NT is booted or for manual startup using the Services applet in the Control Panel. Finally, as service, cron can be either interactive, meaning it and its children get access to the console, or non-interactive, meaning it and its children will run invisibly, with no display output and no means for input through the keyboard or mouse. Any error messages will be appended to a cron.log file in the home directory since messages written to the screen would be lost. The choice of running cron as either an interactive or non- interactive service is this: if you run it interactively, then there may be a security hole since windows will appear and your users may be able to interact with the applications cron invokes in ways you didn't intend. Also, the user might be annoyed to see windows popping up and going away for all those activities scheduled with cron. On the other hand, if you run cron non-interactively, then you may not be able to use it to schedule everything you need. For example, if you start notepad from a non- interactive copy of cron, notepad will hang because it simply can't run properly without access to the console. Also, you won't be able to kill the notepad process without rebooting due to the way the security mechanism works. An alternative to deciding between these differing ways of running cron is to run several copies instead. Each can be set up with its own startup and interactive/non-interactive characteristics. But each copy must have a unique service and display name. Service Options: -install Install cron as a service. The following options may be specified with -install: -u <user> Run cron under the specified user name. The user name should be in the form DomainName\Username or, if the account is in the current domain, as .\Username. The default is to run under the LocalSystem ID. To be able to start a service under a user ID, that user must have the right to log on as a service. To grant that right, use the User Manager. Pull down Policies, select User Rights and in the popup, check Show Advanced User Rights. You can then select "Log on as a service" and grant that right to selected groups or users. -p <password> Login password for the specified user name. -H <directory> Home directory that the cron service should start up in. Default is the current directory at the time the install was done. -M Manual startup. Default is to startup automatically when Windows NT is booted. -I Interactive. Default is non- interactive. A service can not be installed as interactive if the -u option is specified. <arguments> Any run-time arguments to be passed to cron when it starts. Note that any options being set up for the service MUST follow any -install options. The first option that's not an -install option is assumed to be a run-time option. No syntax or other checks are made during installation that the run-time arguments are sensible. If no arguments are given with either -install or -start, cron will look for crontab (.crt) files in the home directory. -start <arguments> Start the previously installed cron service, passing it whatever arguments may be desired. If the -install operation also specified an argument list, this argument list will override it. -stop Stop the cron service. -pause Pause the cron service. -continue Allow cron to continue execution after having been paused. -delete Delete (uninstall) the cron service. -status Report the status of the cron service. All the service options above accept the following additional options for specifying the name of the service: -N <name> Service name for naming the entry in the Registry. -D <dispname> Display name for use in the Services applet. Under NT, each service has two names: one is the service name, which is the name under which all the information about that service is stored in the registry. The second is the display name, which is the more human-readable name shown in the Services applet in the Control Panel. By default, the service name for cron is "Hamilton_Cron" and the display name is "Hamilton Cron Service". When installing a service, both the service name and the display name must be unique; that is, there can't be any other services already installed with that service name or with that display name. Once installed, either name may be used to refer to the service. General Options: -a Asynchronous execution. Don't wait for one command to complete before spawning the next, even if the crontab was read from stdin. -s Synchronous execution. Always wait for one command to complete before spawning the next, even if the crontab was read from a file. -L Logging. As each command is spawned, timestamp and log it to stdout and to the output file if that's not the same as stdout. -w Wait until the next whole minute. If cron wasn't started near a whole minute (i.e., zero to three seconds past a whole minute mark), wait until the next whole minute before beginning to schedule cron events. -o<opt> Remainder of word contains options to be passed to the C shell with any commands. E.g., -oF means C shell should do fast startup when running commands. -d <dir> Output files should be created in the specified directory, not the directory where the .crt files were found. -! Install a interrupt handler to shield cron and its children from Ctrl-C and Ctrl-Break interrupts. (Remember to type this option at the end of the list so the space afterward will prevent it from being confused as a history reference.) -W Open a new console window rather than using the current one. Only meaningful for cron run as an ordinary process, but useful if the -! option is specified. -h Help. (This screen.) -- End of options. |