|
| Brug af tee og append til filer Fra : Joe Doe |
Dato : 18-08-04 22:02 |
|
Jeg køre følgende fiktive kommando: "cat getsbig.txt | tee -a
/var/log/appended_text.log". Det er en process der køre konstant og
getsbig.txt bliver hele tiden større og større. Jeg har så opsat min syslog
til at lave en ny appended_text.log fil, når filen bliver større end 1MB,
men det eneste der sker er, at den ganske fint laver en ny logfil og omdøber
den gamle til appended_text.log.0, men der kommer ikke data i den nye
logfil?
Jeg går ud fra, at det er tee, der ikke kan appende til filen længere, fordi
den har fået et nyt navn (appended_text.log.0), men hvordan løser man det?
| |
Stig H. Jacobsen (18-08-2004)
| Kommentar Fra : Stig H. Jacobsen |
Dato : 18-08-04 22:09 |
|
On Wed, 18 Aug 2004 23:02:26 +0200, Joe Doe wrote:
> Jeg går ud fra, at det er tee, der ikke kan appende til filen længere, fordi
> den har fået et nyt navn (appended_text.log.0), men hvordan løser man det?
Hvis du lukker og genåbner filen, så går den i gang med at skrive
til den nye fil.
--
Stig
(remove the 'no's to send me mail)
| |
Thorbjoern Ravn Ande~ (18-08-2004)
| Kommentar Fra : Thorbjoern Ravn Ande~ |
Dato : 18-08-04 22:09 |
|
"Joe Doe" <nowhere@invalid.xyz> writes:
> Jeg køre følgende fiktive kommando: "cat getsbig.txt | tee -a
> /var/log/appended_text.log". Det er en process der køre konstant og
> getsbig.txt bliver hele tiden større og større. Jeg har så opsat min syslog
> til at lave en ny appended_text.log fil, når filen bliver større end 1MB,
> men det eneste der sker er, at den ganske fint laver en ny logfil og omdøber
> den gamle til appended_text.log.0, men der kommer ikke data i den nye
> logfil?
>
> Jeg går ud fra, at det er tee, der ikke kan appende til filen længere, fordi
> den har fået et nyt navn (appended_text.log.0), men hvordan løser man det?
Når først tee har åbnet filen for skrivning, bruges navnet ikke mere
i processen med at skrive, og du kan sagtens omdøbe filen uden at det
påvirker processen, som du selv har opdaget.
For at få den virkning du ønsker, er det nødvendigt at den skrivende
process lukker filen, og åbner den igen.
Du skal nok bruge et decideret loggeværktøj (som fx syslog?) istedet
for tee, hvis du gerne vil have mere styr over det. Alternativt kan
du lave en stump perlkode som smider ud i filer og håndterer hvis der
kommer for megt.
--
Thorbjørn Ravn Andersen
http://unixsnedkeren.dk - Unix, Java, Web, Netværk, Århus
| |
Joe Doe (18-08-2004)
| Kommentar Fra : Joe Doe |
Dato : 18-08-04 22:22 |
|
> > Jeg køre følgende fiktive kommando: "cat getsbig.txt | tee -a
> > /var/log/appended_text.log". Det er en process der køre konstant og
> > getsbig.txt bliver hele tiden større og større. Jeg har så opsat min
syslog
> > til at lave en ny appended_text.log fil, når filen bliver større end
1MB,
> > men det eneste der sker er, at den ganske fint laver en ny logfil og
omdøber
> > den gamle til appended_text.log.0, men der kommer ikke data i den nye
> > logfil?
>
> Når først tee har åbnet filen for skrivning, bruges navnet ikke mere
> i processen med at skrive, og du kan sagtens omdøbe filen uden at det
> påvirker processen, som du selv har opdaget.
Ja, den bliver ved med at appende til filen "appended_text.log.0" istedet
for til den nye "appended_text.log". Jeg ville jo hellere have, at den skrev
til den nye logfil.
Kan man evt. bruge andet end tee (uden selv at skulle programmere noget)?
| |
Lasse Hillerøe Peter~ (19-08-2004)
| Kommentar Fra : Lasse Hillerøe Peter~ |
Dato : 19-08-04 07:27 |
|
In article <4123c870$0$249$edfadb0f@dread11.news.tele.dk>,
"Joe Doe" <nowhere@invalid.xyz> wrote:
> Kan man evt. bruge andet end tee (uden selv at skulle programmere noget)?
Kommandoen "logger" skriver til syslog. Mon ikke den kan bruges. Du
skriver jo du bruger syslog til at rotere filen, så bør du vel også
bruge syslog til at skrive i den.
(Er din kommando for øvrigt ikke et tilfælde af "useless use of cat"? Og
hvad bruger du stdout fra tee til?)
-Lasse
| |
Joe Doe (19-08-2004)
| Kommentar Fra : Joe Doe |
Dato : 19-08-04 10:35 |
|
> > Kan man evt. bruge andet end tee (uden selv at skulle programmere
noget)?
>
> Kommandoen "logger" skriver til syslog. Mon ikke den kan bruges. Du
> skriver jo du bruger syslog til at rotere filen, så bør du vel også
> bruge syslog til at skrive i den.
Burde det så ikke bare være:
echo TEST | logger -f test.log
Det giver i hvert fald ikke en linie med "TEST" i filen test.log?
> (Er din kommando for øvrigt ikke et tilfælde af "useless use of cat"? Og
> hvad bruger du stdout fra tee til?)
Eksemplet er fiktivt - rent praktisk laver jeg logfilen ud fra STDOUT og
ikke ved at cat en fil. Men princippet må være det samme.
| |
Lasse Hillerøe Peter~ (19-08-2004)
| Kommentar Fra : Lasse Hillerøe Peter~ |
Dato : 19-08-04 14:14 |
|
In article <4124743b$0$155$edfadb0f@dread11.news.tele.dk>,
"Joe Doe" <nowhere@invalid.xyz> wrote:
> > > Kan man evt. bruge andet end tee (uden selv at skulle programmere
> noget)?
> >
> > Kommandoen "logger" skriver til syslog. Mon ikke den kan bruges. Du
> > skriver jo du bruger syslog til at rotere filen, så bør du vel også
> > bruge syslog til at skrive i den.
>
> Burde det så ikke bare være:
> echo TEST | logger -f test.log
>
> Det giver i hvert fald ikke en linie med "TEST" i filen test.log?
Nej, -f fil sender *indholdet* af filen fil til syslog. Du skrev jo selv
at du havde sat syslog op til at rotere din logfil. Du skal bruge -p for
at fortælle syslog hvad det er du logger, og så konfigurere syslog til
at sende det et sted hen.
Alternativt: se mit svar til Thorbjørn.
-Lasse
| |
Thorbjoern Ravn Ande~ (19-08-2004)
| Kommentar Fra : Thorbjoern Ravn Ande~ |
Dato : 19-08-04 07:49 |
|
"Joe Doe" <nowhere@invalid.xyz> writes:
> Ja, den bliver ved med at appende til filen "appended_text.log.0" istedet
> for til den nye "appended_text.log". Jeg ville jo hellere have, at den skrev
> til den nye logfil.
>
> Kan man evt. bruge andet end tee (uden selv at skulle programmere noget)?
Læste du det du klippede væk?
Hvem er du iøvrigt?
--
Thorbjørn Ravn Andersen
http://unixsnedkeren.dk - Unix, Java, Web, Netværk, Århus
| |
Lasse Hillerøe Peter~ (19-08-2004)
| Kommentar Fra : Lasse Hillerøe Peter~ |
Dato : 19-08-04 09:59 |
|
In article <yu21xi3tyfm.fsf@luhmann.netc.dk>,
Thorbjoern Ravn Andersen <nospam0000@c.dk> wrote:
> Hvem er du iøvrigt?
Det er vel sagen uvedkommende?
Ganske vist sætter jeg selv en ære i at være ikke-anonym, men jeg
respekterer på den anden side folks ret til at ønske at være det i
penible affærer.
Og i dette Microsoft-dominerede land er det vel ikke helt uforståeligt
at nogen mangler det nødvendige mod til at stå ved at de bruger Unix.
-Lasse
| |
Thorbjoern Ravn Ande~ (19-08-2004)
| Kommentar Fra : Thorbjoern Ravn Ande~ |
Dato : 19-08-04 11:55 |
|
"Lasse Hillerøe Petersen" <lhp+news@toft-hp.dk> writes:
> > Hvem er du iøvrigt?
>
> Det er vel sagen uvedkommende?
Ikke for mig.
--
Thorbjørn Ravn Andersen
http://unixsnedkeren.dk - Unix, Java, Web, Netværk, Århus
| |
Joe Doe (19-08-2004)
| Kommentar Fra : Joe Doe |
Dato : 19-08-04 10:40 |
|
> > Ja, den bliver ved med at appende til filen "appended_text.log.0"
istedet
> > for til den nye "appended_text.log". Jeg ville jo hellere have, at den
skrev
> > til den nye logfil.
> >
> > Kan man evt. bruge andet end tee (uden selv at skulle programmere
noget)?
>
> Læste du det du klippede væk?
?? Ja, det gjorde jeg jo nok, men jeg forstår ikke helt hvad du mener?
Tænker du på syslog? Den logger vel kun til systemlogs og ikke til en
selvdefineret fil?
> Hvem er du iøvrigt?
Som Lasse har skrevet - hvad kommer det sagen ved? Jeg forbeholder mig min
ret til at være anonym, fordi jeg ikke vil have at man kan søge på alle mine
indlæg igennem evig tid.
| |
Thorbjoern Ravn Ande~ (19-08-2004)
| Kommentar Fra : Thorbjoern Ravn Ande~ |
Dato : 19-08-04 11:58 |
|
"Joe Doe" <nowhere@invalid.xyz> writes:
> ?? Ja, det gjorde jeg jo nok, men jeg forstår ikke helt hvad du mener?
> Tænker du på syslog? Den logger vel kun til systemlogs og ikke til en
> selvdefineret fil?
Skriv et perlprogram der splitter input op i filer efter dine behov.
Lasse kan sikkert give dig noget tilsvarende med ksh+awk.
--
Thorbjørn Ravn Andersen
http://unixsnedkeren.dk - Unix, Java, Web, Netværk, Århus
| |
Lasse Hillerøe Peter~ (19-08-2004)
| Kommentar Fra : Lasse Hillerøe Peter~ |
Dato : 19-08-04 14:32 |
|
In article <yu2k6vvmm2k.fsf@luhmann.netc.dk>,
Thorbjoern Ravn Andersen <nospam0000@c.dk> wrote:
> "Joe Doe" <nowhere@invalid.xyz> writes:
>
> > ?? Ja, det gjorde jeg jo nok, men jeg forstår ikke helt hvad du mener?
> > Tænker du på syslog? Den logger vel kun til systemlogs og ikke til en
> > selvdefineret fil?
>
> Skriv et perlprogram der splitter input op i filer efter dine behov.
> Lasse kan sikkert give dig noget tilsvarende med ksh+awk.
Hvorfor blande awk ind i det?
#! /bin/ksh
echo $$ >rotlogger.pid ; logfile=$1 ; i=0
trap 'exec 4>&- ; echo rotating $logfile >&2 ; mv $logfile $logfile.$i
; i=$((i+1)) ; exec 4>$logfile' USR1
exec 4>$logfile
while read logline ; do
echo $logline >&4
done
Programmet læser logdata fra stdin og skriver på logfile (parameter fra
kommandolinien).
Hver gang kill -USR1 `cat rotlogger.pid` udføres, roteres logfile over i
logfile.$i og logfile genskrives som en ny fil.
(Testet med pdksh og ksh93 på NetBSD. Burde virke med Bash, skal
muligvis tilrettes for at fungere med /bin/sh.)
OK, Thorbjørn, scenen er sat for din tilsvarende, men meget flottere,
Perl one-liner.
-Lasse
| |
Thorbjoern Ravn Ande~ (19-08-2004)
| Kommentar Fra : Thorbjoern Ravn Ande~ |
Dato : 19-08-04 21:11 |
|
"Lasse Hillerøe Petersen" <lhp+news@toft-hp.dk> writes:
> OK, Thorbjørn, scenen er sat for din tilsvarende, men meget flottere,
> Perl one-liner.
Vil du ikke læse opgavebeskrivelsen igen først? Jeg mener ikke der er
noget kode der sender en HUP når filen bliver mere end 1Mb endnu.
--
Thorbjørn Ravn Andersen
http://unixsnedkeren.dk - Unix, Java, Web, Netværk, Århus
| |
Lasse Hillerøe Peter~ (19-08-2004)
| Kommentar Fra : Lasse Hillerøe Peter~ |
Dato : 19-08-04 22:05 |
|
In article <yu2k6vunb1f.fsf@luhmann.netc.dk>,
Thorbjoern Ravn Andersen <nospam0000@c.dk> wrote:
>
> Vil du ikke læse opgavebeskrivelsen igen først? Jeg mener ikke der er
> noget kode der sender en HUP når filen bliver mere end 1Mb endnu.
Næh, det har du da ret i. Men så put en test ind for det, som gør det
samme som signalhandleren. Alternativt kunne man ha et separat job til
at checke størrelsen af og til og sende signalet.
-Lasse
| |
Thorbjoern Ravn Ande~ (20-08-2004)
| Kommentar Fra : Thorbjoern Ravn Ande~ |
Dato : 20-08-04 06:37 |
|
"Lasse Hillerøe Petersen" <lhp+news@toft-hp.dk> writes:
> Næh, det har du da ret i. Men så put en test ind for det, som gør det
> samme som signalhandleren. Alternativt kunne man ha et separat job til
> at checke størrelsen af og til og sende signalet.
Tjah.
Hvis navnene iøvrigt er lidt ligemeget, kan "cat ...| split -b 1024
minlogfil" vel gøre det.
--
Thorbjørn Ravn Andersen
http://unixsnedkeren.dk - Unix, Java, Web, Netværk, Århus
| |
Lasse Hillerøe Peter~ (20-08-2004)
| Kommentar Fra : Lasse Hillerøe Peter~ |
Dato : 20-08-04 07:38 |
|
In article <yu21xi21ib7.fsf@luhmann.netc.dk>,
Thorbjoern Ravn Andersen <nospam0000@c.dk> wrote:
> Hvis navnene iøvrigt er lidt ligemeget, kan "cat ...| split -b 1024
> minlogfil" vel gøre det.
Det er det gode ved Unix, man kan altid lære noget nyt og der er altid
flere måder at gøre det på. Takker.
(En anden mulighed kunne måske også være at bruge dd til at læse i mit
script i stedet for read.)
-Lasse
| |
Kasper Dupont (24-08-2004)
| Kommentar Fra : Kasper Dupont |
Dato : 24-08-04 16:51 |
|
Joe Doe wrote:
>
> Jeg køre følgende fiktive kommando: "cat getsbig.txt | tee -a
> /var/log/appended_text.log". Det er en process der køre konstant og
> getsbig.txt bliver hele tiden større og større. Jeg har så opsat min syslog
> til at lave en ny appended_text.log fil, når filen bliver større end 1MB,
> men det eneste der sker er, at den ganske fint laver en ny logfil og omdøber
> den gamle til appended_text.log.0, men der kommer ikke data i den nye
> logfil?
>
> Jeg går ud fra, at det er tee, der ikke kan appende til filen længere, fordi
> den har fået et nyt navn (appended_text.log.0), men hvordan løser man det?
Kan det her bruges til noget?
http://www.google.com/groups?threadm=28c50361.0407071517.5304d23f%40posting.google.com
--
Kasper Dupont -- der bruger for meget tid paa usenet.
#define _(_)_"rdk"/* This is my real email address */
char _[]=_("kaspe")_("brics");_[7]='@';_[13]='.';puts(_);
| |
Joe Doe (25-08-2004)
| Kommentar Fra : Joe Doe |
Dato : 25-08-04 11:50 |
| | |
Kasper Dupont (25-08-2004)
| Kommentar Fra : Kasper Dupont |
Dato : 25-08-04 17:45 |
|
Joe Doe wrote:
>
> > Kan det her bruges til noget?
> >
> http://www.google.com/groups?threadm=28c50361.0407071517.5304d23f%40posting.google.com
>
> Måske, hvis jeg vidste hvordan man kompilerede den?
>
> "gcc filnavn" eller noget i den stil?
Ja, det burde virke. Google Groups er åbenbart ikke så
god til vedhæftede filer. For filnavnet og den tekst
jeg skrev er fuldstændigt forsvundet. Filen heder
rotate.c, og den kan compileres med:
gcc rotate.c
der genererer en executable med navnet a.out eller
f.eks.
gcc -Wall -W -Os -s rotate.c -o rotate
der slår en række warnings til optimere efter størelse
og kalder den resulterende executable rotate.
Og her er den tekst som Google Groups har smidt væk:
} Actually I wrote that yesterday, but the newsserver
} was down, so it got a bit delayed. Anyway, I did write
} a small program that can do more or less what you
} requested. I was written quite quickly, so probably
} there will be a lot of bugs to resolve. And if the
} loging program fails to write to the log, your program
} will probably die with SIGPIPE.
}
} You could call the program more or less like this:
} nohup rotate 100000000 command
--
Kasper Dupont -- der bruger for meget tid paa usenet.
#define _(_)_"rdk"/* This is my real email address */
char _[]=_("kaspe")_("brics");_[7]='@';_[13]='.';puts(_);
| |
Claus Alboege (25-08-2004)
| Kommentar Fra : Claus Alboege |
Dato : 25-08-04 12:35 |
|
Kasper Dupont <remove.invalid@nospam.lir.dk.invalid> writes:
> Joe Doe wrote:
>>
>> Jeg køre følgende fiktive kommando: "cat getsbig.txt | tee -a
>> /var/log/appended_text.log". Det er en process der køre konstant og
>> getsbig.txt bliver hele tiden større og større. Jeg har så opsat min syslog
>> til at lave en ny appended_text.log fil, når filen bliver større end 1MB,
>> men det eneste der sker er, at den ganske fint laver en ny logfil og omdøber
>> den gamle til appended_text.log.0, men der kommer ikke data i den nye
>> logfil?
>>
>> Jeg går ud fra, at det er tee, der ikke kan appende til filen længere, fordi
>> den har fået et nyt navn (appended_text.log.0), men hvordan løser man det?
>
> Kan det her bruges til noget?
> http://www.google.com/groups?threadm=28c50361.0407071517.5304d23f%40posting.google.com
Alternativt kunne multilog fra daemontools måske bruges?
http://cr.yp.to/daemontools/multilog.html
/Claus A
| |
Joe Doe (25-08-2004)
| Kommentar Fra : Joe Doe |
Dato : 25-08-04 13:54 |
|
> Alternativt kunne multilog fra daemontools måske bruges?
> http://cr.yp.to/daemontools/multilog.html
Hvis man kunne få multilog delen alene, uden alt det andet tingel tangel, så
var det måske en idé. Kan man evt. kompilere det éne program alene?
| |
Claus Alboege (25-08-2004)
| Kommentar Fra : Claus Alboege |
Dato : 25-08-04 14:11 |
|
"Joe Doe" <nowhere@invalid.xyz> writes:
>> Alternativt kunne multilog fra daemontools måske bruges?
>> http://cr.yp.to/daemontools/multilog.html
>
> Hvis man kunne få multilog delen alene, uden alt det andet tingel
> tangel, så var det måske en idé.
Daemontools er nu ikke så dum en værktøjskasse at have på sine systemer...
> Kan man evt. kompilere det éne program alene?
cd /tmp
wget http://cr.yp.to/daemontools/daemontools-0.76.tar.gz
tar zxf daemontools-0.76.tar.gz
cd admin/daemontools-0.76
package/compile
cp command/multilog /some/place/multilog
cd /tmp
rm -rf admin daemontools-0.76.tar.gz
/Claus A
| |
|
|