Portál AbcLinuxu, 5. května 2025 21:38
omlouvám se za asi začátečnický dotaz, ale nevím, jak to rychle najít…
tail -f /var/log/maillog | grep Subject
- to funguje bez problémů
chci to ale ukládat do souboru:
tail -f /var/log/maillog | grep Subject > /var/log/vsechnymaily.csv
A neukládá to nic, čím to?
Díky
tail
, ale grep
. STDOUT pro tail
je do STDIN grep
.
> soubor
se to bude ukládat do souboru, ne?
2. jsem přihlášený jako root, takže právy to nejspíše nebude
tail -f
, což znamená, že se proudy nezavřou a jsou otevřené do nekonečna. Přesměrování do souboru způsobí otevření write do souboru, ale nemáte žádné uzavření, tím pádem výstup do souboru zůstane viset ve write bufferu cilového souboru dokud mu nepošlete sync (což mu nepošlete asi nikdy) nebo neuplynou timeouty file systému pro zápis. Efektivně se přesměrování do souboru dá používat jen pro ukončenou akci.
mkfifo fifo tail -f /var/log/maillog > fifo while read a; do echo $a | grep Subject >> /var/log/vsechnymaily.csv; done <fifonevyhodou je ze musia bezat 2 prikazy.
tail -f /var/log/maillog | stdbuf -o 0 grep Subject > /var/log/vsechnymaily.csv
tail -f /var/log/maillog | grep Subject | tee /var/log/vsechnymaily.csv > /dev/null
Pánové díky za rady! Napadlo mně, že by to mohlo být v tom neuzavřeném souboru, ale stejně tak to mohlo být spoustou jiných věcí, takže jsem rád, že jste se tomu věnovali.
Zkoušel jsem všechny způsoby. Funguje ale jen ten první, dvoupříkazový.
Tento způsob: tail -f /var/log/maillog | stdbuf -o 0 grep Subject > /var/log/vsechnymaily.csv
vrátí -bash: stdbuf: command not found
Tento způsob: tail -f /var/log/maillog | grep Subject | tee /var/log/vsechnymaily.csv > /dev/null
nic nevrátí, ale ani nic nezapisuje
raději bych používal jednopříkazový způsob, pokud by to šlo. Mohl bych Vás ještě poprosit o pomoc?
tail -t
si dokážu představi, že si ho spustím interaktivně zjistím, co se děje a nechám vypisuje mi i aktuální změnu. Ale proč takhle a co je cílem, moc nechápu. Pokud chcete mít paralelení vyfiltrovaný soubor, tak otázka je jak přesně aktuální, nebo co se s ním bude dít dále.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.