logrotate
LOGROTATE(E)                                         LOGROTATE(E)



NAME
       logrotate - rotates, compresses, and mails system logs

SYNOPSIS
       logrotate  [-dv]  [-f|--force] [-s|--state statefile] con-
       fig_file ..

DESCRIPTION
       logrotate is designed to ease  administration  of  systems
       that generate large numbers of log files.  It allows auto-
       matic rotation, compression, removal, and mailing  of  log
       files.   Each  log  file  may  be  handled  daily, weekly,
       monthly, or when it grows too large.

       Normally, logrotate is run as a daily cron job.   It  will
       not modify a log more than once in one day unless the cri-
       terion for that log is based on the log's size and  logro-
       tate  is  being run more than once each day, or unless the
       -f or --force option is used.

       Any number of config files may be  given  on  the  command
       line. Later config files may override the options given in
       earlier files, so the order in which the logrotate  config
       files  are listed is important.  Normally, a single config
       file which includes  any  other  config  files  which  are
       needed  should be used.  See below for more information on
       how to use the include directive to accomplish this.  If a
       directory is given on the command line, every file in that
       directory is used as a config file.

       If no command line arguments  are  given,  logrotate  will
       print  version  and  copyright  information,  along with a
       short usage summary.  If any errors occur  while  rotating
       logs, logrotate will exit with non-zero status.


OPTIONS
       -d     Turns on debug mode and implies -v.  In debug mode,
              no changes will be made  to  the  logs  or  to  the
              logrotate state file.


       -f, --force
              Tells  logrotate  to force the rotation, even if it
              doesn't think this is necessary.  Sometimes this is
              useful after adding new entries to a logrotate con-
              fig file, or if old log files have been removed  by
              hand, as the new files will be created, and logging
              will continue correctly.


       -s, --state statefile
              Tells logrotate to use  an  alternate  state  file.
              This is useful if logrotate is being run as differ-
              ent users for  various  sets  of  log  files.   The
              default state file is /var/lib/logrotate/status.


       --usage
              Prints a short usage message.


       -v, --verbose
              Display messages during rotation.



