logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

shtool-rotate - GNU shtool log file rotation

Description

       This command rotates a logfile file by subsequently creating up to count (optionally compressed) archive
       files of it. Archive files are named "file.number[compress-suffix]" where number is the version number, 0
       being the newest and "count-1" the oldest.

       A rotation step consists of the following steps

       1. remove last archive file 2. shift archive file numbers 3. create archive file 0 from file 4.
       truncate/recreate file

Example

        #   shell script
        shtool rotate -n10 -s1M -zbzip2:9 -d -r /var/log/ap.access.log
        shtool rotate -n5 -s128K -zbzip2:9 -d -r /var/log/ap.error.log
        apachectl graceful

History

       The GNUshtoolrotate command was originally written by Ralf  S.   Engelschall  <rse@engelschall.com>  in
       2001  for  GNUshtool.   Its  development  was  prompted by the need to have a flexible logfile rotation
       facility in the OpenPKG project.

Name

       shtool-rotate - GNU shtool log file rotation

Options

       The following command line options are available.

       -v, --verbose
           Display some processing information.

       -t, --trace
           Enable the output of the essential shell commands which are executed.

       -f, --force
           Force  silent  creation  of  archive  directory if it does not exists. Also skip missing intermediate
           logfiles in the rotation step. Default is to exit with error in both cases. FIXME

       -n, --num-filescount
           Create count archive files. Default is 10.

       -s, --sizesize
           Only rotate if logfile exceeds size. The argument size can be specified also with the trailing  units
           "K"  (kilo),  "M"  (mega)  or  "G"  (giga).  The  "prolog" and "epilog" are only executed if rotation
           actually takes place.

       -c, --copy
           Copy file to archive then truncate original. The default is to move file to archive.

           Unless an application reopens its logfile it will continue to write to the same file. In the  default
           move  case  the  application will write to the archive which it had previously opened as file. In the
           copy case the application will write to the original file. The drawback of the copy approach is  that
           logfile  entries  are  lost  when  they are written to file between the execution of the copy and the
           truncation operation. The drawback of the move approach is that the application needs to  detect  the
           move or must be triggered to reopen its log (i.e.  through epilog).

       -r, --remove
           Removes file after rotation instead of providing a new empty file.

       -a, --archive-dirdir
           Specify  the  archive  directory.  Default  is  to  create  archives in the same directory as file is
           located.

       -z, --compress [tool:]level
           Enables compression of archive files with compression level level By  default,  the  tools  bzip2(1),
           gzip(1)  and  compress(1)  are searched for in $PATH, but one also can override this by prefixing the
           compression level with one of the three particular tool names.

       -b, --background
           Enable background compression.

       -d, --delay
           Delays the compression of archive file number 0. This is useful if ``-c'' is  not  used,  because  an
           application might continue to write to archive file 0 through an already open file handle.

       -p, --padlen
           Enables  padding  with leading zeros in the number part of the filename "file.numbercompress-suffix".
           The default padding len is 1.  This is interesting if more than 10 archive files are used, because it
           leads to still sorted directory listings.

       -m, --modemode
           The file mode applied to the created files, see chmod(1). Setting mode to "-"  skips  this  step  and
           leaves  the  operating  system  default  which  is usually based on umask(1). Some file modes require
           superuser privileges to be set. Default is 0755.

       -o, --ownerowner
           The file owner name or id applied to the created files, see chown(1). This option requires  superuser
           privileges  to  execute. Default is to skip this step and leave the operating system default which is
           usually based on the executing uid or the parent setuid directory.

       -g, --groupgroup
           The file group name or id applied to the created files, see chgrp(1). This option requires  superuser
           privileges  to  execute  to  the  fullest  extend,  otherwise  the choice of group is limited on most
           operating systems.  Default is to skip this step and leave the  operating  system  default  which  is
           usually based on the executing gid or the parent setgid directory.

       -M, --migratecmd
           Execute  a  "migration"  command  just  before  the  archive  file number count-1 is removed from the
           filesystem. The specified cmd receives the archive filename as command line argument.

       -P, --prologcmd
           Execute a "prolog" command before the rotation step. Useful in conjunction with -s.

       -E, --epilogcmd
           Execute a "epilog" command after the rotation step. Useful in conjunction with -s.

See Also

shtool(1), BSD newsyslog(8).

18-Jul-2008                                       shtool 2.0.8                              SHTOOL-ROTATE.TMP(1)

Synopsis

shtoolrotate [-v|--verbose] [-t|--trace] [-f|--force] [-n|--num-filescount] [-s|--sizesize]
       [-c|--copy] [-r|--remove] [-a|--archive-dirdir] [-z|--compress [tool:]level] [-b|--background]
       [-d|--delay] [-p|--padlen] [-m|--modemode] [-o|--ownerowner] [-g|--groupgroup] [-M|--migratecmd]
       [-P|--prologcmd] [-E|--epilogcmd] file [file ...]

See Also