cron script to rotate log files


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting cron script to rotate log files
# 15  
Old 04-14-2009
Hi since the commands below. Outputs as follows

Code:
WebServer:/ timgolding$ cd /var/run
WebServer:/var/run timgolding$ sudo grep "39" *
grep: asl_input: Operation not supported on socket
grep: cupsd: Operation not supported on socket
grep: mDNSResponder: Operation not supported on socket
grep: portmap.socket: Operation not supported on socket
grep: pppconfd: Operation not supported on socket
grep: syslog: Operation not supported on socket
syslog.pid:39

I assume my original script

Code:
if [ -f /var/run/syslog.pid ]; then kill -HUP $(cat /var/run/syslog.pid | head -1); fi

is already doing what's required? If so onto the next log file Smilie
# 16  
Old 04-14-2009
Correct. /private/var/log/asl.log is written by syslogd (the system logging daemon), and the above line already tells it to reload. Also, most open source daemons I know react like this to SIGHUP, just check the man page for any mentioning of "GNU" or alike.

If I remember correctly you can pass more than one filename to lsof, so you can quickly eliminate all logs managed by syslog.
# 17  
Old 04-14-2009
Ah OK well thanks a lot for all your help. You've been very helpful Smilie I think i can use this information for the rest tomorrow. bye bye
# 18  
Old 04-15-2009
Well that took some time. Here is my final script i have come up with. Hope it's ok

Code:
echo ""
# Log rotations modded to hell by Tim Golding
printf %s "Rotating log files:"
cd /var/log
# Add new logs to this list
for i in asl.log servermgrd.log crashreporter.log ftp.log lookupd.log lpr.log mail.log netinfo.log hwmond.log ipfw.log secure.log; do
    if [ -f "${i}" ]; then
    if [ "crashreporter.log" == "${i}" ] && !(lsof "${i}") || [ "crashrepoter.log" != "${i}" ]; then
        file_size=`ls -l "${i}"| awk '{printf "%s",$5}'`
        max=2097152
        if [ $file_size -gt $max ]; then
                ch_mod=`ls -l "${i}"| awk '{k=0;for(i=0;i<=8;i++)k+=((substr($1,i+2,1)~/[rwx]/)*2^(8-i));if(k)printf("%0o ",k);print}'| awk '{printf "%s",$1}'`
                this_group=`ls -l "${i}"| awk '{printf "%s",$3}'`
                this_user=`ls -l "${i}"| awk '{printf "%s",$4}'`
                printf %s " $i"
                if [ -x /usr/bin/gzip ]; then gzext=".gz"; else gzext=""; fi
                if [ -f "${i}.3${gzext}" ]; then mv -f "${i}.3${gzext}" "${i}.4${gzext}"; fi
                if [ -f "${i}.2${gzext}" ]; then mv -f "${i}.2${gzext}" "${i}.3${gzext}"; fi
                if [ -f "${i}.1${gzext}" ]; then mv -f "${i}.1${gzext}" "${i}.2${gzext}"; fi
                if [ -f "${i}.0${gzext}" ]; then mv -f "${i}.0${gzext}" "${i}.1${gzext}"; fi
                if [ -f "${i}" ]; then mv -f "${i}" "${i}.0" && if [ -x /usr/bin/gzip ]; then gzip -9 "${i}.0"; fi; fi
                touch "${i}" && chmod "${ch_mod}" "${i}" && chown "${this_group}":"${this_user}" "${i}"
        fi
    fi
 fi
done
if [ -f /var/run/servermgrd.pid ]; then kill -HUP $(cat /var/run/servermgrd.pid | head -1); fi
if [ -f /var/run/syslog.pid ]; then kill -HUP $(cat /var/run/syslog.pid | head -1); fi
echo ""

I took some of the logs out of the loop and will monitor those manually for the time being. I kept some in and crashreporter i kept but i made a rule to only rotate it if its not being used. My logic being if there's a crash being reported i don't really want to be stopping the process. I took weekly.out, monthly.out and daily.out because i figured that this script that is called weekly, when it is running maybe will be the time weekly.out is being written to plus in a config file somewhere that had weekly.out set a log file path it had a config line saying that log clean is enabled. So I'm hoping that they are already being taken care of.
The other ones i left in are being handled by servermgrd or syslog which are safe and easy to restart. My only concerns now are still what weekly_out.log was and the rysnc_backup.log that is 643kb so ideally wouldn't mind rotating but couldn't find much info about. Well i'll just see how this goes for now.

Thanks alot for all your help. Smilie
# 19  
Old 04-16-2009
hi,

There is syntax error in the line

ch_mod=`ls -l "${i}"| awk '{k=0;for(i=0;i<=8;i++)k+=((substr($1,i+2,1)~/[rwx]/)*2^(8-i));if(k)printf("%0o ",k);print}'| awk '{printf "%s",$1}'`

which affects the write permission to the file.
# 20  
Old 04-17-2009
Quote:
Originally Posted by abinaya
hi,

There is syntax error in the line

ch_mod=`ls -l "${i}"| awk '{k=0;for(i=0;i<=8;i++)k+=((substr($1,i+2,1)~/[rwx]/)*2^(8-i));if(k)printf("%0o ",k);print}'| awk '{printf "%s",$1}'`

which affects the write permission to the file.
I'm not getting a syntax error it returns the permissions for a file. I just tested it and it returned 644 for a file that has permissions 644. could you tell me what that error is?
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. 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

2. 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

3. 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

4. Shell Programming and Scripting

"Customized" log rotate script - some advice please

Hi, Am trying to write my own version of a log rotate scripts 'coz I don't have the logrotate for other flavors of *nix servers. Probably should try and download the source and re-compile but our SA don't want to do so. Anyway, just want to know if there is any way to improve on the code... (0 Replies)
Discussion started by: newbie_01
0 Replies

5. Shell Programming and Scripting

Rotate log everyday on existing script

quick question: I have a current script that will put the output on a log file. See snapshot of the code below. I wanted this to be rotated everyday based on date. So if anyone execute the script today there will be a filecreated such as sys.log.(datetoday), if tomorrow it would be... (1 Reply)
Discussion started by: lhareigh890
1 Replies

6. Shell Programming and Scripting

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? (7 Replies)
Discussion started by: msanbrug
7 Replies

7. 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

8. 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

9. 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

10. HP-UX

Check size and rotate log script.

Hi Can you suggest some perl script. My OS is HP-UX 11.11 I want to it into a cron job. Every night it will backup the file with that day's date and open a dummy file. Thanks Ash (3 Replies)
Discussion started by: ashishT
3 Replies
Login or Register to Ask a Question