Jak śledzić (a la „tail -f”) plik binarny od samego początku?

10

Czy od samego początku można śledzić plik binarny, la tail -f?

Jest to przydatne w niektórych przypadkach, na przykład, gdy scpprzesyłam plik do zdalnego serwera, a jednocześnie chcę go przesłać do innego procesu (tak, wiem, że mogę użyć ssh+ catlew).

O ile czytam z FM, tailjest napisane z myślą o plikach tekstowych.

Czy istnieje prosty sposób wykonywania takich operacji przy użyciu standardowych narzędzi POSIX?

Marcus
źródło
Gdzie jest napisane, że tailmożna go używać tylko z plikami tekstowymi?
rozcietrzewiacz
@rozcietrzewiacz Na starszych jednorożcach narzędzia tekstowe, takie jak tailnie zawsze radziły sobie z plikami binarnymi: mogą dławić się na bajtach zerowych lub pomijać bajty zbłąkane po ostatniej nowej linii w plikach wejściowych. Nowoczesne systemy sobie z tym radzą.
Gilles 'SO - przestań być zły'

Odpowiedzi:

12

taildziała zarówno z danymi binarnymi, jak i tekstem. Jeśli chcesz zacząć od samego początku pliku, możesz użyć tail -c +1 -f.

rozcietrzewiacz
źródło
Czy to nie działa dla nikogo? Mam plik binarny, który zawiera 16 wystąpień ciągu, który widzę, gdy używam cat bin_file | strings - -o | grep match_string, ale kiedy to robię tail -c +1 -f bin_file | strings - -o | grep match_string, nic nie osiągam po 9. dopasowaniu. Zauważyłem również, że wszystkie numery linii -osą o 1 mniejsze w porównaniu do wyjścia kota. Jeśli zostawię grep wyłączony, dostanę wszystkie 16 dopasowań (pomieszane ze wszystkim innym), więc pomyślałem, że problemem jest grep, ale wypróbowałem perl-one-liner i zatrzymuje się w tym samym miejscu ...
hepcat72