Ist es unter Ubuntu Linux normal, dass mandb kontinuierlich ausgeführt wird (anscheinend im Hintergrund)?


12

Ich habe Zugang zu einem Ubuntu Linux-Knoten an meiner Institution. Die Knoten werden von der Gruppe gemeinsam genutzt, aber normalerweise bin ich die einzige Person, die diesen bestimmten Knoten verwendet.

Ich führe eine parallele Berechnung auf allen 8 CPUs dieses Knotens durch. Meine Berechnung wird ausgeführt, aber wenn ich die aktiven Prozesse mithilfe von topanzeige, wird ein zusätzlicher Prozess angezeigt, in dem Benutzer manund Befehl angegeben sind mandb. Dieser mandbBefehl scheint jedes Mal ausgeführt zu werden, wenn ich ihn mir anschaue top, und er beansprucht dementsprechend ziemlich viel CPU-Leistung ( 6 %CPU) und Speicher ( 2.5 %MEM) top.

Wenn ich mich im Internet umsehe, sieht es so aus:

mandb wird zum Initialisieren oder manuellen Aktualisieren von Indexdatenbank-Caches verwendet, die normalerweise vom Benutzer verwaltet werden.

Warum läuft dann mandbdie ganze Zeit auf diesem Knoten? (Ich habe dieses Problem nicht auf anderen Knoten innerhalb des Clusters meiner Institution, sondern topauf anderen Knoten.) Warum müsste mandbes die ganze Zeit ausgeführt werden, da ich derzeit keine Handbücher suche?

Ist es wahrscheinlich, dass dieser Prozess ein Phantomprozess ist, mit dem ich ihn sicher beenden kann kill?


@derobert Ich bin nicht der Sysadmin. Ok, ich werde ihn fragen. Vielen Dank.
Andrew

Antworten:


10

Es ist nicht normal mandb, ständig zu laufen. Normalerweise wird es mandbeinmal täglich in einem Cron- Job ausgeführt, um Wartungsaufgaben auszuführen, z. B. das Aktualisieren eines Indexes installierter Manpages und das Erstellen oder Kürzen eines Cache formatierter Manpages. Der tägliche Job sollte in wenigen Sekunden ausgeführt werden, möglicherweise in wenigen Minuten, wenn Sie viele Manpages und eine langsame Festplatte haben. Wenn der Job länger ausgeführt wird, stimmt etwas nicht.

6% der CPU ist nicht hoch, aber der Prozess führt möglicherweise Festplatten-E / A aus. 2,5% des Arbeitsspeichers eines Clusterknotens klingt hoch. Es ist wahrscheinlich, dass der Job falsch konfiguriert ist und sucht, wo er nicht sein sollte, oder dass das mandbProgramm einen Fehler aufweist oder ein Hardwarefehler vorliegt, der dazu führt, dass mandber hängen bleibt.

Sie können die Cron-Skripte in /etc/crontaboder anzeigen /etc/cron.*/*(der genaue Speicherort ist verteilungsabhängig /etc/cron.daily/man-dbund /etc/cron.weekly/man-dbes handelt sich wahrscheinlich um Speicherorte). Sie können sehen, was aufgerufen wurde, mandbindem Sie den Prozess genauer betrachten: Ausführen pstree | lessund Suchen nach dem mandbProzess. Beim Ausführen ps ww 12345(wobei 12345 die PID des fehlerhaften Prozesses ist) wird die vollständige Befehlszeile angezeigt.

Dies ist etwas, das Sie möglicherweise selbst diagnostizieren können, aber ohne Root-Berechtigungen nicht beheben können. Wenn Sie über Root-Berechtigungen verfügen, können Sie den mandbProzess sicher beenden (verwenden Sie den Befehl sudo pkill mandboder su -c 'pkill mandb', abhängig davon, wie Sie Root werden). Wenden Sie sich in jedem Fall an Ihren Systemadministrator und erklären Sie die Symptome. Geben Sie alle möglichen Informationen an (z. B. welches Programm mandbmit welchen Argumenten aufgerufen wurde ).


2

Ich habe die Cron-Skripte überprüft. Es war lediglich ein Befehl, die Man-Indizes zu aktualisieren, die Suche nach Handbüchern zu beschleunigen und sie täglich auszuführen. Sie können sie sicher beenden.

Du magst es nicht, deaktiviere es einfach durch chmod -x /etc/cron.daily/man-db


2

Dies ist ein Heisenbug, der möglicherweise in neueren Versionen von mandb behoben wurde. Dies hat mit defekten Manpages, der Durchquerungsreihenfolge des Dateisystems und inkrementellen Neuerstellungen des Mandb zu tun, die sich in sehr langsame Neuerstellungen verwandeln (15 Millionen Seitenfehler oder so, was bei rotierendem Rost Minuten in Anspruch nimmt).

Wenn Sie Fehler beheben möchten, führen Sie Folgendes aus:

sudo mandb --no-purge --debug

und nie mit --createoder ohne mandb laufen --no-purge. Stellen Sie dann sicher, dass Sie die neueste Version haben, und melden Sie einen Fehler, bei dem cjwatson ihn sehen kann.

Wenn Sie das Problem jedoch nur beseitigen möchten, führen Sie Folgendes aus:

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

Dadurch werden der man-db-Cronjob (wird täglich ausgeführt) und der dpkg-Trigger (wird ausgeführt, wenn Pakete installiert sind) deaktiviert.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.