Jeśli mam polecenie potokowe, takie jak
cat myfile | processor_application
gdzie aplikacja_procesora odczytuje ze standardowego fragmentu, w kawałkach, do przetworzenia, czy można zobaczyć, jak daleko plik ma kot?
Być może używasz lsof?
Dzięki!
Odpowiedzi:
Możesz to zrobić np. Za pomocą pv
pv file | processor_application
Gdy pv przechodzi, stdin przechodzi bezpośrednio na stdout, więc nie musisz używać cat.
Edytuj Ponieważ twój program jest już uruchomiony, znajdź PID
cat
procesu, a następnie spójrz na zawartość/proc/<PID>/io
który powie ci ile bajtów napisał - wchar.
źródło
Absolutnie! Pipe Viewer właśnie to robi. Po prostu wstaw go do swojego potoku:
Możesz zoptymalizować
cat
powyższy przykład:Ma to tę zaletę, że zapewnia rzeczywisty wskaźnik postępu, ponieważ pv może bezpośrednio określić rozmiar danych wejściowych. Jeśli używasz pv w środku potoku, musisz sam podać rozmiar pliku, aby uzyskać dokładne postępy:
Sprawdź witrynę, aby uzyskać więcej opcji dostosowywania pv.
źródło
pv
gdy jest dostępny :-)pv
do potoku za pomocąmkfifo
igdb
(cztery wywołania systemowe z gdbp
).Jeśli proces już działa, lsof ma
size/offset
kolumnę, która może być dla Ciebie pomocna - znajdź PID procesu cat, który chcesz sprawdzić, a następnielsof -o -p [PID]
.Jeśli proces jeszcze się nie uruchomił,
pv
jak sugerują inni, to dobra opcja (zakładając, że twój system ma to narzędzie).źródło
-o
nie działa w systemie Myślę, że dość dużo wkręca w odniesieniu do korzystania zlsof
: - / (zakładam używasz lsof jako użytkownik, który uruchomiłcat
proces lub jako root?)