Visit Our UNIX and Linux User Community


Log rotation script


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Log rotation script
# 1  
Old 04-23-2014
Log rotation script

I have an application that rotate its log once it reaches 100mb and it keeps a total of 24 logs. I am trying to write a script to run daily to tar up the previous day logs files and move them to a different directory. here is a long listing of the logs in the directory:
Code:
-rw-r--r--   1 user1     user1     100000150 Apr 19 10:46 log.24
-rw-r--r--   1 user1     user1     100004207 Apr 19 14:21 log.23
-rw-r--r--   1 user1     user1     100004463 Apr 19 18:22 log.22
-rw-r--r--   1 user1     user1     100003277 Apr 19 22:33 log.21
-rw-r--r--   1 user1     user1     100000833 Apr 20 03:03 log.20
-rw-r--r--   1 user1     user1     100002192 Apr 20 09:07 log.19
-rw-r--r--   1 user1     user1     100004056 Apr 20 12:45 log.18
-rw-r--r--   1 user1     user1     100000851 Apr 20 16:16 log.17
-rw-r--r--   1 user1     user1     100001805 Apr 20 20:21 log.16
-rw-r--r--   1 user1     user1     100003432 Apr 21 00:50 log.15
-rw-r--r--   1 user1     user1     100002232 Apr 21 06:23 log.14
-rw-r--r--   1 user1     user1     100004079 Apr 21 10:38 log.13
-rw-r--r--   1 user1     user1     100004782 Apr 21 14:13 log.12
-rw-r--r--   1 user1     user1     100000374 Apr 21 17:50 log.11
-rw-r--r--   1 user1     user1     100004002 Apr 21 21:29 log.10
-rw-r--r--   1 user1     user1     100001480 Apr 22 02:15 log.09
-rw-r--r--   1 user1     user1     100002608 Apr 22 07:12 log.08
-rw-r--r--   1 user1     user1     100000332 Apr 22 11:24 log.07
-rw-r--r--   1 user1     user1     100002060 Apr 22 15:12 log.06
-rw-r--r--   1 user1     user1     100000087 Apr 22 18:45 log.05
-rw-r--r--   1 user1     user1     100000197 Apr 22 22:41 log.04
-rw-r--r--   1 user1     user1     100000436 Apr 23 03:26 log.03
-rw-r--r--   1 user1     user1     100004005 Apr 23 08:54 log.02
-rw-r--r--   1 user1     user1     100003351 Apr 23 12:29 log.01
-rw-r--r--   1 user1     user1     55085889 Apr 23 14:20 log

for example, if we run the script on the 23rd, it should tar up all the logs for the 22nd ( log.04-log.09) and move then to a different directory.

If I try to use the find command with the mtime option, I does not provide the all the logs for the previous day.

Your help is very much appreciated.

Last edited by e_mikey_2000; 04-23-2014 at 07:00 PM.. Reason: code tag
# 2  
Old 04-23-2014
Have you considered logrotate?
# 3  
Old 04-24-2014
I do not think Solaris has logrotate.
# 4  
Old 04-24-2014
Did you try -mtime 1?
Code:
nowdate=`date +%Y-%m-%d`
tarfile=/backups/$nowdate.tar
> $tarfile
find logdir/ -type f -mtime 1 -exec echo tar rf $tarfile {} +

Remove the echo if you think it's okay.

---------- Post updated at 05:18 PM ---------- Previous update was at 04:55 PM ----------

If you want to immediately delete the tar'ed files you can do the following (must use the slower \;):
Code:
...
find logdir/ -type f -mtime 1 -exec echo tar rf $tarfile {} \; -exec echo rm -f {} \;


Last edited by MadeInGermany; 04-24-2014 at 07:19 PM.. Reason: tar cf replaced by tar rf
# 5  
Old 04-24-2014
Solaris uses logadm.

You can find some information on its usage here.

No need to reinvent the wheel. Smilie
# 6  
Old 04-25-2014
It seems that you code does not grab all the files for the previous day. here is an example of the log die with the time stamp:
Code:
-rw-r--r--   1 user1     user1     100001759 Apr 23 16:04 log.16
-rw-r--r--   1 user1     user1     100004819 Apr 23 19:21 log.15
-rw-r--r--   1 user1     user1     100000059 Apr 23 22:48 log.14
-rw-r--r--   1 user1     user1     100001107 Apr 24 02:11 log.13
-rw-r--r--   1 user1     user1     100000180 Apr 24 05:35 log.12
-rw-r--r--   1 user1     user1     100002642 Apr 24 11:43 log.11
-rw-r--r--   1 user1     user1     100001593 Apr 24 15:07 log.10
-rw-r--r--   1 user1     user1     100002728 Apr 24 18:09 log.09
-rw-r--r--   1 user1     user1     100003788 Apr 24 21:24 log.08
-rw-r--r--   1 user1     user1     100003583 Apr 25 00:34 log.07
-rw-r--r--   1 user1     user1     100002551 Apr 25 04:19 log.06
-rw-r--r--   1 user1     user1     100004682 Apr 25 06:04 log.05
-rw-r--r--   1 user1     user1     100001351 Apr 25 06:42 log.04
-rw-r--r--   1 user1     user1     100004036 Apr 25 07:05 log.03
-rw-r--r--   1 user1     user1     100001128 Apr 25 10:09 log.02
-rw-r--r--   1 user1     user1     100002646 Apr 25 14:53 log.01
-rw-r--r--   1 user1     user1     37367279 Apr 25 15:59 log

