Win a copy of The Java Performance Companion this week in the Performance forum!
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

Log Rotation Issue on Solaris

 
Chang Iych
Greenhorn
Posts: 5
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Hi,
I have a log file on Solaris (SunOS <hostname> 5.9 Generic_118558-11 sun4u sparc SUNW,Sun-Fire-V490) that needs to be rotated everyday. I've scheduled a job for this purpose and it looks like this...

cp abc.log abc.log.`date '+%Y-%m-%d'`
: > abc.log

I have a problem here, when I do a less abc.log after the rotation i get all junk characters in the log

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

However a tail -f abc.log gives me the required output ( the log file is being updated continuously). The size of the log file hasn't changed after the rotation. I tried rotating the log with the following script but that didn't help either..

cp abc.log abc.log.`date '+%Y-%m-%d'`
cat /dev/null > abc.log

Can anybody shed more light on what is happening here.
Thanks in advance..
Chang
 
Stefan Wagner
Ranch Hand
Posts: 1923
Linux Postgres Database Scala
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
I'm using Linux, and don't know how much the systems differ.
The first thing is: There is a file /etc/logrotate.conf which includes scripts from /etc/logrotate.d/*, which seems to be a good idea.

The second idea is schedulers path: Some of them don't have an environment set, and might need absolute paths for programs like cp, cat and date.

Does it work from the shell?
Is a file abc.log.2006-03-05 created?

less might be confused if the file is too small, but it seems it is rather long? should tell you the number of lines.

You could do a

or even a

(backticks are discouraged, but perhaps not on your platform) but perhaps owner and permissions are affekted and not affected, if you use cat.
 
Brian Wright
Greenhorn
Posts: 11
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
I suspect your problem is related to the Great Inode Confusion

cp abc.log abc.log.`date '+%Y-%m-%d'`
: > abc.log

Let's use some sample inode numbers - we'll say abc.log=inode 12345

In the first command, you're copying abc.log, which creates a copy successfully. abc.log.20060324=inode 23456

Your next command attempts to write to the existing abc.log IE it attempts to write to the beginning of abc.log which is inode 12345. Here's where the problem occurs - the program creating this log is still writing it's output to inode 12345 and still has that file open! I'd suggest checking your webserver/whatever program is generating the log and see what are the options for log rotation. Of course, you could always just restart the program nightly...

There are a few funky things you could try to get around this, but I'd suggest caution unless you're really certain what you're doing.
 
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic