Czy w Ubuntu Linux normalne jest, że mandb działa nieprzerwanie (najwyraźniej w tle)?

12

Mam dostęp do węzła Ubuntu Linux w mojej instytucji. Węzły są wspólne dla grupy, ale zazwyczaj jestem jedyną osobą, która korzysta z tego konkretnego węzła.

Przeprowadzam obliczenia równolegle na wszystkich 8 procesorach w tym węźle. Moje obliczenia są uruchamiane, ale kiedy przeglądam aktywne procesy za pomocą top, widzę dodatkowy proces, który mówi użytkownika mani polecenia mandb. To mandbpolecenie wydaje się być uruchamiane za każdym razem, gdy na niego patrzę top, i wydaje się, że zajmuje dość znaczną ilość mocy procesora ( 6 %CPU) i pamięci ( 2.5 %MEM), zgodnie z top.

Kiedy rozglądam się po Internecie, wydaje się, że:

mandb służy do inicjalizacji lub ręcznej aktualizacji indeksów baz danych, które zwykle są obsługiwane przez man.

Dlaczego więc mandbcały czas działa w tym węźle? (Nie mam tego problemu na innych węzłach w klastrze mojej instytucji, zgodnie z topinnymi węzłami). Po co miałbym mandbcały czas działać, skoro nie przeglądam obecnie instrukcji?

Czy ten proces jest prawdopodobnie procesem fantomowym, którego mogę bezpiecznie zakończyć kill?

Andrzej
źródło
@derobert Nie jestem administratorem systemu. Ok, zapytam go. Dzięki.
Andrew

Odpowiedzi:

10

mandbCiągłe działanie nie jest normalne . Typowe jest uruchamianie mandbraz dziennie w zadaniu cron , aby wykonać zadanie konserwacyjne, takie jak aktualizacja indeksu zainstalowanych stron podręcznika man oraz zbudowanie lub przycięcie bufora sformatowanych stron podręcznika. Codzienna praca powinna trwać za kilka sekund, a może kilka minut, jeśli masz dużo stron podręcznika i powolny dysk. Jeśli zadanie trwa dłużej, oznacza to, że coś jest nie tak.

6% procesora nie jest wysokie, ale proces może wykonywać operacje we / wy dysku. 2,5% pamięci w węźle klastra brzmi wysoko. Jest prawdopodobne, że zadanie jest źle skonfigurowane i wygląda tam, gdzie nie powinno być, albo że w programie jest błąd mandb, lub że awaria sprzętu powoduje mandbzablokowanie.

Możesz oglądać skrypty cron w /etc/crontablub /etc/cron.*/*(dokładna lokalizacja zależy od dystrybucji; /etc/cron.daily/man-dbi /etc/cron.weekly/man-dbprawdopodobnie są to lokalizacje). Możesz zobaczyć, co zostało wywołane mandb, przyglądając się procesowi bliżej: uruchom pstree | lessi wyszukaj mandbproces. Uruchomienie ps ww 12345(gdzie 12345 jest PID procesu naruszającego prawo) spowoduje wyświetlenie pełnego wiersza poleceń.

Jest to coś, co możesz zdiagnozować samodzielnie, ale którego nie naprawisz bez uprawnień roota. Jeśli masz uprawnienia roota, możesz bezpiecznie zabić mandbproces (użyj polecenia sudo pkill mandblub su -c 'pkill mandb', w zależności od tego, jak się rootujesz). W każdym razie skontaktuj się z administratorem systemu i wyjaśnij objawy. Podaj wszystkie informacje, jakie możesz (np. Jaki program został wywołany mandbi jakie argumenty).

Gilles „SO- przestań być zły”
źródło
2

Sprawdziłem skrypty crona, było to tylko polecenie aktualizacji indeksów człowieka, przyspieszenie wyszukiwania instrukcji, codzienne uruchamianie, możesz je bezpiecznie zabić.

Nie podoba ci się, po prostu wyłącz chmod -x /etc/cron.daily/man-db

stokrotka
źródło
2

To jest Heisenbug i prawdopodobnie ten, który został naprawiony w najnowszych wersjach mandb. Ma to związek ze zepsutymi stronami, kolejnością przechodzenia przez system plików i przyrostowymi przebudowaniami mandy, zmieniającymi się w bardzo powolne pełne przebudowy (około 15 milionów błędów stron, a to zajmuje kilka minut na wirowanie rdzy).

Jeśli chcesz go rozwiązać, uruchom:

sudo mandb --no-purge --debug

i nigdy nie uruchamiaj mandb z --createani bez --no-purge. Następnie upewnij się, że masz najnowszą wersję i zgłoś błąd, w którym cjwatson może to zobaczyć.

Jeśli natomiast chcesz pozbyć się problemu, uruchom:

echo 'man-db man-db/auto-update boolean false' |sudo debconf-set-selections

co wyłączy man-db cronjob (działa codziennie) i wyzwalacz dpkg (działa, gdy pakiety są zainstalowane).

Tobu
źródło