I f I run your code, I only get the follwoing:
Code:
find log* -type f -mtime 1 -exec echo tar -rf $tarfile {} +
tar -rf log.10 log.11 log.12 log.13 log.14 log.15 log.16

The code should return all the files with the time stamp of the previous day which are log.8-log-13.

Does the time aone matter here. My server is in CDT time zone.

Your help is very much appreciated

---------- Post updated at 11:17 AM ---------- Previous update was at 11:16 AM ----------

The application I use already rotate the logs files once they are reached 100 mb. I need to archive and tar up those logs files on a daily bases. The logadm is not useful in this case.
# 7  
Old 04-27-2014
Hmm yes, -mtime 1 is between 24 and 48 hours ago.
Run it at midnight! No problem if you intend to use cron.
--
The thread title is misleading. "rotation" should be "archiving".

Previous Thread | Next Thread
Test Your Knowledge in Computers #570
Difficulty: Medium
The C programming language allows you to pass a parameter to a function by providing its memory address instead of the value stored in it.
True or False?

10 More Discussions You Might Find Interesting

1. OS X (Apple)

Mavericks log rotation

In Mavericks, Apple has apparently moved control of log rotation to ASL. There's a 'ttl' value to determine how long log files will stick around for. I can compress them, change the way they're named, limit them by size, etc. But the one thing I cannot find is how to NOT keep one log file per... (0 Replies)
Discussion started by: jnojr
0 Replies

2. Solaris

Log rotation

Hi All! I seem to have a problem with log rotation, unless I am doing something wrong, I have type the following command for testing purposes to see if the -s option works but he did not: logadm -w /var/adm/messages -C 8 -c -s 512k -t '/var/adm/messages.$n' -z 1 the file is now at this... (7 Replies)
Discussion started by: fretagi
7 Replies

3. UNIX for Dummies Questions & Answers

Log Rotation

Hi Guys, Good morning, I just want to know and collect ideas on this one. Regarding rotation of logs as I've observed it's not consistently functioning. I have a server with 8 Partitions, each partition has a dedicated directory for the logs that is needed and I set it every 5mins (300secs) the... (1 Reply)
Discussion started by: rymnd_12345
1 Replies

4. Solaris

Log rotation, twice

hi folk, need advise regarding the log rotation, i have the logadm set at 30 2 * * * /usr/sbin/logadm so it supposed to rotate once per day, but now it rotated twice! but someone my log will rotate at 2:30 AM, but then another 2 hours later, it creates a new and rotate a new log again,... (2 Replies)
Discussion started by: dehetoxic
2 Replies

5. Solaris

Solaris log rotation

HI, What is log rotation in Solaris ? What are the essential steps to perform log rotation in Solaris? (1 Reply)
Discussion started by: Revathi@1
1 Replies

6. Shell Programming and Scripting

Log rotation issue with script

I have application which to the heavy stdout and I have diverted the stdout to log file. this log file is writing very heavily and we have a script which rotates the logs. logic for rotation is smthing like cp logfile logfile.1 cat /dev/null > logfile this logic was working fine till we... (3 Replies)
Discussion started by: navinmistry
3 Replies

7. Shell Programming and Scripting

Log rotation script

I have the below script to help with disk space cleanup that finds logs older than a specified number of days (say 10 days). I need it to grab "active" logs as well. Problem is an "active log" will not get archived unless I put in 0 days which I don't want to do, I need to leave the past 10 days,... (2 Replies)
Discussion started by: theninja
2 Replies

8. Shell Programming and Scripting

log rotation

Hello all. Due to some reason I can not use HUP to rotate needed log files. So I use the standard method: cp $file $file.1 cat /dev/null > $file But if Java application in this time writing the output to $file, in the beginning of it appears many "^@^@^@^@^@^@". How to avoid it? Or how... (6 Replies)
Discussion started by: mirusnet
6 Replies

9. HP-UX

Log rotation on HP-UX

Can anyone post a sample log rotate and archive configuration on HP-UX? I really don't know how to do that... :( (3 Replies)
Discussion started by: untamed
3 Replies

10. Shell Programming and Scripting

Log Rotation Tool/Script

Hello all Does anyone has an intersting script or a good freeware tool for log rotation that is good for Unix and Linux as well ? My thanks in advance (4 Replies)
Discussion started by: yelalouf
4 Replies

Featured Tech Videos