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 man
y comando mandb
. Este mandb
comando 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 mandb
ejecuta todo el tiempo en este nodo? (No tengo este problema en otros nodos dentro del clúster de mi institución, de acuerdo con top
otros nodos). ¿Por qué mandb
necesitarí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
?
Respuestas:
No es normal
mandb
correr continuamente. Es típico ejecutarmandb
una 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
mandb
programa, o que haya una falla de hardware que provoquemandb
que se atasque.Puede ver los scripts cron en
/etc/crontab
o/etc/cron.*/*
(la ubicación exacta depende de la distribución;/etc/cron.daily/man-db
y/etc/cron.weekly/man-db
son ubicaciones probables). Puede ver lo que se invocamandb
mirando el proceso más de cerca: ejecutepstree | less
y busque elmandb
proceso. La ejecuciónps 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
mandb
proceso de forma segura (use el comandosudo pkill mandb
osu -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ómandb
y con qué argumentos).fuente
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
fuente
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:
y nunca ejecutes mandb con
--create
o 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:
que deshabilitará el cronjob man-db (se ejecuta diariamente) y el activador dpkg (se ejecuta cuando se instalan los paquetes).
fuente