1 CRONTAB(1) User Commands CRONTAB(1) 2 3 4 5 NAME 6 crontab - user crontab file 7 8 SYNOPSIS 9 /usr/bin/crontab [-u username] [filename] 10 11 12 /usr/bin/crontab { -e | -l | -r } [username] 13 14 15 /usr/bin/crontab -u username { -e | -l | -r } 16 17 18 /usr/xpg4/bin/crontab [filename] 19 20 21 /usr/xpg4/bin/crontab { -e | -l | -r } [username] 22 23 24 /usr/xpg4/bin/crontab -u username { -e | -l | -r } 25 26 27 /usr/xpg6/bin/crontab [filename] 28 29 30 /usr/xpg6/bin/crontab { -e | -l | -r } [username] 31 32 33 /usr/xpg6/bin/crontab -u username { -e | -l | -r } 34 35 36 DESCRIPTION 37 The crontab utility manages a user's access with cron (see cron(1M)) by 38 copying, creating, listing, and removing crontab files. If invoked 39 without options, crontab copies the specified file, or the standard 40 input if no file is specified, into a directory that holds all users' 41 crontabs. 42 43 44 If crontab is invoked with filename, this overwrites an existing 45 crontab entry for the user that invokes it, or for the user specified 46 with the -u option. 47 48 crontab Access Control 49 Users: Access to crontab is allowed: 50 51 o if the user's name appears in /etc/cron.d/cron.allow. 52 53 o if /etc/cron.d/cron.allow does not exist and the user's name 54 is not in /etc/cron.d/cron.deny. 55 56 57 Users: Access to crontab is denied: 58 59 o if /etc/cron.d/cron.allow exists and the user's name is not 60 in it. 61 62 o if /etc/cron.d/cron.allow does not exist and user's name is 63 in /etc/cron.d/cron.deny. 64 65 o if neither file exists, only a user with the 66 solaris.jobs.user authorization is allowed to submit a job. 67 68 o if Auditing is enabled, the user's shell is not audited and 69 the user is not the crontab owner. This can occur if the 70 user logs in by way of a program, such as some versions of 71 SSH, which does not set audit parameters. 72 73 74 The rules for allow and deny apply to root only if the allow/deny files 75 exist. 76 77 78 The allow/deny files consist of one user name per line. 79 80 crontab Entry Format 81 A crontab file consists of lines of six fields each. The fields are 82 separated by spaces or tabs. The first five are integer patterns that 83 specify the following: 84 85 minute (0-59), 86 hour (0-23), 87 day of the month (1-31), 88 month of the year (1-12), 89 day of the week (0-6 with 0=Sunday). 90 91 92 93 94 Each of these patterns can be either an asterisk (meaning all legal 95 values) or a list of elements separated by commas. An element is either 96 a number or two numbers separated by a hyphen (meaning an inclusive 97 range). 98 99 A range or asterisk can optionally be followed by a step value as 100 /<number>. For example, 2-59/3 can be used in the minutes field to 101 specify every three minutes starting at 2 past the hour, or */2 in the 102 hours field means every two hours. 103 104 Time specified here is interpreted in the currently active timezone. At 105 the top of the crontab file this is the timezone which is set system- 106 wide in /etc/default/init. A user can add a line such as: 107 108 TZ=timezone 109 110 111 112 113 ...and all subsequent entries will be interpreted using that timezone, 114 until a new TZ=timezone line is encountered. The specification of days 115 can be made by two fields (day of the month and day of the week). Both 116 are adhered to if specified as a list of elements. See EXAMPLES. 117 118 119 The sixth field of a line in a crontab file is a string that is 120 executed by the shell at the specified times. A percent character in 121 this field (unless escaped by \) is translated to a NEWLINE character. 122 123 124 Only the first line (up to a `%' or end of line) of the command field 125 is executed by the shell. Other lines are made available to the command 126 as standard input. Any blank line or line beginning with a `#' is a 127 comment and is ignored. 128 129 130 The shell is invoked from your $HOME directory. As with $TZ, both 131 $SHELL and $HOME can be set by having a line such as: 132 133 SHELL=/usr/bin/someshell 134 135 136 137 138 ...or: 139 140 HOME=somedirectory 141 142 143 144 145 ...which will take precedence for all the remaining entries in the 146 crontab or until there is another HOME or SHELL entry. It is invoked 147 with an arg0 of the basename of the $SHELL that is currently in effect. 148 A user who wants to have his .profile or equivalent file executed must 149 explicitly do so in the crontab file. cron supplies a default 150 environment for every shell, defining HOME, LOGNAME, SHELL, TZ, and 151 PATH. The default PATH for user cron jobs is /usr/bin; while root cron 152 jobs default to /usr/sbin:/usr/bin. The default PATH can be set in 153 /etc/default/cron (see cron(1M)). The TZ, HOME, and SHELL environment 154 variables are set to match those that are in effect in the crontab file 155 at the time. 156 157 158 If you do not redirect the standard output and standard error of your 159 commands, any generated output or errors are mailed to you. 160 161 crontab Environment Variables 162 The following variables are supported: 163 164 HOME 165 166 Allows the user to choose and alternative directory for cron to 167 change directory to prior to running the command. For example: 168 169 HOME=/var/tmp 170 171 172 173 174 SHELL 175 176 The name of the shell to use to run subsequent commands. For 177 example: 178 179 SHELL=/usr/bin/ksh 180 181 182 183 184 TZ 185 186 Allows the user to choose the timezone in which the cron entries 187 are run. This effects both the environment of the command that is 188 run and the timing of the entry. For example, to have your entries 189 run using the timezone for Iceland, use: 190 191 TZ=Iceland 192 193 194 195 196 197 Each of these variables affects all of the lines that follow it in the 198 crontab file, until it is reset by a subsequent line resetting that 199 variable. Hence, it is possible to have multiple timezones supported 200 within a single crontab file. 201 202 203 The lines that are not setting these environment variables are the 204 same as crontab entries that conform to the UNIX standard and are 205 described elsewhere in this man page. 206 207 Setting cron Jobs Across Timezones 208 The default timezone of the cron daemon sets the system-wide timezone 209 for cron entries. This, in turn, is by set by default system-wide using 210 /etc/default/init. 211 212 213 If some form of daylight savings or summer/winter time is in effect, 214 then jobs scheduled during the switchover period could be executed 215 once, twice, or not at all. 216 217 OPTIONS 218 The following options are supported: 219 220 -e 221 Edits a copy of the current user's crontab file, or creates an 222 empty file to edit if crontab does not exist. When editing is 223 complete, the file is installed as the user's crontab file. 224 225 The environment variable EDITOR determines which editor is 226 invoked with the -e option. All crontab jobs should be submitted 227 using crontab. Do not add jobs by just editing the crontab file, 228 because cron is not aware of changes made this way. 229 230 If all lines in the crontab file are deleted, the old crontab 231 file is restored. The correct way to delete all lines is to 232 remove the crontab file using the -r option. 233 234 If username is specified, the specified user's crontab file is 235 edited, rather than the current user's crontab file. This can 236 only be done by root or by a user with the solaris.jobs.admin 237 authorization. 238 239 240 -l 241 Lists the crontab file for the invoking user. Only root or a user 242 with the solaris.jobs.admin authorization can specify a username 243 following the -l option to list the crontab file of the specified 244 user. 245 246 247 -r 248 Removes a user's crontab from the crontab directory. Only root or 249 a user with the solaris.jobs.admin authorization can specify a 250 username following the -r option to remove the crontab file of 251 the specified user. 252 253 254 -u username 255 Specifies the name of the user whose crontab is to be replaced, 256 viewed or modified. This can only be done by root or by a user 257 with the solaris.jobs.admin authorization. 258 259 260 261 EXAMPLES 262 Example 1 Cleaning up Core Files 263 264 265 This example cleans up core files every weekday morning at 3:15 am: 266 267 268 15 3 * * 1-5 find $HOME -namecore 2>/dev/null | xargs rm -f 269 270 271 272 Example 2 Mailing a Birthday Greeting 273 274 275 This example mails a birthday greeting: 276 277 278 0 12 14 2 * mailx john%Happy Birthday!%Time for lunch. 279 280 281 282 Example 3 Specifying Days of the Month and Week 283 284 285 This example runs a command on the first and fifteenth of each month, 286 as well as on every Monday: 287 288 289 0 0 1,15 * 1 290 291 292 293 294 To specify days by only one field, the other field should be set to *. 295 For example: 296 297 298 0 0 * * 1 299 300 301 302 303 would run a command only on Mondays. 304 305 306 Example 4 Using step values: 307 308 309 This example runs a job every hour during the night and every 3 hours 310 during working hours. 311 312 313 0 8-18/3,19-7 * * * 314 315 316 317 and to run a job every 2 minutes, use: 318 319 320 */2 * * * * 321 322 323 324 Example 5 Using Environment Variables 325 326 327 The following entries take advantage of crontab support for certain 328 environment variables. 329 330 331 TZ=GMT 332 HOME=/local/home/user 333 SHELL=/usr/bin/ksh 334 0 0 * * * echo $(date) > midnight.GMT 335 TZ=PST 336 0 0 * * * echo $(date) > midnight.PST 337 TZ=EST 338 HOME=/local/home/myuser 339 SHELL=/bin/csh 340 341 342 343 344 The preceding entries allow two jobs to run. The first one would run at 345 midnight in the GMT timezone and the second would run at midnight in 346 the PST timezone. Both would be run in the directory /local/home/user 347 using the Korn shell. The file concludes with TZ, HOME, and SHELL 348 entries that return those variable to their default values. 349 350 351 ENVIRONMENT VARIABLES 352 See environ(5) for descriptions of the following environment variables 353 that affect the execution of crontab: LANG, LC_ALL, LC_CTYPE, 354 LC_MESSAGES, and NLSPATH. 355 356 /usr/bin/crontab 357 EDITOR 358 Determine the editor to be invoked when the -e option is 359 specified. This is overridden by the VISUAL environmental 360 variable. The default editor is vi(1). 361 362 363 PATH 364 The PATH in crontab's environment specifies the search path 365 used to find the editor. 366 367 368 VISUAL 369 Determine the visual editor to be invoked when the -e option 370 is specified. If VISUAL is not specified, then the 371 environment variable EDITOR is used. If that is not set, the 372 default is vi(1). 373 374 375 /usr/xpg4/bin/crontab 376 EDITOR 377 Determine the editor to be invoked when the -e option is 378 specified. The default editor is /usr/xpg4/bin/vi. 379 380 381 /usr/xpg6/bin/crontab 382 EDITOR 383 Determine the editor to be invoked when the -e option is 384 specified. The default editor is /usr/xpg6/bin/vi. 385 386 387 EXIT STATUS 388 The following exit values are returned: 389 390 0 391 Successful completion. 392 393 394 >0 395 An error occurred. 396 397 398 FILES 399 /etc/cron.d 400 main cron directory 401 402 403 /etc/cron.d/cron.allow 404 list of allowed users 405 406 407 /etc/default/cron 408 contains cron default settings 409 410 411 /etc/cron.d/cron.deny 412 list of denied users 413 414 415 /var/cron/log 416 accounting information 417 418 419 /var/spool/cron/crontabs 420 spool area for crontab 421 422 423 ATTRIBUTES 424 See attributes(5) for descriptions of the following attributes: 425 426 /usr/bin/crontab 427 428 +--------------------+-----------------+ 429 | ATTRIBUTE TYPE | ATTRIBUTE VALUE | 430 +--------------------+-----------------+ 431 |Interface Stability | Standard | 432 +--------------------+-----------------+ 433 434 /usr/xpg4/bin/crontab 435 436 +--------------------+-----------------+ 437 | ATTRIBUTE TYPE | ATTRIBUTE VALUE | 438 +--------------------+-----------------+ 439 |Interface Stability | Standard | 440 +--------------------+-----------------+ 441 442 /usr/xpg6/bin/crontab 443 444 +--------------------+-----------------+ 445 | ATTRIBUTE TYPE | ATTRIBUTE VALUE | 446 +--------------------+-----------------+ 447 |Interface Stability | Standard | 448 +--------------------+-----------------+ 449 450 SEE ALSO 451 atq(1), atrm(1), auths(1), ed(1), sh(1), vi(1), cron(1M), su(1M), 452 auth_attr(4), attributes(5), environ(5), standards(5) 453 454 NOTES 455 If you inadvertently enter the crontab command with no arguments, do 456 not attempt to get out with Control-d. This removes all entries in your 457 crontab file. Instead, exit with Control-c. 458 459 460 When updating cron, check first for existing crontab entries that can 461 be scheduled close to the time of the update. Such entries can be lost 462 if the update process completes after the scheduled event. This can 463 happen because, when cron is notified by crontab to update the internal 464 view of a user's crontab file, it first removes the user's existing 465 internal crontab and any internal scheduled events. Then it reads the 466 new crontab file and rebuilds the internal crontab and events. This 467 last step takes time, especially with a large crontab file, and can 468 complete after an existing crontab entry is scheduled to run if it is 469 scheduled too close to the update. To be safe, start a new job at least 470 60 seconds after the current date and time. 471 472 473 If an authorized user other than root modifies another user's crontab 474 file, the resulting behavior can be unpredictable. Instead, the 475 authorized user should first use su(1M) to become superuser to the 476 other user's login before making any changes to the crontab file. 477 478 479 Care should be taken when adding TZ, SHELL and HOME variables to the 480 crontab file when the crontab file could be shared with applications 481 that do not expect those variables to be changed from the default. 482 Resetting the values to their defaults at the bottom of the file will 483 minimize the risk of problems. 484 485 486 487 August 20, 2020 CRONTAB(1)