/ Forside / Teknologi / Operativsystemer / Linux / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Linux
#NavnPoint
o.v.n. 11177
peque 7911
dk 4814
e.c 2359
Uranus 1334
emesen 1334
stone47 1307
linuxrules 1214
Octon 1100
10  BjarneD 875
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

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



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


Søg
Reklame
Statistik
Spørgsmål : 177502
Tips : 31968
Nyheder : 719565
Indlæg : 6408531
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste