No Ubuntu Linux, é normal que o mandb seja executado continuamente (aparentemente em segundo plano)?

9

Eu tenho acesso a um nó do Ubuntu Linux na minha instituição. Os nós são compartilhados entre o grupo, mas normalmente eu sou a única pessoa que usa esse nó em particular.

Estou executando um cálculo em paralelo em todas as 8 CPUs neste nó. Meu cálculo é executado, mas quando vejo os processos ativos usando top , vejo um processo adicional que diz usuário man e comando mandb . Esse comando mandb parece estar em execução toda vez que eu olho para top e parece que ele consome uma quantidade razoavelmente apreciável de energia da CPU ( 6 %CPU ) e memória ( 2.5 %MEM ), de acordo com top .

Quando olho pela internet, parece que:

mandb is used to initialise or manually update index database caches that are usually maintained by man.

Por que, então, mandb é executado o tempo todo nesse nó? (Eu não tenho esse problema em outros nós no cluster da minha instituição, de acordo com top em outros nós.) Por que mandb precisa ser executado o tempo todo, já que eu não atualmente olhando manuais?

Esse processo provavelmente é um processo fantasma que eu posso terminar com segurança usando kill ?

    
por Andrew 12.09.2012 / 21:30

3 respostas

8

Não é normal que mandb seja executado continuamente. É típico executar mandb uma vez por dia em um trabalho cron , para realizar tarefas de manutenção, como atualizar um índice de Man pages instaladas e construção ou corte de um cache de man pages formatadas. O trabalho diário deve ser executado em alguns segundos, talvez alguns minutos, se você tiver muitas páginas de manual e um disco lento. Se o trabalho for executado por mais tempo, há algo errado.

6% da CPU não é alta, mas o processo pode estar fazendo E / S de disco. 2,5% da memória em um nó de cluster soa alto. É provável que o trabalho esteja mal configurado e olhando onde não deveria estar, ou que haja um bug no programa mandb , ou que haja uma falha de hardware fazendo com que mandb fique preso.

Você pode assistir aos scripts cron em /etc/crontab ou /etc/cron.*/* (o local exato depende da distribuição; /etc/cron.daily/man-db e /etc/cron.weekly/man-db são locais prováveis). Você pode ver o que chamou mandb observando o processo mais de perto: execute pstree | less e procure o processo mandb . Executar ps ww 12345 (onde 12345 é o PID do processo ofensivo) mostrará a linha de comando completa.

Isso é algo que você pode diagnosticar sozinho, mas não corrigir sem permissões de root. Se você tiver permissões de root, poderá eliminar com segurança o processo mandb (use o comando sudo pkill mandb ou su -c 'pkill mandb' , dependendo de como você se torna root). Em qualquer caso, entre em contato com o administrador do sistema e explique os sintomas. Dê todas as informações que você puder (como qual programa invocou mandb e com quais argumentos).

    
por 13.09.2012 / 02:05
1

Eu verifiquei os scripts cron, era apenas um comando para atualizar os índices man, acelerar a procura de manuais, ser executado diariamente, você pode matá-lo com segurança.

Você não gosta disso, apenas desative-o em chmod -x /etc/cron.daily/man-db

    
por 13.09.2012 / 01:58
1

Este é um Heisenbug e possivelmente um que foi corrigido em versões recentes do mandb. Tem a ver com páginas de trabalho quebradas, ordem de passagem do sistema de arquivos e recriações incrementais do mandb se transformando em recondicionamentos completos muito lentos (15 milhões de falhas de página ou mais, o que leva alguns minutos para acabar com a ferrugem).

Se você quiser solucionar o problema, execute:

sudo mandb --no-purge --debug

e nunca execute mandb com --create ou sem --no-purge . Em seguida, verifique se você tem a versão mais recente e relate um bug onde o cjwatson pode vê-lo.

Se, por outro lado, você quiser apenas se livrar do problema, execute:

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

que desativa o cronjob man-db (executado diariamente) e o gatilho dpkg (executado quando pacotes são instalados).

    
por 27.10.2012 / 14:40