Ok I am almost there, only two issues left I think...
1. $PIDFILE format not correct for Perl? Currently commented out because it bombed.
2. Not picking up the logfile names....see output (print $map does not pick up the lognames) I did move the script into the log directory where the logs reside.
Code:
#!/usr/local/bin/perl
use warnings;
# $PIDFILE=`ps -aefx | grep logrot | grep -v grep |awk '{print $2}'`;
$LOGPATH='/home/logs'; # Location of Log files
$ARCHIVE_DIR='/home/log_archive/logs'; # Location of archived logs
$MONTH=`date +%m`; # Current Month
$DAY=`date +%d`; # Current Day of month
$MAXCYCLE='2'; # Number of days to keep log files
$GZIP='/usr/contrib/bin/gzip'; # Location of gzip for compression
$TAR='/usr/bin/tar'; # Location of tar command
@LOGNAMES=map {glob($_) } {'fin*.log*','*twiz*.log*','nestl*','riesen*'};
%ARCHIVE=('*.$MONTH.*'=>1);
# print "$PIDFILE\n";
chdir $LOGPATH; # Change to the log directory
printf "$LOGPATH\n";
print "$map";
foreach $filename (@LOGNAMES) {
my $oldest = "$filename.$MAXCYCLE";
printf "$filename\n";
print "DEBUG: oldest is '$oldest'\n";
archive($oldest) if -e $oldest and $ARCHIVE{$filename};
print "DEBUG: '$oldest' exists\n" if -e $oldest;
print "DEBUG: ARCHIVE{'$filename'} is true\n" if $ARCHIVE{$filename};
print "DEBUG: would archive oldest\n" if -e $oldest and $ARCHIVE{$filename};
for (my $s=$MAXCYCLE; $s >= 0; $s-- ) {
print "DEBUG: s is $s\n";
$oldname = $s ? "$filename.$s" : $filename;
$newname = join(".",$filename,$s+1);
print "DEBUG: oldname now '$oldname', newname is '$newname'\n";
print "DEBUG: would rename '$oldname' to '$newname'\n" if -e $oldname;
rename $oldname,$newname if -e $oldname;
}
}
#kill 'HUP',`cat $PIDFILE`;
sub archive {
my $f = shift;
my $base = $f;
$base =~ s/\.\d+$//;
my $fn = strftime("$base.%Y-%m-%d_%H:%M.gz.idea",localtime);
system "$GZIP -9 -c $f | $GZIP $map > $fn";
system "$TAR rvf $base.tar --remove-files $fn";
}
printf "$LOGPATH\n";
printf "$ARCHIVE_DIR\n";
printf $MONTH;
printf $DAY;
printf "$MAXCYCLE\n";
printf "$GZIP\n";
printf "$TAR\n"
here is the output of above code
/home/logs
Use of uninitialized value in concatenation (.) or string at ./logrotate.pl line 19. (line 19 = print "$map"
HASH(0x40010f78)
DEBUG: oldest is 'HASH(0x40010f78).2'
DEBUG: s is 2
DEBUG: oldname now 'HASH(0x40010f78).2', newname is 'HASH(0x40010f78).3'
DEBUG: s is 1
DEBUG: oldname now 'HASH(0x40010f78).1', newname is 'HASH(0x40010f78).2'
DEBUG: s is 0
DEBUG: oldname now 'HASH(0x40010f78)', newname is 'HASH(0x40010f78).1'
/home//logs
/home/log_archive/ogs
03
20
2
/usr/contrib/bin/gzip
/usr/bin/tar
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)
Hello All,
I am learning unix and basically I want to rotate one of my application logs every 1 hour. I need to rotate that file every one hour. I looked in the forums and googled.. but couldn;t get proper information. Requesting you all to kindly guide me.
Our application is running on... (4 Replies)
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)
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)
Hi all,
I am developing a log parsing agent in perl to send windows Event logs to Zenoss Monitoring tool. Using Win32::EventLog i can able to get the Event messages but only one Eventype eg Application or System could able to parse at a time. Can you please help to how to open mutiple eventlogs... (3 Replies)
I have few solaris-10 non global zones, where one application is writing some logs to /var/ovd/ConfigLogs. It keeps increasing all the time, as it is needed by application team as of now. I want a small script, which I can configure in cronjob, which should :
- Run every Saturday 10 PM
- Copy... (5 Replies)
My problem: Both access and error logs do not rotate any more and get really large.
They are located here: /srv/www/+vHost name here+/logs/
Configuration seems to be here:
/etc/logrotate.conf => looks OK, including "size 10M" to avoid large files
(/etc/logrotate.d => is empty)
manually... (4 Replies)
Appreciate help for the below issue.
Im using below code.....I dont want to attach the logs when I ran the perl twice...I just want to take backup with today date and generate new logs...What I need to do for the below scirpt..............
1)if logs exist it should move the logs with extention... (1 Reply)
Discussion started by: Sanjeev G
1 Replies
LEARN ABOUT HPUX
vos_rename
VOS_RENAME(1) AFS Command Reference VOS_RENAME(1)NAME
vos_rename - Renames a volume
SYNOPSIS
vos rename -oldname <old volume name>
-newname <new volume name>
[-cell <cell name>]
[-noauth] [-localauth]
[-verbose] [-encrypt] [-noresolve] [-help]
vos ren -o <old volume name>
-ne <new volume name>
[-c <cell name>] [-noa] [-l] [-v] [-e] [-nor] [-h]
DESCRIPTION
The vos rename command changes the name of the read/write volume specified with the -oldname argument to the name specified with the
-newname argument. The names of the read/write's read-only copies and backup copy, if any, change automatically to match.
After issuing this command, remember to correct any mount points that refer to the old volume name, by removing the old mount point with
the fs rmmount command and creating a new one with the fs mkmount command.
OPTIONS -oldname <old volume name>
Is the current name of the read/write volume.
-newname <new volume name>
Is the desired new name for the volume.
-cell <cell name>
Names the cell in which to run the command. Do not combine this argument with the -localauth flag. For more details, see vos(1).
-noauth
Assigns the unprivileged identity "anonymous" to the issuer. Do not combine this flag with the -localauth flag. For more details, see
vos(1).
-localauth
Constructs a server ticket using a key from the local /etc/openafs/server/KeyFile file. The vos command interpreter presents it to the
Volume Server and Volume Location Server during mutual authentication. Do not combine this flag with the -cell argument or -noauth
flag. For more details, see vos(1).
-verbose
Produces on the standard output stream a detailed trace of the command's execution. If this argument is omitted, only warnings and
error messages appear.
-encrypt
Encrypts the command so that the operation's results are not transmitted across the network in clear text. This option is available in
OpenAFS versions 1.4.11 or later and 1.5.60 or later.
-noresolve
Shows all servers as IP addresses instead of the DNS name. This is very useful when the server address is registered as 127.0.0.1 or
when dealing with multi-homed servers. This option is available in OpenAFS versions 1.4.8 or later and 1.5.35 or later.
-help
Prints the online help for this command. All other valid options are ignored.
OUTPUT
The vos rename command produces no output if the command succeeds.
If the volume named by the -oldname argument does not exist, the following message appears:
vos: Could not find entry for volume <old volume name>.
EXAMPLES
The following example changes the mistaken volume name "sun4x_56.afsws" to the correct alternative "sun4x_56.usr.afsws".
% vos rename -oldname sun4x_56.afsws -newname sun4x_56.usr.afsws
PRIVILEGE REQUIRED
The issuer must be listed in the /etc/openafs/server/UserList file on the machine specified with the -server argument and on each database
server machine. If the -localauth flag is included, the issuer must instead be logged on to a server machine as the local superuser "root".
SEE ALSO vos(1)COPYRIGHT
IBM Corporation 2000. <http://www.ibm.com/> All Rights Reserved.
This documentation is covered by the IBM Public License Version 1.0. It was converted from HTML to POD by software written by Chas
Williams and Russ Allbery, based on work by Alf Wachsmann and Elizabeth Cassell.
OpenAFS 2012-03-26 VOS_RENAME(1)