1 '\" te
   2 .\" Copyright (c) 2007 Sun Microsystems, Inc. All Rights Reserved.
   3 .\" The contents of this file are subject to the terms of the Common Development and Distribution License (the "License").  You may not use this file except in compliance with the License.
   4 .\" You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE or http://www.opensolaris.org/os/licensing.  See the License for the specific language governing permissions and limitations under the License.
   5 .\" When distributing Covered Code, include this CDDL HEADER in each file and include the License file at usr/src/OPENSOLARIS.LICENSE.  If applicable, add the following below this CDDL HEADER, with the fields enclosed by brackets "[]" replaced with your own identifying information: Portions Copyright [yyyy] [name of copyright owner]
   6 .TH LOGADM 1M "May 23, 2007"
   7 .SH NAME
   8 logadm \- manage endlessly growing log files
   9 .SH SYNOPSIS
  10 .LP
  11 .nf
  12 \fBlogadm\fR
  13 .fi
  14 
  15 .LP
  16 .nf
  17 \fBlogadm\fR [\fB-\fIoptions\fR\fR] \fIlogname\fR...
  18 .fi
  19 
  20 .SH DESCRIPTION
  21 .sp
  22 .LP
  23 \fBlogadm\fR is a general log rotation tool that is suitable for running from
  24 \fBcron\fR(1M).
  25 .sp
  26 .LP
  27 Without arguments, \fBlogadm\fR reads the \fB/etc/logadm.conf\fR file, and for
  28 every entry found in that file checks the corresponding log file to see if it
  29 should be rotated. Typically this check is done each morning by an entry in the
  30 root's \fBcrontab\fR.
  31 .sp
  32 .LP
  33 If the \fIlogname\fR argument is specified, \fBlogadm\fR renames the
  34 corresponding log file by adding a suffix so that the most recent log file ends
  35 with \fB\&.0\fR (that is, \fIlogfile\fR\fB\&.0\fR), the next most recent ends
  36 with \fB\&.1\fR (that is, \fIlogfile\fR\fB\&.1\fR), and so forth. By default,
  37 ten versions of old log files are kept (that is, \fIlogfile\fR\fB\&.0\fR
  38 through \fIlogfile\fR\fB\&.9\fR). At the point when what would be the eleventh
  39 file is logged, \fBlogadm\fR automatically deletes the oldest version to keep
  40 the count of files at ten.
  41 .sp
  42 .LP
  43 \fBlogadm\fR takes a number of \fIoptions\fR. You can specify these options on
  44 the command line or in the \fB/etc/logadm.conf\fR file. The \fBlogadm\fR
  45 command searches \fB/etc/logadm.conf\fR for lines of the form \fIlogname\fR
  46 \fIoptions\fR
  47 .sp
  48 .ne 2
  49 .na
  50 \fB\fIlogname\fR\fR
  51 .ad
  52 .sp .6
  53 .RS 4n
  54 Identifies an entry in \fB/etc/logadm.conf\fR. This can be a name or the
  55 pathname of the log file. If you specify a log file, rather than a name, for
  56 this field, it must be a fully qualified pathname.
  57 .RE
  58 
  59 .sp
  60 .ne 2
  61 .na
  62 \fB\fIoptions\fR\fR
  63 .ad
  64 .sp .6
  65 .RS 4n
  66 Identifies command line options exactly as they would be entered on the command
  67 line. This allows commonly used log rotation policies to be stored in the
  68 \fB/etc/logadm.conf\fR file. See \fBEXAMPLES\fR.
  69 .sp
  70 If \fIoptions\fR are specified both in \fB/etc/logadm.conf\fR and on the
  71 command line, those in the \fB/etc/logadm.conf\fR file are applied first.
  72 Therefore, the command line options override those in \fB/etc/logadm.conf\fR.
  73 .sp
  74 Log file names specified in \fB/etc/logadm.conf\fR may contain filename
  75 substitution characters such as \fB*\fR and \fB?\fR, that are supported by
  76 \fBcsh\fR(1).
  77 .RE
  78 
  79 .sp
  80 .LP
  81 Two options control when a log file is rotated. They are: \fB-s\fR size
  82 \fB-p\fR period.
  83 .sp
  84 .LP
  85 When using more than one of these options at a time, there is an implied
  86 \fBand\fR between them. This means that all conditions must be met before the
  87 log is rotated.
  88 .sp
  89 .LP
  90 If neither of these two options are specified, the default conditions for
  91 rotating a log file are: \fB\fR\fB-s\fR \fB1b\fR \fB-p\fR \fB1w\fR, which means
  92 the log file is only rotated if the size is non-zero and if at least 1 week has
  93 passed since the last time it was rotated.
  94 .sp
  95 .LP
  96 By specifying \fB\fR\fB-p\fR \fBnever\fR as a rotation condition, any other
  97 rotation conditions are ignored and \fBlogadm\fR moves on to the expiration of
  98 old log files. By specifying \fB\fR\fB-p\fR \fBnow\fR as a rotation condition,
  99 a log rotation is forced.
 100 .sp
 101 .LP
 102 Unless specified by the \fB-o\fR, \fB-g\fR, or \fB-m\fR options, \fBlogadm\fR
 103 replaces the log file (after renaming it) by creating an empty file whose
 104 owner, group ID, and permissions match the original file.
 105 .sp
 106 .LP
 107 Three options control when old log files are expired: \fB-A\fR age \fB-C\fR
 108 count \fB-S\fR size. These options expire the oldest log files until a
 109 particular condition or conditions are met. For example, the combination
 110 \fB\fR\fB-C\fR \fB5\fR and the \fB\fR\fB-S\fR \fB10m\fR options expires old log
 111 files until there are no more than 5 of the \fBand\fR their combined disk usage
 112 is no more than 10 megabytes. If none of these options are specified, the
 113 default expiration is \fB\fR\fB-C\fR \fB10\fR which keeps ten old log files. If
 114 no files are to be expired, use \fB\fR\fB-C\fR \fB0\fR to prevent expiration by
 115 default.
 116 .SH OPTIONS
 117 .sp
 118 .LP
 119 The following options are supported:
 120 .sp
 121 .ne 2
 122 .na
 123 \fB\fB-a\fR \fIpost_command\fR\fR
 124 .ad
 125 .sp .6
 126 .RS 4n
 127 Execute the \fIpost_command\fR after renaming the log file. \fIpost_command\fR
 128 is passed to \fBsh\fR \fB-c\fR.
 129 .sp
 130 Specify \fIpost_command\fR as a valid shell command. Use quotes to protect
 131 spaces or shell metacharacters in \fIpost_command\fR.
 132 .sp
 133 This option can be used to restart a daemon that is writing to the file. When
 134 rotating multiple logs with one \fBlogadm\fR command, \fIpost_command\fR is
 135 executed only once after all the logs are rotated, not once per rotated log.
 136 .RE
 137 
 138 .sp
 139 .ne 2
 140 .na
 141 \fB\fB-A\fR \fIage\fR\fR
 142 .ad
 143 .sp .6
 144 .RS 4n
 145 Delete any versions that have not been modified for the amount of time
 146 specified by \fIage\fR.
 147 .sp
 148 Specify \fIage\fR as a number followed by an \fBh\fR (hours), \fBd\fR (days),
 149 \fBw\fR(weeks), \fBm\fR (months), or \fBy\fR (years).
 150 .RE
 151 
 152 .sp
 153 .ne 2
 154 .na
 155 \fB\fB-b\fR \fIpre_command\fR\fR
 156 .ad
 157 .sp .6
 158 .RS 4n
 159 Execute \fIpre_command\fR before renaming the log file. \fIpre_command\fR is
 160 passed to \fBsh\fR \fB-c\fR.
 161 .sp
 162 Specify \fIpre_command\fR as a valid shell command. Use quotes to protect
 163 spaces or shell metacharacters in the \fIpre_command\fR.
 164 .sp
 165 This option can be used to stop a daemon that is writing to the file. When
 166 rotating multiple logs with one \fBlogadm\fR command, \fIpre_command\fR is
 167 executed only once before all the logs are rotated, not once per rotated log.
 168 .RE
 169 
 170 .sp
 171 .ne 2
 172 .na
 173 \fB\fB-c\fR\fR
 174 .ad
 175 .sp .6
 176 .RS 4n
 177 Rotate the log file by copying it and truncating the original logfile to zero
 178 length, rather than renaming the file.
 179 .RE
 180 
 181 .sp
 182 .ne 2
 183 .na
 184 \fB\fB-C\fR \fIcount\fR\fR
 185 .ad
 186 .sp .6
 187 .RS 4n
 188 Delete the oldest versions until there are not more than \fIcount\fR files
 189 left.
 190 .sp
 191 If no expire options (\fB-A\fR, \fB-C\fR, or \fB-S\fR) are specified,
 192 \fB\fR\fB-C\fR \fB10\fR is the default. To prevent the default expire rule from
 193 being added automatically, specify \fB\fR\fB-C\fR \fB0\fR .
 194 .RE
 195 
 196 .sp
 197 .ne 2
 198 .na
 199 \fB\fB-e\fR \fImail_addr\fR\fR
 200 .ad
 201 .sp .6
 202 .RS 4n
 203 Send error messages by email to \fImail_addr\fR.
 204 .sp
 205 As \fBlogadm\fR is typically run from \fBcron\fR(1M), error messages are
 206 captured by \fBcron\fR and mailed to the owner of the \fBcrontab\fR.
 207 .sp
 208 This option is useful if you want the mail regarding error messages to go to
 209 another address instead. If no errors are encountered, no mail message is
 210 generated.
 211 .RE
 212 
 213 .sp
 214 .ne 2
 215 .na
 216 \fB\fB-E\fR \fIcmd\fR\fR
 217 .ad
 218 .sp .6
 219 .RS 4n
 220 Execute \fIcmd\fR to expire the file, rather than deleting the old log file to
 221 expire it.
 222 .sp
 223 \fIcmd\fR is passed it to \fBsh\fR \fB-c\fR. The file is considered expired
 224 after \fIcmd\fR completes. If the old log file is not removed or renamed by the
 225 \fIcmd\fR, \fBlogadm\fR considers it for expiration the next time that it runs
 226 on the specified log file. If present, the keyword \fB$file\fR is expanded in
 227 the specified \fIcmd\fRto the name of the file being expired.
 228 .sp
 229 This option is useful for tasks such as mailing old log files to
 230 administrators, or copying old log files to long term storage.
 231 .RE
 232 
 233 .sp
 234 .ne 2
 235 .na
 236 \fB\fB-f\fR \fIconf_file\fR\fR
 237 .ad
 238 .sp .6
 239 .RS 4n
 240 Use \fIconf_file\fR instead of \fB/etc/logadm.conf\fR.
 241 .sp
 242 This option allows non-root users to keep their own \fBlogadm\fR configuration
 243 files.
 244 .RE
 245 
 246 .sp
 247 .ne 2
 248 .na
 249 \fB\fB-g\fR \fIgroup\fR\fR
 250 .ad
 251 .sp .6
 252 .RS 4n
 253 Create a new empty file with the \fBID\fR specified by \fIgroup\fR, instead of
 254 preserving the group \fBID\fR of the log file.
 255 .sp
 256 Specify \fIgroup\fR by name or by numeric group \fBID\fR, as accepted by
 257 \fBchgrp\fR(1).
 258 .sp
 259 This option requires the ability to change file group ownership using the
 260 \fBchgrp\fR(1) command.
 261 .RE
 262 
 263 .sp
 264 .ne 2
 265 .na
 266 \fB\fB-h\fR\fR
 267 .ad
 268 .sp .6
 269 .RS 4n
 270 Print a help message that describes \fBlogadm\fR's options.
 271 .RE
 272 
 273 .sp
 274 .ne 2
 275 .na
 276 \fB\fB-l\fR\fR
 277 .ad
 278 .sp .6
 279 .RS 4n
 280 Use local time rather than the Coordinated Universal Time (UTC) when naming
 281 rotated log files (see the discussion of percent sequences in the templates
 282 supplied with the \fB-t\fR option).
 283 .RE
 284 
 285 .sp
 286 .ne 2
 287 .na
 288 \fB\fB-m\fR \fImode\fR\fR
 289 .ad
 290 .sp .6
 291 .RS 4n
 292 Create a new empty file with the mode specified by \fImode\fR, instead of
 293 preserving the mode of the log file.
 294 .sp
 295 Specify \fImode\fR in any form that is accepted by the \fBchmod\fR(1) command.
 296 .RE
 297 
 298 .sp
 299 .ne 2
 300 .na
 301 \fB\fB-M\fR \fIcmd\fR\fR
 302 .ad
 303 .sp .6
 304 .RS 4n
 305 Use \fIcmd\fR to rename the log file. If the keyword \fB$file\fR is specified,
 306 it is expanded to the name of the log file. Similarly, the keyword \fB$nfile\fR
 307 is expanded to the new name of the log file. The \fB$nfile\fR keyword is only
 308 available with commands provided with the \fB-M\fR option. After the command
 309 completes, the log file is replaced by the rotate file. The default \fIcmd\fR
 310 is "\fB/bin/mv\fR \fB$file\fR\fB\fR\fB$nfile\fR".
 311 .RE
 312 
 313 .sp
 314 .ne 2
 315 .na
 316 \fB\fB-n\fR \fI\fR\fR
 317 .ad
 318 .sp .6
 319 .RS 4n
 320 Print the actions that the \fBlogadm\fR command will perform without actually
 321 performing them.
 322 .sp
 323 This option is useful for checking arguments before making any changes to the
 324 system.
 325 .sp
 326 It is important to remember, however, that since log rotating actions are only
 327 printed with this option, \fBlogadm\fR might not find files that need expiring,
 328 but if run without the \fB-n\fR \fBlogadm\fR might create a file that needs
 329 expiring by performing the log rotating actions. Therefore, if you see no files
 330 being expired with the \fB-n\fR option, files still might be expired without
 331 it.
 332 .RE
 333 
 334 .sp
 335 .ne 2
 336 .na
 337 \fB\fB-N\fR\fR
 338 .ad
 339 .sp .6
 340 .RS 4n
 341 Prevent an error message if the specified logfile does not exist. Normally,
 342 \fBlogadm\fR produces an error message if the log file is not found. With
 343 \fB-N\fR, if the log file doesn't exist \fBlogadm\fR moves on to the expire
 344 rules (if any) and then to the next log file (if any), without creating the
 345 empty replacement log file.
 346 .RE
 347 
 348 .sp
 349 .ne 2
 350 .na
 351 \fB\fB-o\fR \fIowner\fR\fR
 352 .ad
 353 .sp .6
 354 .RS 4n
 355 Create the new empty file with \fIowner\fR, instead of preserving the owner of
 356 the log file.
 357 .sp
 358 Specify \fIowner\fR in any form that is accepted by the \fBchown\fR(1) command.
 359 .RE
 360 
 361 .sp
 362 .ne 2
 363 .na
 364 \fB\fB-p\fR \fIperiod\fR\fR
 365 .ad
 366 .sp .6
 367 .RS 4n
 368 Rotate a log file after the specified time period (\fIperiod\fR).
 369 .sp
 370 Specify \fIperiod\fR as a number followed by \fBd\fR for days, \fBh\fR for
 371 hours, \fBw\fR for weeks, \fBm\fR for months (30 days) or \fBy\fR for years.
 372 There are also two special values for period: \fBnow\fR and \fBnever\fR.
 373 "\fB\fR\fB-p\fR \fBnow\fR" forces log rotation. "\fB\fR\fB-p\fR \fBnever\fR"
 374 forces no log rotation.
 375 .RE
 376 
 377 .sp
 378 .ne 2
 379 .na
 380 \fB\fB-P\fR \fItimestamp\fR\fR
 381 .ad
 382 .sp .6
 383 .RS 4n
 384 Used by \fBlogadm\fR to record the last time the log was rotated in
 385 \fB/etc/logadm.conf\fR.
 386 .sp
 387 This option uses \fItimestamp\fR to determine if the log rotation period has
 388 passed. The format of \fItimestamp\fR matches the format generated by
 389 \fBctime\fR(3C), with quotes around it to protect embedded spaces.
 390 \fItimestamp\fR is always recorded in the Coordinated Universal Time (UTC)
 391 timezone.
 392 .RE
 393 
 394 .sp
 395 .ne 2
 396 .na
 397 \fB\fB-r\fR\fR
 398 .ad
 399 .sp .6
 400 .RS 4n
 401 Remove any entries corresponding to the specified \fIlogname\fR from the
 402 \fB/etc/logadm.conf\fR.
 403 .RE
 404 
 405 .sp
 406 .ne 2
 407 .na
 408 \fB\fB-R\fR \fIcmd\fR\fR
 409 .ad
 410 .sp .6
 411 .RS 4n
 412 Run the \fIcmd\fR when an old log file is created by a log rotation. If the
 413 keyword \fB$file\fR is embedded in the specified command, it is expanded to the
 414 name of the old log file just created by log rotation.
 415 .sp
 416 This option is useful for processing log file contents after rotating the log.
 417 \fIcmd\fR is executed by passing it to \fBsh\fR \fB-c\fR. When rotating
 418 multiple logs with one logadm command, the command supplied with \fB-R\fR is
 419 executed once every time a log is rotated. This is useful for post-processing a
 420 log file (that is, sorting it, removing uninteresting lines, etc.). The
 421 \fB-a\fR option is a better choice for restarting daemons after log rotation.
 422 .RE
 423 
 424 .sp
 425 .ne 2
 426 .na
 427 \fB\fB-s\fR \fIsize\fR\fR
 428 .ad
 429 .sp .6
 430 .RS 4n
 431 Rotate the log file only if its size is greater than or equal to \fIsize\fR.
 432 .sp
 433 Specify \fIsize\fR as a number followed by the letter \fBb\fR for bytes,
 434 \fBk\fR for kilobytes, \fBm\fR for megabytes, or \fBg\fR for gigabytes.
 435 .RE
 436 
 437 .sp
 438 .ne 2
 439 .na
 440 \fB\fB-S\fR \fIsize\fR\fR
 441 .ad
 442 .sp .6
 443 .RS 4n
 444 Delete the oldest versions until the total disk space used by the old log files
 445 is less than the specified size.
 446 .sp
 447 Specify \fIsize\fR as a number followed by the letter \fBb\fR for bytes,
 448 \fBk\fR for kilobytes, \fBm\fR for megabytes, or \fBg\fR for gigabytes.
 449 .RE
 450 
 451 .sp
 452 .ne 2
 453 .na
 454 \fB\fB-t\fR \fItemplate\fR\fR
 455 .ad
 456 .sp .6
 457 .RS 4n
 458 Specify the template to use when renaming log files.
 459 .sp
 460 \fItemplate\fR can be a simple name, such as \fB/var/adm/oldfile\fR, or it can
 461 contain special keywords which are expanded by \fBlogadm\fR and are in the form
 462 \fB$\fR\fIword\fR. Allowed sequences are:
 463 .sp
 464 .ne 2
 465 .na
 466 \fB$\fIbasename\fR\fR
 467 .ad
 468 .sp .6
 469 .RS 4n
 470 The log file name, without the directory name
 471 .RE
 472 
 473 .sp
 474 .ne 2
 475 .na
 476 \fB$\fIdirname\fR\fR
 477 .ad
 478 .sp .6
 479 .RS 4n
 480 The directory of the file to be rotated
 481 .RE
 482 
 483 .sp
 484 .ne 2
 485 .na
 486 \fB$\fIdomain\fR\fR
 487 .ad
 488 .sp .6
 489 .RS 4n
 490 Expands to the output of \fBdomainname\fR
 491 .RE
 492 
 493 .sp
 494 .ne 2
 495 .na
 496 \fB$\fIfile\fR\fR
 497 .ad
 498 .sp .6
 499 .RS 4n
 500 The full path name of the file to be rotated
 501 .RE
 502 
 503 .sp
 504 .ne 2
 505 .na
 506 \fB$\fIisa\fR\fR
 507 .ad
 508 .sp .6
 509 .RS 4n
 510 Expands to the output of \fBuname\fR \fB-p\fR
 511 .RE
 512 
 513 .sp
 514 .ne 2
 515 .na
 516 \fB$\fImachine\fR\fR
 517 .ad
 518 .sp .6
 519 .RS 4n
 520 Expands to the output of \fBuname\fR \fB-m\fR
 521 .RE
 522 
 523 .sp
 524 .ne 2
 525 .na
 526 \fB$\fIn\fR\fR
 527 .ad
 528 .sp .6
 529 .RS 4n
 530 The version number, \fB0\fR is most recent, \fB1\fR is next most recent, and so
 531 forth
 532 .RE
 533 
 534 .sp
 535 .ne 2
 536 .na
 537 \fB$\fIN\fR\fR
 538 .ad
 539 .sp .6
 540 .RS 4n
 541 The same as $\fIn\fR, but starts at \fB1\fR instead of zero
 542 .RE
 543 
 544 .sp
 545 .ne 2
 546 .na
 547 \fB$\fInodename\fR\fR
 548 .ad
 549 .sp .6
 550 .RS 4n
 551 Expands to the output of \fBuname\fR \fB-n\fR
 552 .RE
 553 
 554 .sp
 555 .ne 2
 556 .na
 557 \fB$\fIplatform\fR\fR
 558 .ad
 559 .sp .6
 560 .RS 4n
 561 Expands to the output of \fBuname\fR \fB-i\fR
 562 .RE
 563 
 564 .sp
 565 .ne 2
 566 .na
 567 \fB$\fIrelease\fR\fR
 568 .ad
 569 .sp .6
 570 .RS 4n
 571 Expands to the output of \fBuname\fR \fB-r\fR
 572 .RE
 573 
 574 .sp
 575 .ne 2
 576 .na
 577 \fB$\fIsecs\fR\fR
 578 .ad
 579 .sp .6
 580 .RS 4n
 581 The number of seconds since \fB00:00:00 UTC, January 1,1970\fR
 582 .RE
 583 
 584 .sp
 585 .ne 2
 586 .na
 587 \fB$\fIzonename\fR\fR
 588 .ad
 589 .sp .6
 590 .RS 4n
 591 Expands to the output of \fBzonename\fR(1).
 592 .RE
 593 
 594 To actually have the dollar sign character in the file name, use \fB$$\fR. Any
 595 percent sequences allowed by \fBstrftime\fR(3C) are also allowed, for example,
 596 \fB%d\fR expands to the day of the month. To actually have a percent sign
 597 character in the file name, use \fB%%\fR. Both dollar-sign keywords and percent
 598 sequences can appear anywhere in the template. If the template results in a
 599 pathname with non-existent directories, they are created as necessary when
 600 rotating the log file.
 601 .sp
 602 If no \fB-t\fR option is specified, the default template is \fB$file.$n\fR.
 603 Actual \fBrotation\fR of log files, where each version is shifted up until it
 604 expires is done using the \fB$n\fR keyword. If the template does not contain
 605 the \fB$n\fR keyword, the log file is simply renamed to the new name and then
 606 the expire rules, if any, are applied.
 607 .RE
 608 
 609 .sp
 610 .ne 2
 611 .na
 612 \fB\fB-T\fR \fIpattern\fR\fR
 613 .ad
 614 .sp .6
 615 .RS 4n
 616 Normally \fBlogadm\fR looks for a list of old log files by turning the template
 617 (specified with the \fB-t\fR option) into a pattern and finding existing files
 618 whose names match that pattern. The \fB-T\fR option causes the given pattern to
 619 be used instead.
 620 .sp
 621 This option is useful if another program fiddles with the old log file names,
 622 like a \fBcron\fR job to compress them over time. The pattern is in the form of
 623 a pathname with special characters such as \fB*\fR and \fB?\fR as supported by
 624 \fBcsh\fR(1) filename substitution.
 625 .RE
 626 
 627 .sp
 628 .ne 2
 629 .na
 630 \fB\fB-v\fR\fR
 631 .ad
 632 .sp .6
 633 .RS 4n
 634 Print information about the actions being executed in verbose mode.
 635 .RE
 636 
 637 .sp
 638 .ne 2
 639 .na
 640 \fB\fB-V\fR\fR
 641 .ad
 642 .sp .6
 643 .RS 4n
 644 Validate the configuration file.
 645 .sp
 646 This option validates that an entry for the specified \fIlogname\fR exists in
 647 the \fB/etc/logadm.conf\fR file and is syntactically correct. If \fIlogname\fR
 648 is not specified, all entries in the configuration file are validated. If a
 649 \fBlogname\fR argument is specified, the command validates the syntax of that
 650 entry. If the entry is found, it is printed and the exit value of the command
 651 is true. Otherwise the exit value is false.
 652 .RE
 653 
 654 .sp
 655 .ne 2
 656 .na
 657 \fB\fB-w\fR \fIentryname\fR\fR
 658 .ad
 659 .sp .6
 660 .RS 4n
 661 Write an entry into the config file (that is, \fB/etc/logadm.conf\fR) that
 662 corresponds to the current command line arguments. If an entry already existed
 663 for the specified \fIentryname\fR, it is removed first. This is the preferred
 664 method for updating \fB/etc/logadm.conf\fR, because it prevents syntax errors.
 665 The \fIentryname\fR is an argument to an invocation of \fBlogadm\fR.
 666 \fIentryname\fR might be chosen as something easy to remember or it can be the
 667 pathname of the log file. If a pathname, rather than a name is used, it must be
 668 a fully qualified pathname.
 669 .sp
 670 If no log file name is provided on a \fBlogadm\fR command line, the entry name
 671 is assumed to be the same as the log file name. For example, the following two
 672 lines achieve the same thing, keeping two copies of rotated log files:
 673 .sp
 674 .in +2
 675 .nf
 676 % logadm -C2 -w mylog /my/really/long/log/file/name
 677 % logadm -C2 -w /my/really/long/log/file/name
 678 .fi
 679 .in -2
 680 .sp
 681 
 682 .RE
 683 
 684 .sp
 685 .ne 2
 686 .na
 687 \fB\fB-z\fR \fIcount\fR\fR
 688 .ad
 689 .sp .6
 690 .RS 4n
 691 Compress old log files after all other commands have been executed. \fIcount\fR
 692 of the most recent log files are left uncompressed, therefore making the
 693 \fIcount\fR most recent files easier to peruse. Use \fIcount\fR of zero to
 694 compress all old logs.
 695 .sp
 696 The compression is done with \fBgzip\fR(1) and the resulting log file has the
 697 suffix of \fB\&.gz\fR.
 698 .RE
 699 
 700 .SH OPERANDS
 701 .sp
 702 .LP
 703 The following operands are supported:
 704 .sp
 705 .ne 2
 706 .na
 707 \fB\fIlogname\fR\fR
 708 .ad
 709 .sp .6
 710 .RS 4n
 711 Identifies the name of the entry in \fB/etc/logadm.conf\fR. If the log file
 712 name is specified in the \fIlogname\fR field, it is assumed that \fIlogname\fR
 713 is the same as the actual log file name.
 714 .RE
 715 
 716 .SH EXAMPLES
 717 .LP
 718 \fBExample 1 \fRRotating a File and Keeping Previous Versions
 719 .sp
 720 .LP
 721 The following example rotates the \fB/var/adm/exacct/proc\fR file, keeping ten
 722 previous versions in \fB/var/adm/exacct/proc.0\fR through
 723 \fB/var/adm/exacct/proc.9\fR.
 724 
 725 .sp
 726 .LP
 727 Tell \fBlogadm\fR to copy the file and truncate it.
 728 
 729 .sp
 730 .in +2
 731 .nf
 732  % logadm -c /var/adm/exacct/proc
 733 .fi
 734 .in -2
 735 .sp
 736 
 737 .LP
 738 \fBExample 2 \fRRotating syslog
 739 .sp
 740 .LP
 741 The following example rotates \fBsyslog\fR and keeps eight log files. Old log
 742 files are put in the directory \fB/var/oldlogs\fR instead of \fB/var/log\fR:
 743 
 744 .sp
 745 .in +2
 746 .nf
 747 % logadm -C8 -t'/var/oldlogs/syslog.$n' /var/log/syslog
 748 .fi
 749 .in -2
 750 .sp
 751 
 752 .LP
 753 \fBExample 3 \fRRotating /var/adm/sulog and Expiring Based on Age
 754 .sp
 755 .LP
 756 The following entry in the \fB/etc/logadm.conf\fR file rotates the
 757 \fB/var/adm/sulog\fR file and expires any copies older than 30 days.
 758 
 759 .sp
 760 .in +2
 761 .nf
 762 /var/adm/sulog -A 30d
 763 .fi
 764 .in -2
 765 .sp
 766 
 767 .LP
 768 \fBExample 4 \fRRotating Files and Expiring Based on Disk Usage
 769 .sp
 770 .LP
 771 The following entry in the \fB/etc/logadm.conf\fR file rotates the
 772 \fB/var/adm/sulog\fR file and expires old log files when more than 100
 773 megabytes are used by the sum of all the rotated log files.
 774 
 775 .sp
 776 .in +2
 777 .nf
 778 /var/adm/sulog -S 100m
 779 .fi
 780 .in -2
 781 .sp
 782 
 783 .LP
 784 \fBExample 5 \fRCreating an Entry that Stores the Logfile Name
 785 .sp
 786 .LP
 787 This example creates an entry storing the log file name and the fact that we
 788 want to keep 20 copies in \fB/etc/logadm.conf\fR, but the \fB\fR\fB-p\fR
 789 \fBnever\fR means the entry is ignored by the normal \fBlogadm\fR run from
 790 root's crontab every morning.
 791 
 792 .sp
 793 .in +2
 794 .nf
 795 % logadm -w locallog /usr/local/logfile -C20 -p never
 796 .fi
 797 .in -2
 798 .sp
 799 
 800 .sp
 801 .LP
 802 Use the following entry on the command line to override the \fB\fR\fB-p\fR
 803 \fBnever\fR option:
 804 
 805 .sp
 806 .in +2
 807 .nf
 808  % logadm -p now locallog
 809 .fi
 810 .in -2
 811 .sp
 812 
 813 .LP
 814 \fBExample 6 \fRRotating the apache Error and Access Logs
 815 .sp
 816 .LP
 817 The following example rotates the apache error and access logs monthly to
 818 filenames based on current year and month. It keeps the 24 most recent copies
 819 and tells apache to restart after renaming the logs.
 820 
 821 .sp
 822 .LP
 823 This command is run once, and since the \fB-w\fR option is specified, an entry
 824 is made in \fB/etc/logadm.conf\fR so the apache logs are rotated from now on.
 825 
 826 .sp
 827 .in +2
 828 .nf
 829  % logadm -w apache -p 1m -C 24\e
 830         -t '/var/apache2/2.2/old-logs/$basename.%Y-%m'\e
 831         -a '/usr/apache2/2.2/bin/apachectl graceful'\e
 832         '/var/apache2/2.2/logs/*{access,error}_log'
 833 .fi
 834 .in -2
 835 .sp
 836 
 837 .sp
 838 .LP
 839 This example also illustrates that the entry name supplied with the \fB-w\fR
 840 option doesn't have to match the log file name. In this example, the entry name
 841 is \fBapache\fR and once the line has been run, the entry in
 842 \fB/etc/logadm.conf\fR can be forced to run by executing the following command:
 843 
 844 .sp
 845 .in +2
 846 .nf
 847 % logadm -p now apache
 848 .fi
 849 .in -2
 850 .sp
 851 
 852 .sp
 853 .LP
 854 Because the expression matching the apache log file names was enclosed in
 855 quotes, the expression is stored in \fB/etc/logadm.conf\fR, rather than the
 856 list of files that it expands to. This means that each time \fBlogadm\fR runs
 857 from \fBcron\fR it expands that expression and checks all the log files in the
 858 resulting list to see if they need rotating.
 859 
 860 .sp
 861 .LP
 862 The following command is an example without the quotes around the log name
 863 expression. The shell expands the last argument into a list of log files that
 864 exist at the time the command is entered, and writes an entry to
 865 \fB/etc/logadm.conf\fR that rotates the files.
 866 
 867 .sp
 868 .in +2
 869 .nf
 870 logadm -w apache /var/apache2/2.2/logs/*_log
 871 .fi
 872 .in -2
 873 .sp
 874 
 875 .SH FILES
 876 .sp
 877 .ne 2
 878 .na
 879 \fB\fB/etc/logadm.conf\fR\fR
 880 .ad
 881 .sp .6
 882 .RS 4n
 883 configuration file for \fBlogadm\fR command
 884 .RE
 885 
 886 .SH ATTRIBUTES
 887 .sp
 888 .LP
 889 See \fBattributes\fR(5) for descriptions of the following attributes:
 890 .sp
 891 
 892 .sp
 893 .TS
 894 box;
 895 c | c
 896 l | l .
 897 ATTRIBUTE TYPE  ATTRIBUTE VALUE
 898 _
 899 Interface Stability     Evolving
 900 .TE
 901 
 902 .SH SEE ALSO
 903 .sp
 904 .LP
 905 \fBchgrp\fR(1), \fBchmod\fR(1), \fBchown\fR(1), \fBcsh\fR(1), \fBgzip\fR(1),
 906 \fBcron\fR(1M), \fBctime\fR(3C), \fBstrftime\fR(3C), \fBlogadm.conf\fR(4),
 907 \fBattributes\fR(5)
 908 .SH NOTES
 909 .sp
 910 .LP
 911 When \fBlogadm\fR applies expire conditions (supplied by the \fB-A\fR,
 912 \fB-C\fR, and \fB-S\fR options), it deletes files, the oldest first, until the
 913 conditions are satisfied. If the template used for naming the old logs
 914 contained \fB$n\fR or \fB$N\fR, \fBlogadm\fR picks the highest value of
 915 \fB$n\fR or \fB$N\fR found in the old log file names first. If the template
 916 used is something else, \fBlogadm\fR uses the modification time to determine
 917 which files to expire first. This may not be the expected behavior if an old
 918 log file has been modified since it was rotated.
 919 .sp
 920 .LP
 921 Depending on log file sizes and number of log files, log file rotations can be
 922 very time-consuming.
 923 .sp
 924 .LP
 925 By default, \fBlogadm\fR works in \fBGMT\fR. Therefore, all entries written to
 926 the \fB/etc/logadm.conf\fR file (see \fBlogadm.conf\fR(4)) will have a
 927 \fBGMT\fR timestamp. Users can use the \fB-l\fR option to set \fBlogadm\fR to
 928 local time.