En Ubuntu Linux, ¿es normal que mandb se ejecute continuamente (aparentemente en segundo plano)?

12

Tengo acceso a un nodo Ubuntu Linux en mi institución. Los nodos se comparten entre el grupo, pero normalmente soy la única persona que usa este nodo en particular.

Estoy ejecutando un cálculo en paralelo en las 8 CPU en este nodo. Mi cálculo se ejecuta, pero cuando veo los procesos activos usando top, veo un proceso adicional que dice usuario many comando mandb. Este mandbcomando parece estar ejecutándose cada vez que miro top, y parece ocupar una cantidad bastante apreciable de potencia de CPU ( 6 %CPU) y memoria ( 2.5 %MEM), según top.

Cuando miro alrededor en internet, parece que:

mandb se usa para inicializar o actualizar manualmente las cachés de la base de datos de índice que usualmente mantiene man.

¿Por qué, entonces, se mandbejecuta todo el tiempo en este nodo? (No tengo este problema en otros nodos dentro del clúster de mi institución, de acuerdo con topotros nodos). ¿Por qué mandbnecesitaría ejecutarse todo el tiempo, ya que actualmente no estoy buscando manuales?

¿Es probable que este proceso sea un proceso fantasma que puedo terminar de forma segura kill?

Andrés
fuente
@derobert No soy el administrador de sistemas. Ok, le preguntaré. Gracias.
Andrew

Respuestas:

10

No es normal mandbcorrer continuamente. Es típico ejecutar mandbuna vez al día en un trabajo cron , para realizar tareas de mantenimiento, como actualizar un índice de páginas man instaladas y crear o recortar un caché de páginas man formateadas. El trabajo diario debe ejecutarse en unos pocos segundos, tal vez unos minutos si tiene muchas páginas de manual y un disco lento. Si el trabajo dura más que eso, hay algo mal.

6% de CPU no es alta, pero el proceso puede estar haciendo E / S de disco. El 2.5% de la memoria en un nodo del clúster suena alto. Es probable que el trabajo esté mal configurado y busque donde no debería estar, o que haya un error en el mandbprograma, o que haya una falla de hardware que provoque mandbque se atasque.

Puede ver los scripts cron en /etc/crontabo /etc/cron.*/*(la ubicación exacta depende de la distribución; /etc/cron.daily/man-dby /etc/cron.weekly/man-dbson ubicaciones probables). Puede ver lo que se invoca mandbmirando el proceso más de cerca: ejecute pstree | lessy busque el mandbproceso. La ejecución ps ww 12345(donde 12345 es el PID del proceso ofensivo) mostrará la línea de comando completa.

Esto es algo que puede diagnosticar por su cuenta, pero no solucionar sin los permisos de root. Si tiene permisos de root, puede matar el mandbproceso de forma segura (use el comando sudo pkill mandbo su -c 'pkill mandb', dependiendo de cómo se convierta en root). En cualquier caso, comuníquese con el administrador del sistema y explique los síntomas. Proporcione toda la información que pueda (como qué programa invocó mandby con qué argumentos).

Gilles 'SO- deja de ser malvado'
fuente
2

Revisé las secuencias de comandos cron, era simplemente un comando para actualizar los índices man, acelerar la búsqueda de manuales, ejecuta diariamente, puedes matarlo de forma segura.

No te gusta, solo deshabilítalo chmod -x /etc/cron.daily/man-db

margarita
fuente
2

Este es un Heisenbug, y posiblemente uno que ha sido arreglado en versiones recientes de mandb. Tiene que ver con páginas de manual rotas, orden de recorrido del sistema de archivos y reconstrucciones incrementales de la mandíbula que se convierten en reconstrucciones completas muy lentas (15 millones de fallas de página más o menos, lo que lleva minutos en la oxidación giratoria).

Si desea solucionarlo, ejecute:

sudo mandb --no-purge --debug

y nunca ejecutes mandb con --createo sin --no-purge. Luego, asegúrese de tener la última versión e informe un error donde cjwatson pueda verlo.

Si, por otro lado, solo desea deshacerse del problema, ejecute:

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

que deshabilitará el cronjob man-db (se ejecuta diariamente) y el activador dpkg (se ejecuta cuando se instalan los paquetes).

Tobu
fuente