was ist mit meiner Bash los ?

Bash, Shell, PHP, Python, Perl, CGI
mds
Posts: 15
Joined: 2002-10-18 16:15
Location: Bielefeld

was ist mit meiner Bash los ?

Post 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
captaincrunch
Userprojekt
Userprojekt
Posts: 7066
Joined: 2002-10-09 14:30
Location: Dorsten

Re: was ist mit meiner Bash los ?

Post 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.
DebianHowTo
echo "[q]sa[ln0=aln256%Pln256/snlbx]sb729901041524823122snlbxq"|dc
mds
Posts: 15
Joined: 2002-10-18 16:15
Location: Bielefeld

Re: was ist mit meiner Bash los ?

Post 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
coolsurfer
Posts: 61
Joined: 2002-05-01 18:16

Re: was ist mit meiner Bash los ?

Post 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
Last edited by coolsurfer on 2003-09-11 20:52, edited 1 time in total.
mds
Posts: 15
Joined: 2002-10-18 16:15
Location: Bielefeld

Re: was ist mit meiner Bash los ?

Post 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 ?
captaincrunch
Userprojekt
Userprojekt
Posts: 7066
Joined: 2002-10-09 14:30
Location: Dorsten

Re: was ist mit meiner Bash los ?

Post 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 
DebianHowTo
echo "[q]sa[ln0=aln256%Pln256/snlbx]sb729901041524823122snlbxq"|dc
mds
Posts: 15
Joined: 2002-10-18 16:15
Location: Bielefeld

Re: was ist mit meiner Bash los ?

Post 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.
captaincrunch
Userprojekt
Userprojekt
Posts: 7066
Joined: 2002-10-09 14:30
Location: Dorsten

Re: was ist mit meiner Bash los ?

Post 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)
DebianHowTo
echo "[q]sa[ln0=aln256%Pln256/snlbx]sb729901041524823122snlbxq"|dc
mds
Posts: 15
Joined: 2002-10-18 16:15
Location: Bielefeld

Re: was ist mit meiner Bash los ?

Post 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
mds
Posts: 15
Joined: 2002-10-18 16:15
Location: Bielefeld

Re: was ist mit meiner Bash los ?

Post 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