У меня есть доступ к узлу Ubuntu Linux в моем учреждении. Узлы являются общими для группы, но обычно я единственный человек, который использует этот конкретный узел.
Я выполняю вычисления параллельно на всех 8 процессорах на этом узле. Мой расчет выполняется, но когда я просматриваю активные процессы, используя top
, я вижу дополнительный процесс, который говорит пользователь man
и команда mandb
. Эта mandb
команда, кажется, выполняется каждый раз, когда я смотрю на top
нее, и она, по-видимому, занимает довольно заметное количество мощности процессора ( 6 %CPU
) и памяти ( 2.5 %MEM
) top
.
Когда я смотрю в Интернете, кажется, что:
mandb
используется для инициализации или обновления вручную кэшей базы данных индекса, которые обычно обслуживаются человеком.
Почему же тогда mandb
все время работает на этом узле? (У меня нет этой проблемы на других узлах в кластере моего учреждения, в соответствии с top
другими узлами.) Почему mandb
нужно было бы работать все время, так как в настоящее время я не смотрю руководства?
Может ли этот процесс быть фантомным процессом, который я могу безопасно прекратить использовать kill
?
Ответы:
Это не нормально для
mandb
непрерывной работы. Обычно выполняетсяmandb
один раз в день в задании cron для выполнения задачи обслуживания, такой как обновление индекса установленных справочных страниц и создание или усечение кэша отформатированных справочных страниц. Ежедневная работа должна выполняться за несколько секунд, возможно, за несколько минут, если у вас много man-страниц и медленный диск. Если работа длится дольше, значит, что-то не так.6% ЦП невелик, но процесс может выполнять дисковый ввод-вывод. 2,5% памяти на узле кластера звучит высоко. Вполне вероятно, что задание неправильно настроено и выглядит там, где его не должно быть, или в программе есть ошибка
mandb
, или произошел сбой оборудования, приводящийmandb
к зависанию.Вы можете посмотреть сценарии cron в
/etc/crontab
или/etc/cron.*/*
(точное местоположение зависит от распределения;/etc/cron.daily/man-db
и/etc/cron.weekly/man-db
, скорее всего, это места). Вы можете увидеть, что вызваноmandb
, более внимательно посмотрев на процесс: запуститеpstree | less
и найдитеmandb
процесс. Запускps ww 12345
(где PID 12345 - это процесс, вызывающий ошибку) покажет полную командную строку.Это то, что вы можете диагностировать самостоятельно, но не можете исправить без прав root. Если у вас есть права доступа root, вы можете безопасно завершить
mandb
процесс (используйте командуsudo pkill mandb
илиsu -c 'pkill mandb'
, в зависимости от того, как вы стали пользователем root). В любом случае обратитесь к системному администратору и объясните симптомы. Предоставьте всю информацию, которую вы можете (например, какую программу вызыватьmandb
и с какими аргументами).источник
Я проверил скрипты cron, это была просто команда для обновления индексов человека, ускорения поиска руководств, ежедневных запусков, вы можете безопасно их убить.
Вам это не нравится, просто отключите его
chmod -x /etc/cron.daily/man-db
источник
Это Heisenbug, и, возможно, тот, который был исправлен в последних версиях mandb. Это связано со сломанными man-страницами, порядком обхода файловой системы и пошаговыми перестройками mandb, превращающимися в очень медленные полные перестроения (15 миллионов сбоев страниц или около того, что занимает минуты на вращающейся ржавчине).
Если вы хотите устранить неполадки, запустите:
и никогда не запускайте мандб с
--create
или без--no-purge
. Затем убедитесь, что у вас установлена последняя версия, и сообщите об ошибке, где cjwatson может ее увидеть.Если, с другой стороны, вы просто хотите избавиться от проблемы, запустите:
который отключит cronjob man-db (запускается ежедневно) и триггер dpkg (запускается при установке пакетов).
источник