sslug-teknik team mailing list archive
-
sslug-teknik team
-
Mailing list archive
-
Message #83699
Re: Usædvanlig(?) omdirigering af uddata
Henrik Christian Grove skrev:
> Jeg har et program (faktisk flere, men det er ligegyldigt) der
> producerer en del uddata på stdout og også lidt på stderr.
>
> Jeg vil gerne kunne se det der kommer på stderr, men jeg vil
> samtidig gerne have begge dele ned i én fil, så jeg, hvis det bliver
> nødvendigt, kan komme til at se hvad der er sket på stdout lige op
> til fejlen (som rapporteres på stderr. Det betyder så også at begge
> dele skal skrives ned i filen løbende, så det er ikke godt nok at
> sende stdout til en fil og stderr til en anden og så sætte dem
> sammen bagefter.
Jeg satte mig og eksperimenterede lidt (i stedet for at kode et
rangordningsændringsberegningsprogram) med dit problem. Følgende ser
ud til at løse opgaven:
mkfifo log.pipe
cat log.pipe >> log &
(./rod 1>log.pipe) 2>&1 | tee log.pipe
hvor `./rod` er et program jeg skrev for at generere blandede uddata
til »stdout« og »stderr«:
#! /bin/bash
for count in $(seq 1 10); do
sleep 1
echo "err $(date +"%H:%M:%S")" 1>&2
sleep 1
echo "out $(date +"%H:%M:%S")"
done
exit -1
En mere realistisk prøve ville nok være at have en specifik aktivering
af en ekstern `kill` for at simulere et uønsket nedbrud af programmet.
Kortere tid mellem udskrifterne kan klares ved at udskrive en tæller i
stedet for et tidspunkt i hele sekunder.
God fornøjelse,
Jacob
--
"Very small. Go to sleep" -- monster (not drooling)
References