1 .\" 2 .\" Sun Microsystems, Inc. gratefully acknowledges The Open Group for 3 .\" permission to reproduce portions of its copyrighted documentation. 4 .\" Original documentation from The Open Group can be obtained online at 5 .\" http://www.opengroup.org/bookstore/. 6 .\" 7 .\" The Institute of Electrical and Electronics Engineers and The Open 8 .\" Group, have given us permission to reprint portions of their 9 .\" documentation. 10 .\" 11 .\" In the following statement, the phrase ``this text'' refers to portions 12 .\" of the system documentation. 13 .\" 14 .\" Portions of this text are reprinted and reproduced in electronic form 15 .\" in the SunOS Reference Manual, from IEEE Std 1003.1, 2004 Edition, 16 .\" Standard for Information Technology -- Portable Operating System 17 .\" Interface (POSIX), The Open Group Base Specifications Issue 6, 18 .\" Copyright (C) 2001-2004 by the Institute of Electrical and Electronics 19 .\" Engineers, Inc and The Open Group. In the event of any discrepancy 20 .\" between these versions and the original IEEE and The Open Group 21 .\" Standard, the original IEEE and The Open Group Standard is the referee 22 .\" document. The original Standard can be obtained online at 23 .\" http://www.opengroup.org/unix/online.html. 24 .\" 25 .\" This notice shall appear on any product containing this material. 26 .\" 27 .\" The contents of this file are subject to the terms of the 28 .\" Common Development and Distribution License (the "License"). 29 .\" You may not use this file except in compliance with the License. 30 .\" 31 .\" You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 32 .\" or http://www.opensolaris.org/os/licensing. 33 .\" See the License for the specific language governing permissions 34 .\" and limitations under the License. 35 .\" 36 .\" When distributing Covered Code, include this CDDL HEADER in each 37 .\" file and include the License file at usr/src/OPENSOLARIS.LICENSE. 38 .\" If applicable, add the following below this CDDL HEADER, with the 39 .\" fields enclosed by brackets "[]" replaced with your own identifying 40 .\" information: Portions Copyright [yyyy] [name of copyright owner] 41 .\" 42 .\" 43 .\" Copyright 1989 AT&T 44 .\" Portions Copyright (c) 1992, X/Open Company Limited All Rights Reserved 45 .\" Copyright (c) 2009, Sun Microsystems, Inc. All Rights Reserved 46 .\" Copyright 2020 OmniOS Community Edition (OmniOSce) Association. 47 .\" 48 .TH CRONTAB 1 "Aug 20, 2020" 49 .SH NAME 50 crontab \- user crontab file 51 .SH SYNOPSIS 52 .nf 53 \fB/usr/bin/crontab\fR [\fB-u\fR \fIusername\fR] [\fIfilename\fR] 54 .fi 55 56 .LP 57 .nf 58 \fB/usr/bin/crontab\fR \fB{ -e | -l | -r }\fR [\fIusername\fR] 59 .fi 60 61 .LP 62 .nf 63 \fB/usr/bin/crontab\fR \fB-u\fR \fIusername\fR \fB{ -e | -l | -r }\fR 64 .fi 65 66 .LP 67 .nf 68 \fB/usr/xpg4/bin/crontab\fR [\fIfilename\fR] 69 .fi 70 71 .LP 72 .nf 73 \fB/usr/xpg4/bin/crontab\fR \fB{ -e | -l | -r }\fR [\fIusername\fR] 74 .fi 75 76 .LP 77 .nf 78 \fB/usr/xpg4/bin/crontab\fR \fB-u\fR \fIusername\fR \fB{ -e | -l | -r }\fR 79 .fi 80 81 .LP 82 .nf 83 \fB/usr/xpg6/bin/crontab\fR [\fIfilename\fR] 84 .fi 85 86 .LP 87 .nf 88 \fB/usr/xpg6/bin/crontab\fR \fB{ -e | -l | -r }\fR [\fIusername\fR] 89 .fi 90 91 .LP 92 .nf 93 \fB/usr/xpg6/bin/crontab\fR \fB-u\fR \fIusername\fR \fB{ -e | -l | -r }\fR 94 .fi 95 96 .SH DESCRIPTION 97 The \fBcrontab\fR utility manages a user's access with \fBcron\fR (see 98 \fBcron\fR(1M)) by copying, creating, listing, and removing \fBcrontab\fR 99 files. If invoked without options, \fBcrontab\fR copies the specified file, or 100 the standard input if no file is specified, into a directory that holds all 101 users' crontabs. 102 .sp 103 .LP 104 If \fBcrontab\fR is invoked with \fIfilename\fR, this overwrites an existing 105 \fBcrontab\fR entry for the user that invokes it, or for the user specified 106 with the \fB-u\fR option. 107 .SS "\fBcrontab\fR Access Control" 108 Users: Access to \fBcrontab\fR is allowed: 109 .RS +4 110 .TP 111 .ie t \(bu 112 .el o 113 if the user's name appears in \fB/etc/cron.d/cron.allow\fR. 114 .RE 115 .RS +4 116 .TP 117 .ie t \(bu 118 .el o 119 if \fB/etc/cron.d/cron.allow\fR does not exist and the user's name is not in 120 \fB/etc/cron.d/cron.deny\fR. 121 .RE 122 .sp 123 .LP 124 Users: Access to \fBcrontab\fR is denied: 125 .RS +4 126 .TP 127 .ie t \(bu 128 .el o 129 if \fB/etc/cron.d/cron.allow\fR exists and the user's name is not in it. 130 .RE 131 .RS +4 132 .TP 133 .ie t \(bu 134 .el o 135 if \fB/etc/cron.d/cron.allow\fR does not exist and user's name is in 136 \fB/etc/cron.d/cron.deny\fR. 137 .RE 138 .RS +4 139 .TP 140 .ie t \(bu 141 .el o 142 if neither file exists, only a user with the \fBsolaris.jobs.user\fR 143 authorization is allowed to submit a job. 144 .RE 145 .RS +4 146 .TP 147 .ie t \(bu 148 .el o 149 if Auditing is enabled, the user's shell is not audited and the user is 150 not the \fBcrontab\fR owner. This can occur if the user logs in by way of a 151 program, such as some versions of \fBSSH\fR, which does not set audit 152 parameters. 153 .RE 154 .sp 155 .LP 156 The rules for \fBallow\fR and \fBdeny\fR apply to \fBroot\fR only if the 157 \fBallow\fR/\fBdeny\fR files exist. 158 .sp 159 .LP 160 The \fBallow\fR/\fBdeny\fR files consist of one user name per line. 161 .SS "\fBcrontab\fR Entry Format" 162 A \fBcrontab\fR file consists of lines of six fields each. The fields are 163 separated by spaces or tabs. The first five are integer patterns that specify 164 the following: 165 .sp 166 .in +2 167 .nf 168 minute (0\(mi59), 169 hour (0\(mi23), 170 day of the month (1\(mi31), 171 month of the year (1\(mi12), 172 day of the week (0\(mi6 with 0=Sunday). 173 .fi 174 .in -2 175 .sp 176 177 .sp 178 .LP 179 Each of these patterns can be either an asterisk (meaning all legal values) or 180 a list of elements separated by commas. An element is either a number or two 181 numbers separated by a hyphen (meaning an inclusive range). 182 .LP 183 A range or asterisk can optionally be followed by a step value as 184 \fI/<number>\fR. For example, \fI2\(mi59/3\fR can be used in the minutes field 185 to specify every three minutes starting at 2 past the hour, or \fI*/2\fR in 186 the hours field means every two hours. 187 .LP 188 Time specified here is interpreted in the currently active timezone. At the top 189 of the crontab file this is the timezone which is set system-wide in 190 /etc/default/init. A user can add a line such as: 191 .sp 192 .in +2 193 .nf 194 TZ=\fItimezone\fR 195 .fi 196 .in -2 197 .sp 198 199 .sp 200 .LP 201 \&...and all subsequent entries will be interpreted using that timezone, until 202 a new \fBTZ=\fR\fItimezone\fR line is encountered. The specification of days 203 can be made by two fields (day of the month and day of the week). Both are 204 adhered to if specified as a list of elements. See \fBEXAMPLES\fR. 205 .sp 206 .LP 207 The sixth field of a line in a \fBcrontab\fR file is a string that is executed 208 by the shell at the specified times. A percent character in this field (unless 209 escaped by \fB\e\fR\|) is translated to a \fINEWLINE\fR character. 210 .sp 211 .LP 212 Only the first line (up to a \fB`\|%\|'\fR or end of line) of the command field 213 is executed by the shell. Other lines are made available to the command as 214 standard input. Any blank line or line beginning with a \fB`\|#\|'\fR is a 215 comment and is ignored. 216 .sp 217 .LP 218 The shell is invoked from your $HOME directory. As with $TZ, both $SHELL and 219 $HOME can be set by having a line such as: 220 .sp 221 .in +2 222 .nf 223 SHELL=/usr/bin/\fIsomeshell\fR 224 .fi 225 .in -2 226 .sp 227 228 .sp 229 .LP 230 \&...or: 231 .sp 232 .in +2 233 .nf 234 HOME=\fIsomedirectory\fR 235 .fi 236 .in -2 237 .sp 238 239 .sp 240 .LP 241 \&...which will take precedence for all the remaining entries in the 242 \fBcrontab\fR or until there is another \fBHOME\fR or \fBSHELL\fR entry. It is 243 invoked with an \fBarg0\fR of the basename of the $SHELL that is currently in 244 effect. A user who wants to have his \fB\&.profile\fR or equivalent file 245 executed must explicitly do so in the \fBcrontab\fR file. \fBcron\fR supplies 246 a default environment for every shell, defining HOME, LOGNAME, SHELL, TZ, and 247 PATH. The default PATH for user \fBcron\fR jobs is \fB/usr/bin\fR; while root 248 \fBcron\fR jobs default to \fB/usr/sbin:/usr/bin\fR. The default PATH can be 249 set in \fB/etc/default/cron\fR (see \fBcron\fR(1M)). The TZ, HOME, and SHELL 250 environment variables are set to match those that are in effect in the 251 \fBcrontab\fR file at the time. 252 .sp 253 .LP 254 If you do not redirect the standard output and standard error of your commands, 255 any generated output or errors are mailed to you. 256 .SS "\fBcrontab\fR Environment Variables" 257 The following variables are supported: 258 .sp 259 .ne 2 260 .na 261 \fBHOME\fR 262 .ad 263 .sp .6 264 .RS 4n 265 Allows the user to choose and alternative directory for cron to change 266 directory to prior to running the command. For example: 267 .sp 268 .in +2 269 .nf 270 HOME=/var/tmp 271 .fi 272 .in -2 273 .sp 274 275 .RE 276 277 .sp 278 .ne 2 279 .na 280 \fBSHELL\fR 281 .ad 282 .sp .6 283 .RS 4n 284 The name of the shell to use to run subsequent commands. For example: 285 .sp 286 .in +2 287 .nf 288 SHELL=/usr/bin/ksh 289 .fi 290 .in -2 291 .sp 292 293 .RE 294 295 .sp 296 .ne 2 297 .na 298 \fBTZ\fR 299 .ad 300 .sp .6 301 .RS 4n 302 Allows the user to choose the timezone in which the \fBcron\fR entries are run. 303 This effects both the environment of the command that is run and the timing of 304 the entry. For example, to have your entries run using the timezone for 305 Iceland, use: 306 .sp 307 .in +2 308 .nf 309 TZ=Iceland 310 .fi 311 .in -2 312 .sp 313 314 .RE 315 316 .sp 317 .LP 318 Each of these variables affects all of the lines that follow it in the 319 \fBcrontab\fR file, until it is reset by a subsequent line resetting that 320 variable. Hence, it is possible to have multiple timezones supported within a 321 single \fBcrontab\fR file. 322 .sp 323 .LP 324 The lines that are not setting these environment variables are the same as 325 crontab entries that conform to the UNIX standard and are described elsewhere 326 in this man page. 327 .SS "Setting \fBcron\fR Jobs Across Timezones" 328 The default timezone of the \fBcron\fR daemon sets the system-wide timezone for 329 \fBcron\fR entries. This, in turn, is by set by default system-wide using 330 \fB/etc/default/init\fR. 331 .sp 332 .LP 333 If some form of \fBdaylight savings\fR or \fBsummer/winter time\fR is in 334 effect, then jobs scheduled during the switchover period could be executed 335 once, twice, or not at all. 336 .SH OPTIONS 337 The following options are supported: 338 .sp 339 .ne 2 340 .na 341 \fB-e\fR 342 .ad 343 .RS 6n 344 Edits a copy of the current user's \fBcrontab\fR file, or creates an empty file 345 to edit if \fBcrontab\fR does not exist. When editing is complete, the file is 346 installed as the user's \fBcrontab\fR file. 347 .sp 348 The environment variable \fBEDITOR\fR determines which editor is invoked with 349 the \fB-e\fR option. All \fBcrontab\fR jobs should be submitted using 350 \fBcrontab\fR. Do not add jobs by just editing the \fBcrontab\fR file, because 351 \fBcron\fR is not aware of changes made this way. 352 .sp 353 If all lines in the \fBcrontab\fR file are deleted, the old \fBcrontab\fR file 354 is restored. The correct way to delete all lines is to remove the \fBcrontab\fR 355 file using the \fB-r\fR option. 356 .sp 357 If \fIusername\fR is specified, the specified user's \fBcrontab\fR file is 358 edited, rather than the current user's \fBcrontab\fR file. This can only be 359 done by root or by a user with the \fBsolaris.jobs.admin\fR authorization. 360 .RE 361 362 .sp 363 .ne 2 364 .na 365 \fB-l\fR 366 .ad 367 .RS 6n 368 Lists the \fBcrontab\fR file for the invoking user. Only root or a user with 369 the \fBsolaris.jobs.admin\fR authorization can specify a username following the 370 \fB-l\fR option to list the \fBcrontab\fR file of the specified user. 371 .RE 372 373 .sp 374 .ne 2 375 .na 376 \fB-r\fR 377 .ad 378 .RS 6n 379 Removes a user's \fBcrontab\fR from the \fBcrontab\fR directory. Only root or a 380 user with the \fBsolaris.jobs.admin\fR authorization can specify a username 381 following the \fB-r\fR option to remove the \fBcrontab\fR file of the specified 382 user. 383 .RE 384 385 .sp 386 .ne 2 387 .na 388 \fB-u\fR \fIusername\fR 389 .ad 390 .RS 6n 391 Specifies the name of the user whose \fBcrontab\fR is to be replaced, viewed or 392 modified. This can only be done by root or by a user with the 393 \fBsolaris.jobs.admin\fR authorization. 394 395 .RE 396 397 .SH EXAMPLES 398 \fBExample 1 \fRCleaning up Core Files 399 .sp 400 .LP 401 This example cleans up \fBcore\fR files every weekday morning at 3:15 am: 402 403 .sp 404 .in +2 405 .nf 406 \fB15 3 * * 1-5 find $HOME\fR \fB-name\fR\fBcore 2>/dev/null | xargs rm\fR \fB-f\fR 407 .fi 408 .in -2 409 .sp 410 411 .LP 412 \fBExample 2 \fRMailing a Birthday Greeting 413 .sp 414 .LP 415 This example mails a birthday greeting: 416 417 .sp 418 .in +2 419 .nf 420 \fB0 12 14 2 * mailx john%Happy Birthday!%Time for lunch.\fR 421 .fi 422 .in -2 423 .sp 424 425 .LP 426 \fBExample 3 \fRSpecifying Days of the Month and Week 427 .sp 428 .LP 429 This example runs a command on the first and fifteenth of each month, as well 430 as on every Monday: 431 432 .sp 433 .in +2 434 .nf 435 \fB0 0 1,15 * 1\fR 436 .fi 437 .in -2 438 .sp 439 440 .sp 441 .LP 442 To specify days by only one field, the other field should be set to *. For 443 example: 444 445 .sp 446 .in +2 447 .nf 448 \fB0 0 * * 1\fR 449 .fi 450 .in -2 451 .sp 452 453 .sp 454 .LP 455 would run a command only on Mondays. 456 457 .LP 458 \fBExample 4 \fRUsing step values: 459 .sp 460 .LP 461 This example runs a job every hour during the night and every 3 hours during 462 working hours. 463 464 .sp 465 .in +2 466 .nf 467 \fB0 8-18/3,19-7 * * *\fR 468 .fi 469 .in -2 470 .sp 471 472 .LP 473 and to run a job every 2 minutes, use: 474 475 .sp 476 .in +2 477 .nf 478 \fB*/2 * * * *\fR 479 .fi 480 .in -2 481 .sp 482 483 .LP 484 \fBExample 5 \fRUsing Environment Variables 485 .sp 486 .LP 487 The following entries take advantage of \fBcrontab\fR support for certain 488 environment variables. 489 490 .sp 491 .in +2 492 .nf 493 TZ=GMT 494 HOME=/local/home/user 495 SHELL=/usr/bin/ksh 496 0 0 * * * echo $(date) > midnight.GMT 497 TZ=PST 498 0 0 * * * echo $(date) > midnight.PST 499 TZ=EST 500 HOME=/local/home/myuser 501 SHELL=/bin/csh 502 .fi 503 .in -2 504 .sp 505 506 .sp 507 .LP 508 The preceding entries allow two jobs to run. The first one would run at 509 midnight in the GMT timezone and the second would run at midnight in the PST 510 timezone. Both would be run in the directory \fB/local/home/user\fR using the 511 Korn shell. The file concludes with \fBTZ\fR, \fBHOME\fR, and \fBSHELL\fR 512 entries that return those variable to their default values. 513 514 .SH ENVIRONMENT VARIABLES 515 See \fBenviron\fR(5) for descriptions of the following environment variables 516 that affect the execution of \fBcrontab\fR: \fBLANG\fR, \fBLC_ALL\fR, 517 \fBLC_CTYPE\fR, \fBLC_MESSAGES\fR, and \fBNLSPATH\fR. 518 .SS "\fB/usr/bin/crontab\fR" 519 .ne 2 520 .na 521 \fBEDITOR\fR 522 .ad 523 .RS 10n 524 Determine the editor to be invoked when the \fB-e\fR option is specified. This 525 is overridden by the \fBVISUAL\fR environmental variable. The default editor is 526 \fBvi\fR(1). 527 .RE 528 529 .sp 530 .ne 2 531 .na 532 \fBPATH\fR 533 .ad 534 .RS 10n 535 The \fBPATH\fR in \fBcrontab\fR's environment specifies the search path used to 536 find the editor. 537 .RE 538 539 .sp 540 .ne 2 541 .na 542 \fBVISUAL\fR 543 .ad 544 .RS 10n 545 Determine the visual editor to be invoked when the \fB-e\fR option is 546 specified. If \fBVISUAL\fR is not specified, then the environment variable 547 \fBEDITOR\fR is used. If that is not set, the default is \fBvi\fR(1). 548 .RE 549 550 .SS "\fB/usr/xpg4/bin/crontab\fR" 551 .ne 2 552 .na 553 \fBEDITOR\fR 554 .ad 555 .RS 10n 556 Determine the editor to be invoked when the \fB-e\fR option is specified. The 557 default editor is \fB/usr/xpg4/bin/vi\fR. 558 .RE 559 560 .SS "\fB/usr/xpg6/bin/crontab\fR" 561 .ne 2 562 .na 563 \fBEDITOR\fR 564 .ad 565 .RS 10n 566 Determine the editor to be invoked when the \fB-e\fR option is specified. The 567 default editor is \fB/usr/xpg6/bin/vi\fR. 568 .RE 569 570 .SH EXIT STATUS 571 The following exit values are returned: 572 .sp 573 .ne 2 574 .na 575 \fB0\fR 576 .ad 577 .RS 6n 578 Successful completion. 579 .RE 580 581 .sp 582 .ne 2 583 .na 584 \fB>0\fR 585 .ad 586 .RS 6n 587 An error occurred. 588 .RE 589 590 .SH FILES 591 .ne 2 592 .na 593 \fB/etc/cron.d\fR 594 .ad 595 .RS 28n 596 main cron directory 597 .RE 598 599 .sp 600 .ne 2 601 .na 602 \fB/etc/cron.d/cron.allow\fR 603 .ad 604 .RS 28n 605 list of allowed users 606 .RE 607 608 .sp 609 .ne 2 610 .na 611 \fB/etc/default/cron\fR 612 .ad 613 .RS 28n 614 contains cron default settings 615 .RE 616 617 .sp 618 .ne 2 619 .na 620 \fB/etc/cron.d/cron.deny\fR 621 .ad 622 .RS 28n 623 list of denied users 624 .RE 625 626 .sp 627 .ne 2 628 .na 629 \fB/var/cron/log\fR 630 .ad 631 .RS 28n 632 accounting information 633 .RE 634 635 .sp 636 .ne 2 637 .na 638 \fB/var/spool/cron/crontabs\fR 639 .ad 640 .RS 28n 641 spool area for \fBcrontab\fR 642 .RE 643 644 .SH ATTRIBUTES 645 See \fBattributes\fR(5) for descriptions of the following attributes: 646 .SS "\fB/usr/bin/crontab\fR" 647 648 .TS 649 box; 650 c | c 651 l | l . 652 ATTRIBUTE TYPE ATTRIBUTE VALUE 653 _ 654 Interface Stability Standard 655 .TE 656 657 .SS "\fB/usr/xpg4/bin/crontab\fR" 658 659 .TS 660 box; 661 c | c 662 l | l . 663 ATTRIBUTE TYPE ATTRIBUTE VALUE 664 _ 665 Interface Stability Standard 666 .TE 667 668 .SS "\fB/usr/xpg6/bin/crontab\fR" 669 670 .TS 671 box; 672 c | c 673 l | l . 674 ATTRIBUTE TYPE ATTRIBUTE VALUE 675 _ 676 Interface Stability Standard 677 .TE 678 679 .SH SEE ALSO 680 \fBatq\fR(1), \fBatrm\fR(1), \fBauths\fR(1), \fBed\fR(1), \fBsh\fR(1), 681 \fBvi\fR(1), \fBcron\fR(1M), \fBsu\fR(1M), \fBauth_attr\fR(4), 682 \fBattributes\fR(5), \fBenviron\fR(5), \fBstandards\fR(5) 683 .SH NOTES 684 If you inadvertently enter the \fBcrontab\fR command with no arguments, do not 685 attempt to get out with Control-d. This removes all entries in your 686 \fBcrontab\fR file. Instead, exit with Control-c. 687 .sp 688 .LP 689 When updating \fBcron\fR, check first for existing \fBcrontab\fR entries that 690 can be scheduled close to the time of the update. Such entries can be lost if 691 the update process completes after the scheduled event. This can happen 692 because, when \fBcron\fR is notified by \fBcrontab\fR to update the internal 693 view of a user's \fBcrontab\fR file, it first removes the user's existing 694 internal \fBcrontab\fR and any internal scheduled events. Then it reads the new 695 \fBcrontab\fR file and rebuilds the internal \fBcrontab\fR and events. This 696 last step takes time, especially with a large \fBcrontab\fR file, and can 697 complete \fBafter\fR an existing \fBcrontab\fR entry is scheduled to run if it 698 is scheduled too close to the update. To be safe, start a new job at least 60 699 seconds after the current date and time. 700 .sp 701 .LP 702 If an authorized user other than root modifies another user's \fBcrontab\fR 703 file, the resulting behavior can be unpredictable. Instead, the authorized user 704 should first use \fBsu\fR(1M) to become superuser to the other user's login 705 before making any changes to the \fBcrontab\fR file. 706 .sp 707 .LP 708 Care should be taken when adding \fBTZ\fR, \fBSHELL\fR and \fBHOME\fR variables 709 to the \fBcrontab\fR file when the \fBcrontab\fR file could be shared with 710 applications that do not expect those variables to be changed from the default. 711 Resetting the values to their defaults at the bottom of the file will minimize 712 the risk of problems.