在Ubuntu Linux上,mandb连续运行(在后台运行)是否正常?


12

我可以在我的机构访问Ubuntu Linux节点。节点在组中共享,但是通常我是唯一使用此特定节点的人。

我正在该节点上的所有8个CPU上并行运行计算。我的计算在运行,但是当我使用查看活动的进程时top,会看到另一个表示user man和command的进程mandbmandb据我看,该命令似乎每次都在运行top,并且似乎占用了相当多的CPU能力(6 %CPU)和内存(2.5 %MEMtop

当我环顾互联网时,似乎:

mandb 用于初始化或手动更新通常由人工维护的索引数据库缓存。

那么,为什么mandb始终在该节点上运行?(根据其他节点,我在机构集群中的其他节点上都没有这个问题top。)mandb由于我目前不在看手册,为什么需要一直运行?

此过程是否可能是我可以安全终止使用的幻影过程kill


@derobert我不是系统管理员。好吧,我会问他。谢谢。
安德鲁(Andrew)

Answers:


10

mandb连续运行是不正常的。通常,mandb每天在cron作业中运行一次,以执行维护任务,例如更新已安装手册页的索引以及构建或修整格式化的手册页的缓存。如果您有很多手册页和慢速磁盘,则日常工作应在几秒钟内完成,也许要几分钟。如果作业的运行时间超过该时间,则可能是错误的。

6%的CPU并不高,但是该进程可能正在执行磁盘I / O。群集节点上2.5%的内存听起来很高。可能是该作业配置错误并查找了该不应该在的位置,或者程序中存在错误mandb,或者硬件故障导致mandb卡住了。

您可以在/etc/crontab或中观看cron脚本/etc/cron.*/*(确切位置取决于发行版;/etc/cron.daily/man-db并且/etc/cron.weekly/man-db可能是位置)。您可以mandb通过更仔细地查看流程来查看调用了什么:运行pstree | less并搜索mandb流程。运行ps ww 12345(其中12345是有问题的进程的PID)将显示完整的命令行。

您可能可以自行诊断,但没有root权限就无法修复。如果您确实具有root权限,则可以安全地终止该mandb进程(使用命令sudo pkill mandbsu -c 'pkill mandb',具体取决于您成为root的方式)。无论如何,请与系统管理员联系并解释症状。提供您可以提供的所有信息(例如,调用了什么程序mandb以及带有什么参数)。


2

我检查了cron脚本,它只是更新人索引,加快搜索手册的命令,每天运行,可以安全地将其杀死。

您不喜欢它,只需通过以下方式将其禁用 chmod -x /etc/cron.daily/man-db


2

这是一个Heisenbug,可能是在最新版本的mandb中修复的一个。它与损坏的手册页,文件系统遍历顺序以及mandb的增量重建变成非常慢的完全重建(大约1500万页错误,这需要几分钟的旋转锈蚀)有关。

如果要对其进行故障排除,请运行:

sudo mandb --no-purge --debug

并且永远不要在有--create或没有的情况下运行mandb --no-purge。然后,确保您具有最新版本,并报告一个cjwatson可以看到的错误。

另一方面,如果您只是想摆脱问题,请运行:

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

这将禁用man-db cronjob(每天运行)和dpkg触发器(在安装软件包时运行)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.