2013-04-04 12 views
7

Moja praca wymaga wielu pól sortowania od bardzo dużych plików. Zwykle robię to za pomocą polecenia sort w bash. Niestety, kiedy zaczynam coś takiego, nigdy nie jestem pewien, ile czasu to zajmie. Czy powinienem poczekać sekundę na pojawienie się wyników, czy też powinienem zacząć pracować nad czymś innym, kiedy działa?Czy można wyświetlić postęp sortowania w systemie Linux?

Czy jest jakiś sposób, aby zorientować się, jak daleko posunął się jakiś rodzaj lub jak szybko działa?

$ cut -d , -f 3 VERY_BIG_FILE | sort -du > output 
+2

Działa "na płasko". Nie ma niezawodnego sposobu, aby wykryć, jak daleko się posunął i jak długo ma działać. Być może będziesz w stanie przeskakiwać dookoła/proc i dokonywać pewnych dedukcji, ale prawdopodobnie nie. –

+0

Może zatem alternatywny sposób sortowania? Większość rutynowych procedur (takich jak QuickSort) przynajmniej ma pojęcie, jak daleko jest w tym rodzaju. –

Odpowiedz

8

Nie, GNU sort nie raportuje postępów.

Jednakże, jeśli używasz sort prostu usunąć duplikaty, a nie faktycznie dbają o zamówieniu, a następnie istnieje more scalable way robi że:

awk '! a[$0]++' 

ten wypisze pierwszego wystąpienia tak szybko, jak to widać, co może dać ci wyobrażenie o postępie.

-4

Można wykonać swoją "sort" w tle dostaniesz szybka i można wykonywać inne zadania

$ sort ...... & # (& znaczy działać w tle)

+3

Podczas gdy twoje oświadczenie jest niewątpliwie poprawne, twoja odpowiedź nie ma nic wspólnego z pytaniem. – tink

1

You może chcieć dać pv próbę, powinien dać ci całkiem niezłe pojęcie o tym, co dzieje się w twojej rurze pod względem przepustowości.

Przykład (niesprawdzone) wstrzykiwanie pv przed i po komendzie do sort aby zorientować się, przepustowość:

$ cut -d , -f 3 VERY_BIG_FILE | pv -cN cut | sort -du | pv -cN sort > output 

EDIT: Tęskniłem -u w swojej komendzie sortowania, więc obliczenia linie pierwszy być w stanie uzyskać procentowy wynik jest nieważny. Usunięto tę część z mojej odpowiedzi.

+0

Podczas gdy 'pv' jest świetnym narzędziem, daje tylko pojęcie, jak daleko jesteśmy naprawdę, jeśli dasz mu opcję' -s', aby powiedzieć jej całkowitą długość. – glglgl

+0

@glglgl Mój przykład użył '-s' przed edycją, ale ponieważ nie możemy znać rozmiaru po sortowaniu -u go usunąłem. OP poprosił o rozwiązanie, które przynajmniej pomoże określić "jak szybko działa", co w pewnym sensie ma "pv". –

Powiązane problemy