Page 1 of 1
was ist mit meiner Bash los ?
Posted: 2003-09-11 06:17
by mds
Seit meinem Webserverupdate Apache,Mysql;PHP und einge dazugehörige Libs ist bei mir einiges durcheinander, erst fehlten einigesymbolische Links, jetzt spinnt meine Bash. Wenn ich folgende Scripte als Cron laufenlasse
sript logkomp
Code: Select all
#! /bin/bash -e
for i in /is/www/htdocs/eigene/logs/*log
do
/is/cronsh/loghandler $i
done
apachectl restart
script loghandler
Code: Select all
#!/usr/bin/perl
$datei = @ARGV[0];
# Datum und Uhrzeit auslesen und abspeichern
$datum = `date "+%Y-%m-%d"`;
# Dateiname bilden: alter Name mit angehaengtem Datum
$nn1= $datei . "." . $datum;
# Log-Datei umbenennen
`mv $datei $nn1`;
# Umbenannten Log-Datei packen mit gzip
`gzip $nn1`;
bekomme ich folgende Fehlermeldung
Code: Select all
Ausgabe des Befehls /is/cronsh/logkomp ...
/bin/bash: -
: unrecognized option
ich habe die erweiterung -e versucht wegzulassen, dann sieht es so aus
Code: Select all
Ausgabe des Befehls /is/cronsh/logkomp ...
:
: unrecognized option
wer weiss Rat?
Sagt mir bitte nicht das ich meine Logfiles mit logrotate archivieren soll den Gedanken hatte ich selber schon in Erwägung gezogen, geht aber nicht da die Logfiles alle 2 Tage archviert werden sollen und nicht beim erreichen einer bestimmten Größe und wie gesagt,bis vor meinem Update gings auch noch, ...
Vorabschon mal DANKE
Gruß
Oliver
Re: was ist mit meiner Bash los ?
Posted: 2003-09-11 08:21
by captaincrunch
Warum eigentlich so kompliziert ? Ich hab dir das eben mal kurz passend umgeschrieben, kurz getestet, und es funktioniert :
Code: Select all
#!/bin/bash
LOGDIR=/is/www/htdocs/eigene/logs
for i in `ls $LOGDIR`
do
/bin/mv $LOGDIR/$i $LOGDIR/$i.`date "+%Y-%m-%d"`
/usr/bin/gzip $LOGDIR/$i.`date "+%Y-%m-%d"`
done
Vor allen Dingen musst du so nicht extra noch einen Perl-Prozess zusätzlich starten, wozu auch, wenn'S viel einfacher per Shell geht ? ;)
Ansonsten noch ein kleiner Tip : wenn du ein
-x hinten in der ersten Zeile setzt, veretzt du die Bash in einen (eingeschränkten) "Debug-Modus", in dem du recht genau sehen kannst, was die Shell da gerade so anstellt.
Re: was ist mit meiner Bash los ?
Posted: 2003-09-11 17:43
by mds
Erstmal herzlichen Dank für die schnelle Antwort !
Leider trifft das Script von dir nicht so ganz zu, ...
In diesem Verzeichnis befinden sich sowohl die Logdateien als auch die gezippten Files, es soll nur das was die Endung "_log" hat archiviert werden.
Was ich nicht verstehe, wie kann es sein,das diese Sripte nicht mehr ordnungsgemäss ausgeführt werden?
Ach ja, wenn ich für die Bash die Option -x anhänge, bekomme ich wieder die Fehlermeldung wie ich sie schon beschrieben habe.
Für gute Ratschläge schon vorab herzlichen Dank
Gruß Oliver
Re: was ist mit meiner Bash los ?
Posted: 2003-09-11 18:48
by coolsurfer
Hi,
geht aber nicht da die Logfiles alle 2 Tage archviert werden sollen
sorry, aber auch das geht mit logrotate (zumindest ab suse 8.x) :-)
coolsurfer
Re: was ist mit meiner Bash los ?
Posted: 2003-09-11 19:51
by mds
Ã?hnliches habe ich auch gerade rausgefunden,...
Code: Select all
NAME
rotatelogs - rotate Apache logs without having to kill the
server
SYNOPSIS
rotatelogs logfile rotationtime [offset]
DESCRIPTION
rotatelogs is a simple program for use in conjunction with
Apache's piped logfile feature which can be used like
this:
TransferLog "| rotatelogs /path/to/logs/access_log
86400"
This creates the files /path/to/logs/access_log.nnnn where
nnnn is the system time at which the log nominally starts
(this time will always be a multiple of the rotation time,
so you can synchronize cron scripts with it). At the end
of each rotation time (here after 24 hours) a new log is
started.
jetzt stellt sich allerdings die Frage wo soll das hin ?
in die httpd.conf ?
wohin dort ?
Re: was ist mit meiner Bash los ?
Posted: 2003-09-11 21:02
by captaincrunch
In diesem Verzeichnis befinden sich sowohl die Logdateien als auch die gezippten Files, es soll nur das was die Endung "_log" hat archiviert werden.
Wo ist da das Problem ?
Code: Select all
#!/bin/bash
LOGDIR=/is/www/htdocs/eigene/logs
for i in `ls $LOGDIR/*log`
do
/bin/mv $LOGDIR/$i $LOGDIR/$i.`date "+%Y-%m-%d"`
/usr/bin/gzip $LOGDIR/$i.`date "+%Y-%m-%d"`
done
Re: was ist mit meiner Bash los ?
Posted: 2003-09-12 07:31
by mds
Ich bekomme immer eine Fehlermeldung,....
Code: Select all
> /is/cronsh/logkomp
:
: No such file or directory
kann es sein das die Bash ein bisschen spinnt ?
Die Dateirechte passen auf jedenfall.
Re: was ist mit meiner Bash los ?
Posted: 2003-09-12 08:02
by captaincrunch
Dann hast du irgendwo im Script Sonderzeichen (z.B. ":") drin. Mach das ganze mal per Cut'n'Paste, dann wird's auch gehen. Ansonsten poste das aktuelle Script (bitte per Cut'n'Paste)
Re: was ist mit meiner Bash los ?
Posted: 2003-09-12 11:47
by mds
Danke das war es, manchmal ist das fast so als hätte man ein Bret vor dem Kopf, ... ;-(
Durch das Cut and Paste war an den Zeilenenden ein Leerzeichen, das wird wohl die Probleme verursacht haben, hat mich ja nur ein paar Stunden Nerven gekostet was solls ;-)
Nochmal DANKE an alle die mit Rat und Tat dabei waren
Re: was ist mit meiner Bash los ?
Posted: 2003-09-15 11:43
by mds
Noch eine kurze Infofür alle die es Interessiert, ...
das war der vorgeschlagene Code
Code: Select all
#!/bin/bash
LOGDIR=/is/www/htdocs/eigene/logs
for i in `ls $LOGDIR/*log`
do
/bin/mv $LOGDIR/$i $LOGDIR/$i.`date "+%Y-%m-%d"`
/usr/bin/gzip $LOGDIR/$i.`date "+%Y-%m-%d"`
done
Der muss allerdings ein wenig verändert werden, ...
(für 'mv' und 'gzip' kann man sich in der Regel die absoluten Pfade schenken)
Hier der veränderte Code, in der vorhergehenden Fassung wird beim Umbenennen und Packen der Pfad doppelt übergeben.
Code: Select all
#!/bin/bash
LOGDIR=/pfad zum /logverzeichnis
for i in `ls $LOGDIR/*log`
do
/bin/mv $i $i.`date "+%Y-%m-%d"`
/usr/bin/gzip $i.`date "+%Y-%m-%d"`
done
Gruß Oliver