Visit Our UNIX and Linux User Community


Rotate log files


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Rotate log files
# 1  
Old 07-30-2009
Rotate log files

I have a big log,separated by the character:,
one of the fields is the date in the format "day / month / year"
and I need to remove the lines prior to 30 days. Can help me?
# 2  
Old 07-30-2009
Post an example of the input, desired output and use CODE-tags (might want to use the #-button in the edit bar up there) when doing so, ty.
# 3  
Old 07-30-2009
A example, input is:

Code:
prueba|20/05/2009|00:00:02|NODO_STATUS|UP|

I need to delete the file from the previous one month. If today is day July 30, I need to delete the entries prior to June 30

Thanks,

Last edited by zaxxon; 07-30-2009 at 08:09 AM.. Reason: code tags...
# 4  
Old 07-30-2009
I asked you to use code tags and explained how to do. Next time use them please. If you don't understand what I am talking about, please say so.

That excerpt is very short but I think I got it. Maybe it's easier to use something like "ranges" in sed or awk if you take over the part of looking up where the 30 days ago start, so you can skip calculating the last 30 days. Example:

Input
Code:
prueba|14/03/2009|00:00:02|NODO_STATUS|UP|
prueba|21/03/2009|00:00:02|NODO_STATUS|UP|
prueba|05/04/2009|00:00:02|NODO_STATUS|UP|
prueba|23/04/2009|00:00:02|NODO_STATUS|UP|
prueba|02/05/2009|00:00:02|NODO_STATUS|UP|
prueba|11/05/2009|00:00:02|NODO_STATUS|UP|
prueba|11/05/2009|00:00:02|NODO_STATUS|UP|
prueba|20/05/2009|00:00:02|NODO_STATUS|UP|

Cmd and output
Code:
$> sed '/23\/04\/2009/,/20\/05\/2009/!d' infile
prueba|23/04/2009|00:00:02|NODO_STATUS|UP|
prueba|02/05/2009|00:00:02|NODO_STATUS|UP|
prueba|11/05/2009|00:00:02|NODO_STATUS|UP|
prueba|11/05/2009|00:00:02|NODO_STATUS|UP|
prueba|20/05/2009|00:00:02|NODO_STATUS|UP|

# 5  
Old 07-30-2009
if you work with solaris (9 and later), there is a tool called "logadm" to deal with logfiles...
# 6  
Old 07-30-2009
He posted no filename but a line from a file as it seams. Still he talks about files - not sure what he wants tbh.
If it is for files there might also be the command logrotate on your box.
# 7  
Old 07-30-2009
With gawk you can do something like that :
Code:
awk -v Keep=30 -F'|' '

function stime(date   ,d,mdate) {
   split(date, d, "/");
   mdate = d[3] " " d[2] " " d[1] " 00 00 00";
   return mktime(mdate);
}

BEGIN {
   secs_in_day   = 24 * 3600;
   current_stime = systime();
   today_date    = strftime("%d/%m/%Y", current_stime);
   today_stime   = stime(today_date);
   limit_stime   = today_stime - Keep * secs_in_day;
   limit_date    = strftime("%d/%m/%Y", limit_stime);

   print "debug - Today is",today_date;
   print "debug - Keep",Keep,"days";
   print "debug - Keep datas from",limit_date,"included";

}

stime($2) >= limit_stime
' inputfile

Inputfile:
Code:
prueba|23/04/2009|00:00:02|NODO_STATUS|UP|
prueba|02/05/2009|00:00:02|NODO_STATUS|UP|
prueba|11/05/2009|00:00:02|NODO_STATUS|UP|
prueba|11/05/2009|00:00:02|NODO_STATUS|UP|
prueba|20/05/2009|00:00:02|NODO_STATUS|UP|
prueba|20/06/2009|00:00:02|NODO_STATUS|UP|
prueba|21/06/2009|00:00:02|NODO_STATUS|UP|
prueba|29/06/2009|00:00:02|NODO_STATUS|UP|
prueba|30/06/2009|00:00:02|NODO_STATUS|UP|
prueba|31/06/2009|00:00:02|NODO_STATUS|UP|
prueba|01/07/2009|00:00:02|NODO_STATUS|UP|
prueba|08/07/2009|00:00:02|NODO_STATUS|UP|

Output:
Code:
debug - Today is 30/07/2009
debug - Keep 30 days
debug - Keep datas from 30/06/2009 included
prueba|30/06/2009|00:00:02|NODO_STATUS|UP|
prueba|31/06/2009|00:00:02|NODO_STATUS|UP|
prueba|01/07/2009|00:00:02|NODO_STATUS|UP|
prueba|08/07/2009|00:00:02|NODO_STATUS|UP|

Jean-Pierre.

Previous Thread | Next Thread
Test Your Knowledge in Computers #926
Difficulty: Medium
On 05:20:00 UTC on Saturday, 24 January 2065, the Unix time value will equal 4000000000 seconds.
True or False?

10 More Discussions You Might Find Interesting

1. Red Hat

Apache log rotate configuration

HI i was trying to configure logrotate for my apache server and it's not working properly. Os: Red Hat 6 here is my lodrotate configuration /var/log/httpd/*log { daily missingok notifempty sharedscripts compress delaycompress postrotate ... (3 Replies)
Discussion started by: bentech4u
3 Replies

2. UNIX for Advanced & Expert Users

Apache log rotate configuration

HI i was trying to configure logrotate for my apache server and it's not working properly. here is my lodrotate configuration /var/log/httpd/*log { daily missingok notifempty sharedscripts compress delaycompress postrotate /sbin/service httpd... (1 Reply)
Discussion started by: bentech4u
1 Replies

3. Shell Programming and Scripting

Log rotate

Hi, I have below script in logrotate.d to rotate logs. logs are not rotating after the file grow to 1k, do you have any idea? Is it because of it just only 1K? Please let me know if the below syntax is in correct. # more trotate /sourcepath/*/servers/*/logs/*log... (2 Replies)
Discussion started by: lpprasad321
2 Replies

4. UNIX for Dummies Questions & Answers

How to rotate the log messages?

Hi, i want to log rotate the /var/adm/messages file after reaching the specified limit and delete those logs. how do i do that. i you solaris 10 OS ,Please help me in doing the same.... (2 Replies)
Discussion started by: Rahulne25
2 Replies

5. Shell Programming and Scripting

Script to rotate file log

Hi Experts, I have script on crontab and give output quite large. I would like to know how to create rotate log when the size of log maximum 50MB if the test.log is 50MB then create test.0 Thanks Edy (2 Replies)
Discussion started by: edydsuranta
2 Replies

6. Shell Programming and Scripting

Help with a rotate log script

Hi all, Am trying to write my own log rotate script. Curremtly, what I have is as below: #!/bin/ksh file_to_rotate=${1} x=${2} while ] do let curr=${x} let prev=${x}-1 if ] ; then #echo "cp -p ${file_to_rotate} ${file_to_rotate}.${curr}" cp -p... (7 Replies)
Discussion started by: newbie_01
7 Replies

7. Shell Programming and Scripting

cron script to rotate log files

I have a mac server. I have been having problems with my logs. My hard disk became full, when i researched into why it was full it was due to massive log files. There was barley any log rotation policies in place on the server. I tired to use logrotate. This doesn't work on my server. It is a MAC... (19 Replies)
Discussion started by: timgolding
19 Replies

8. Shell Programming and Scripting

Script for Log Rotate

Hello, I only know the basic for shell programing. I need help for this, I thinks this is a basic for anyone who know a litle of shell scripting. I need creat a script for a rotatate logs, when a filesystem is full. I have a filesystem. The rotate consist in zip the current log (copy) and... (1 Reply)
Discussion started by: El Rengo
1 Replies

9. UNIX for Advanced & Expert Users

log rotate

hi , what is the meaning of log rotate? how do i rotate /var/adm/wtmps log and gzip it? (6 Replies)
Discussion started by: cromohawk
6 Replies

10. Shell Programming and Scripting

how to rotate log files

hi friends i need a shell script to rotate the logs in a directory, dated n days back. can anybody of help. appreciate.. (0 Replies)
Discussion started by: satya_skm
0 Replies

Featured Tech Videos