Sur Ubuntu Linux, est-il normal que mandb s'exécute en continu (apparemment en arrière-plan)?

12

J'ai accès à un nœud Ubuntu Linux dans mon établissement. Les nœuds sont partagés entre le groupe, mais généralement je suis la seule personne à utiliser ce nœud particulier.

J'exécute un calcul en parallèle sur les 8 CPU de ce nœud. Mon calcul s'exécute, mais lorsque je visualise les processus actifs à l'aide top, je vois un processus supplémentaire qui dit utilisateur manet commande mandb. Cette mandbcommande semble être exécutée à chaque fois que je regarde top, et elle semble prendre une quantité assez appréciable de puissance CPU ( 6 %CPU) et de mémoire ( 2.5 %MEM), selon top.

Quand je regarde autour d'Internet, il semble que:

mandb est utilisé pour initialiser ou mettre à jour manuellement les caches de base de données d'index qui sont généralement gérés par man.

Pourquoi, alors, mandbs'exécute-t-il tout le temps sur ce nœud? (Je n'ai pas ce problème sur d'autres nœuds au sein du cluster de mon institution, selon topsur d'autres nœuds.) Pourquoi aurait-il mandbbesoin de fonctionner tout le temps, car je ne regarde pas actuellement les manuels?

Ce processus est-il susceptible d'être un processus fantôme que je peux interrompre en toute sécurité kill?

Andrew
la source
@derobert Je ne suis pas l'administrateur système. D'accord, je vais lui demander. Merci.
Andrew

Réponses:

10

Il n'est pas normal mandbde fonctionner en continu. Il est typique de s'exécuter mandbune fois par jour dans une tâche cron , pour effectuer des tâches de maintenance telles que la mise à jour d'un index des pages de manuel installées et la création ou le découpage d'un cache de pages de manuel formatées. Le travail quotidien devrait s'exécuter en quelques secondes, peut-être quelques minutes si vous avez beaucoup de pages de manuel et un disque lent. Si le travail dure plus longtemps, il y a un problème.

6% CPU n'est pas élevé, mais le processus peut faire des E / S disque. 2,5% de la mémoire d'un nœud de cluster semble élevée. Il est probable que le travail est mal configuré et qu'il recherche où il ne devrait pas être, ou qu'il y a un bogue dans le mandbprogramme, ou qu'il y a une défaillance matérielle qui mandbse bloque.

Vous pouvez regarder les scripts cron dans /etc/crontabou /etc/cron.*/*(l'emplacement exact dépend de la distribution /etc/cron.daily/man-dbet /etc/cron.weekly/man-dbsont probablement des emplacements). Vous pouvez voir ce qui a été invoqué mandben examinant le processus de plus près: exécutez pstree | lesset recherchez le mandbprocessus. L'exécution ps ww 12345(où 12345 est le PID du processus incriminé) affichera la ligne de commande complète.

C'est quelque chose que vous pourrez peut-être diagnostiquer par vous-même, mais pas corriger sans les autorisations root. Si vous disposez des droits root, vous pouvez tuer le mandbprocessus en toute sécurité (utilisez la commande sudo pkill mandbou su -c 'pkill mandb', selon la façon dont vous devenez root). Dans tous les cas, contactez votre administrateur système et expliquez les symptômes. Donnez toutes les informations que vous pouvez (comme quel programme invoqué mandbet avec quels arguments).

Gilles 'SO- arrête d'être méchant'
la source
2

J'ai vérifié les scripts cron, c'était simplement une commande pour mettre à jour les indices man, accélérer la recherche de manuels, s'exécuter quotidiennement, vous pouvez le tuer en toute sécurité.

Vous ne l'aimez pas, désactivez-le simplement en chmod -x /etc/cron.daily/man-db

Marguerite
la source
2

Il s'agit d'un Heisenbug, et peut-être celui qui a été corrigé dans les versions récentes de mandb. Cela a à voir avec les pages de manuel cassées, l'ordre de traversée du système de fichiers et les reconstructions incrémentielles du mandb se transformant en reconstructions complètes très lentes (15 millions de défauts de page environ, ce qui prend quelques minutes pour faire tourner la rouille).

Si vous souhaitez le dépanner, exécutez:

sudo mandb --no-purge --debug

et ne lancez jamais mandb avec --createou sans --no-purge. Assurez-vous ensuite que vous disposez de la dernière version et signalez un bogue où cjwatson peut le voir.

Si par contre vous voulez simplement vous débarrasser du problème, lancez:

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

qui désactivera le cronjob man-db (s'exécute quotidiennement) et le déclencheur dpkg (s'exécute lorsque les packages sont installés).

Tobu
la source