Multilog Dana Bernsteina najwyraźniej może to zrobić - a może większość, zapewniając jednocześnie ujście za pomocą deskryptorów plików do procesora!, Aby nadrobić różnicę, jak chcesz - chociaż specyfikacje rozmiaru 20M / 1G mogą wymagać nieco finaglingu, ponieważ wydaje się, że 16M jest jego poza limitem na dziennik. Poniżej znajduje się w większości wybór kopiuj i wklej z powyższego linku, chociaż link zawiera również inne opcje, takie jak znacznik czasu dla linii, utrzymywanie [innych] plików zawierających tylko najnowszy wzorzec dopasowania linii i więcej .
Berło
multilog script
... skrypt składa się z dowolnej liczby argumentów. Każdy argument określa jedno działanie. Działania są wykonywane w kolejności dla każdego wiersza danych wejściowych.
Wybieranie linii
Każda linia jest początkowo wybrana. Akcja...
-pattern
... odznacza linię, jeśli wzór pasuje do linii. Akcja...
+pattern
wybiera linię, jeśli wzór pasuje do linii.
... wzór jest ciągiem gwiazd i innych gwiazd. Pasuje do dowolnego łączenia łańcuchów pasujących do wszystkich gwiazd i innych gwiazd w tej samej kolejności. Non-star pasuje do siebie. Gwiazdka przed końcem wzoru pasuje do dowolnego ciągu, który nie zawiera następnego znaku we wzorze. Gwiazdka na końcu wzoru pasuje do dowolnego łańcucha.
Automatycznie obracane dzienniki
Jeśli katalog zaczyna się od kropki lub ukośnika, akcja ...
dir
... dołącza każdą wybraną linię do dziennika o nazwie reż . Jeśli katalog nie istnieje, multilog
tworzy go.
Format dziennika jest następujący:
reż to katalog zawierający pewną liczbę starych plików dziennika, plik dziennika o nazwie prąd i inne pliki dla multilog
śledzić jego działania.
Każdy stary plik dziennika ma nazwę zaczynającą się od @ , kontynuującą dokładną sygnaturę czasową pokazującą, kiedy plik został ukończony, i kończącą się jednym z następujących kodów:
- .s : ten plik jest całkowicie przetworzony i bezpiecznie zapisany na dysku.
- .u : Ten plik został utworzony w momencie awarii. Być może został obcięty. Nie został przetworzony.
Akcja...
ssize
... ustawia maksymalny rozmiar pliku dla kolejnych reż działań. multilog
zdecyduje, że prąd jest wystarczająco duży, jeśli prąd ma bajty wielkości . ( multilog
zdecyduje również, że prąd jest wystarczająco duży, jeśli zobaczy nową linię w granicach 2000 bajtów od maksymalnego rozmiaru pliku; próbuje zakończyć pliki dziennika na granicach linii). Rozmiar musi wynosić od 4096 do 16777215. Domyślny maksymalny rozmiar pliku to 99999.
W wersjach 0.75 i nowszych: Jeśli multilog
odbiera sygnał ALRM , natychmiast decyduje, że prąd jest wystarczająco duży, jeśli prąd nie jest pusty.
(Uwaga: podejrzewam, że zsh
schedule
można łatwo przekonać wbudowanego do wysyłania ALRM
w określonych odstępach czasu w razie potrzeby.)
Akcja...
nnum
... ustawia liczbę plików dziennika dla kolejnych reż działań. Po zmianie nazwy bieżącego , jeśli multilog
widzi num lub więcej starych plików dziennika, usuwa stary plik dziennika z najmniejszym znacznikiem czasu. liczba musi wynosić co najmniej 2. Domyślna liczba plików dziennika to 10.
Akcja...
!processor
... ustawia procesor do kolejnych reż działań. multilog
poda prąd przez procesor i zapisze dane wyjściowe jako stary plik dziennika zamiast bieżącego . multilog
zapisze również dane wyjściowe, które procesor zapisuje do deskryptora 5, i sprawi, że dane wyjściowe będą czytelne na deskryptorze 4, gdy uruchomi procesor na następnym pliku dziennika. Aby zapewnić niezawodność, procesor musi wyjść z niezerowej wartości, jeśli ma problemy z tworzeniem danych wyjściowych; multilog
uruchomi go ponownie. Zauważ, że działający procesor może blokować każdy sygnał wejściowy programu multilog
.