CONFIGURATION FILE
       logrotate  reads  everything about the log files it should
       be handling from the series of configuration files  speci-
       fied on the command line.  Each configuration file can set
       global options (local definitions  override  global  ones,
       and  later  definitions override earlier ones) and specify
       some logfiles to rotate. A simple configuration file looks
       like this:

       # sample logrotate configuration file
       compress

       /var/log/messages {
           rotate 5
           weekly
           postrotate
               /sbin/killall -HUP syslogd
           endscript
       }

       "/var/log/httpd/access.log" /var/log/httpd/error.log {
           rotate 5
           mail www@my.org
           size=100k
           sharedscripts
           postrotate
               /sbin/killall -HUP httpd
           endscript
       }

       /var/log/news/* {
           monthly
           rotate 2
           missingok
           postrotate
               kill -HUP `cat /var/run/inn.pid`
           endscript
           nocompress
       }

       The  first  few  lines set global options; in the example,
       logs are compressed after they  are  rotated.   Note  that
       comments may appear anywhere in the config file as long as
       the first non-whitespace character on the line is a #.

       The next section of the config file defines how to  handle
       the  log  file  /var/log/messages. The log will go through
       five weekly rotations before being removed. After the  log
       file  has  been rotated (but before the old version of the
       log has been compressed), the command  /sbin/killall  -HUP
       syslogd will be executed.

       The   next   section   defines  the  parameters  for  both
       /var/log/httpd/access.log  and   /var/log/httpd/error.log.
       Each  is  rotated whenever it grows over 100k in size, and
       the old logs files are mailed (uncompressed) to www@my.org
       after   going  through  5  rotations,  rather  then  being
       removed.  The  sharedscripts  means  that  the  postrotate
       script  will only be run once, not once for each log which
       is rotated. Note that log file names may  be  enclosed  in
       quotes  (and that quotes are required if the name contains
       spaces).  Normal shell quoting rules apply, with ', ", and
       \ characters supported.

       The  last  section  defines  the parameters for all of the
       files in /var/log/news. Each file is rotated on a  monthly
       basis.  This is considered a single rotation directive and
       if errors occur for more then one file, the log files  are
       not compressed.

       If  the  directory /var/log/news does not exist, this will
       cause logrotate to report an error. This error  cannot  be
       stopped with the missingok directive.

       Here  is  more  information on the directives which may be
       included in a logrotate configuration file:


       compress
              Old versions  of  log  files  are  compressed  with
              gzip(p) by default.  See also nocompress.


       compresscmd
              Specifies  which  command  to  use  to compress log
              files.  The default is gzip(p).  See also compress.


       uncompresscmd
              Specifies  which  command  to use to uncompress log
              files.  The default is gunzip(p).


       compressext
              Specifies which extension to use on compressed log-
              files, if compression is enabled.  The default fol-
              lows that of the configured compression command.


       compressoptions
              Command line options may be passed to the  compres-
              sion  program,  if one is in use.  The default, for
              gzip, is "-9" (maximum compression).


       copytruncate
              Truncate the original log  file  to  zero  size  in
              place  after creating a copy, instead of moving the
              old log file and optionally creating a new one.  It
              can  be  used  when  some program cannot be told to
              close its logfile and thus might  continue  writing
              (appending) to the previous log file forever.  Note
              that there is a very small time slice between copy-
              ing  the  file  and  truncating it, so some logging
              data might be lost.  When this option is used,  the
              create  option  will have no effect, as the old log
              file stays in place.


       create mode owner group
              Immediately after rotation (before  the  postrotate
              script  is  run)  the log file is created (with the
              same name as the  log  file  just  rotated).   mode
              specifies  the  mode for the log file in octal (the
              same as chmod(d)), owner specifies  the  user  name
              who  will own the log file, and group specifies the
              group the log file will belong to. Any of  the  log
              file attributes may be omitted, in which case those
              attributes for the new file will use the same  val-
              ues  as  the  original  log  file  for  the omitted
              attributes. This option can be disabled  using  the
              nocreate option.


       daily  Log files are rotated every day.


       delaycompress
              Postpone  compression  of  the previous log file to
              the next rotation cycle.  This only has effect when
              used  in combination with compress.  It can be used
              when some program cannot be told to close its  log-
              file  and thus might continue writing to the previ-
              ous log file for some time.


       extension ext
              Log files are given the final extension  ext  after
              rotation.  If  compression is used, the compression
              extension (normally .gz) appears after ext.


       ifempty
              Rotate the log file even if it is empty, overriding
              the notifempty option (ifempty is the default).


       include file_or_directory
              Reads  the  file  given as an argument as if it was
              included  inline  where   the   include   directive
              appears. If a directory is given, most of the files
              in that directory are read before processing of the
              including  file continues. The only files which are
              ignored are files which are not regular files (such
              as  directories  and  named  pipes) and files whose
              names end with one  of  the  taboo  extensions,  as
              specified  by  the tabooext directive.  The include
              directive may not appear inside a log file  defini-
              tion.


       mail address
              When  a  log  is  rotated  out  of existence, it is
              mailed to address. If no mail should  be  generated
              by  a  particular  log, the nomail directive may be
              used.


       mailfirst
              When using the mail command, mail the  just-rotated
              file, instead of the about-to-expire file.


       maillast
              When  using  the  mail  command, mail the about-to-
              expire file, instead of the just-rotated file (this
              is the default).


       missingok
              If  the  log file is missing, go on to the next one
              without  issuing  an  error   message.   See   also
              nomissingok.


       monthly
              Log  files  are rotated the first time logrotate is
              run in a month (this is normally on the  first  day
              of the month).


       nocompress
              Old  versions  of log files are not compressed. See
              also compress.


       nocopytruncate
              Do not truncate the  original  log  file  in  place
              after creating a copy (this overrides the copytrun-
              cate option).


       nocreate
              New log files are not created (this  overrides  the
              create option).


       nodelaycompress
              Do  not  postpone  compression  of the previous log
              file to the next rotation cycle (this overrides the
              delaycompress option).


       nomail Do not mail old log files to any address.


       nomissingok
              If  a log file does not exist, issue an error. This
              is the default.


       noolddir
              Logs are rotated in  the  directory  they  normally
              reside in (this overrides the olddir option).


       nosharedscripts
              Run  prerotate and postrotate scripts for every log
              that is rotated (this is the default, and overrides
              the sharedscripts option).


       notifempty
              Do  not  rotate  the log if it is empty (this over-
              rides the ifempty option).


       olddir directory
              Logs are moved into  directory  for  rotation.  The
              directory  must  be  on the same physical device as
              the log file being rotated.  When  this  option  is
              used  all  old versions of the log end up in direc-
              tory.  This option may be overridden by the  noold-
              dir option.


       postrotate/endscript
              The lines between postrotate and endscript (both of
              which must  appear  on  lines  by  themselves)  are
              executed  after  the  log  file  is  rotated. These
              directives may only appear inside a log file  defi-
              nition.  See also prerotate.


       prerotate/endscript
              The  lines between prerotate and endscript (both of
              which must appear on lines by themselves) are  exe-
              cuted  before the log file is rotated. These direc-
              tives may only appear inside a log file definition.
              See also postrotate.


       rotate count
              Log  files  are  rotated  count  times before being
              removed or mailed to the  address  specified  in  a
              mail  directive.  If  count  is 0, old versions are
              removed rather then rotated.


       sharedscripts
              Normally, prerotate and postrotate scripts are  run
              for  each log which is rotated, meaning that a sin-
              gle script may be run multiple times for  log  file
              entries  which  match  multiple  files (such as the
              /var/log/news/* example). If sharedscript is speci-
              fied,  the scripts are only run once, no matter how
              many logs match the  wildcarded  pattern.   A  side
              effect  of  this  option  is  that  the scripts are
              always executed, even if no logs  are  rotated.  If
              this  directive  is  not specified, the scripts are
              run only if logs are actually rotated.  This  over-
              rides the nosharedscripts option.


       size size[M|k]
              Log  files  are  rotated when they grow bigger than
              size bytes. If size is followed by M, the  size  is
              assumed to be in megabytes.  If k is used, the size
              is in kilobytes. So size 100, size 100k,  and  size
              100M are all valid.


       tabooext [+] list
              The  current  taboo  extension list is changed (see
              the include directive for information on the  taboo
              extensions).  If + precedes list, the current taboo
              extension list is augmented by list,  otherwise  it
              is  replaced.  At startup, the taboo extension list
              contains .rpmorig, .rpmsave, .dpkg-dist, .dpkg-old,
              .dpkg-new, .disabled, ,v, .swp, .rpmnew, and ~. The
              members of the list are separated  by  spaces,  not
              commas.


       weekly Log  files  are  rotated  if the current weekday is
              less than the weekday of the last  rotation  or  if
              more  than  a  week has passed since the last rota-
              tion. This is normally the same as rotating logs on
              the  first  day  of  the  week, but works better if
              logrotate is not run every night.


FILES
       /var/lib/logrotate/status  Default state file.
       /etc/logrotate.conf        Configuration options.

SEE ALSO
       gzip(p)

NOTES
       The killall(l) program in Debian is found  in  the  psmisc
       package.

AUTHORS
       Erik Troan <ewt@redhat.com>
       Preston Brown <pbrown@redhat.com>



                         Thu Aug 02 2001             LOGROTATE(E)