[Bug 1350782] Re: Upstart does not reopen /var/log/upstart/* logfiles upon log rotation

Михаїл Т. 1350782 at bugs.launchpad.net
Wed Nov 29 20:48:43 UTC 2017


> awk | sed

As a general rule, you never need more than a single of awk, sed, grep,
cut in the same pipeline.  Also, xargs (on Linux) would generate a silly
error-message (which cron will dutifully e-mail to you), if no matching
open files were found. The improved (and less prone to race-conditions)
expression for the same would be:

postrotate
         lsof | awk '
                  $9 ~ /^\/var\/log\/upstart\/.*\.log.+/ {
                           service = gensub("^.*/(.*).log.*", "\\1", $9);
                           system("service " service " restart")
                  }
         '
endscript

But, you only need lsof if you insist on sharedscripts (which is not in
there in the default file installed by the upstart package).

If you do NOT add the sharedscripts-verb, you can bypass the entire lsof
part, because the full path of the log being rotated will be passed to
the postrotate-script as the first argument:

postrotate
         service=${1##*/}
         service=${service%.log*}
         service $service restart
endscript

You can also insert special handling for some of the services easier
this way, for example:

         case $service in
         fpm*)
                 exit 0
                 ;;
         .....
         esac

-- 
You received this bug notification because you are a member of Ubuntu
Foundations Bugs, which is subscribed to upstart in Ubuntu.
https://bugs.launchpad.net/bugs/1350782

Title:
  Upstart does not reopen /var/log/upstart/* logfiles upon log rotation

Status in upstart package in Ubuntu:
  Confirmed

Bug description:
  Note: this issue is reported from a 12.04 system, but I've confirmed
  the same behavior on a 14.04 system.

  Logrotate configuration for Upstart logs has no postrotate action:

  /var/log/upstart/*.log {
          daily
          missingok
          rotate 7
          compress
          notifempty
  	nocreate
  }

  As a result, when logs are rotated, upstart keeps open handles on
  deleted log files instead of reopening the new log files:

  # lsof -p1 | fgrep /var/log/upstart
  . . .
  init      1 root    8w   REG              253,1       62  789436 /var/log/upstart/dbus.log.1 (deleted)
  . . .

  From this point on, all subsequent log messages are lost, delivered
  into a deleted file.

  I could not find a way to get the upstart init process to reopen its
  log files, short of restarting _all_ services that log to
  /var/log/upstart/*.log files, which does not seem like a good solution
  at all.

  ProblemType: Bug
  DistroRelease: Ubuntu 12.04
  Package: upstart 1.5-0ubuntu7.2
  ProcVersionSignature: Ubuntu 3.2.0-60.91-generic 3.2.55
  Uname: Linux 3.2.0-60-generic x86_64
  ApportVersion: 2.0.1-0ubuntu17.6
  Architecture: amd64
  Date: Thu Jul 31 10:43:25 2014
  InstallationMedia: Ubuntu-Server 10.04.4 LTS "Lucid Lynx" - Release amd64 (20120214.2)
  MarkForUpload: True
  ProcEnviron:
   LC_CTYPE=en_US.UTF-8
   TERM=xterm-256color
   PATH=(custom, no user)
   LANG=en_GB.UTF-8
   SHELL=/bin/bash
  SourcePackage: upstart
  UpgradeStatus: Upgraded to precise on 2013-10-23 (280 days ago)

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/upstart/+bug/1350782/+subscriptions



More information about the foundations-bugs mailing list