在 Ubuntu Linux 上,mandb 连续运行(显然在后台)正常吗?

在 Ubuntu Linux 上,mandb 连续运行(显然在后台)正常吗?

我可以访问我所在机构的 Ubuntu Linux 节点。这些节点在组之间共享,但通常我是唯一使用该特定节点的人。

我正在该节点上的所有 8 个 CPU 上并行运行计算。我的计算正在运行,但是当我使用 查看活动进程时top,我看到一个附加进程,上面写着 userman和 command mandb。根据 的说法,这个mandb命令似乎每次我查看时都会运行top,并且它似乎占用了相当可观的 CPU 功率 ( 6 %CPU) 和内存 ( ) 。2.5 %MEMtop

当我在互联网上查找时,似乎是:

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

那么为什么mandb一直在这个节点上运行呢? (根据top其他节点的说法,我在我的机构集群内的其他节点上没有这个问题。)为什么mandb需要一直运行,因为我是不是目前正在查看手册?

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

答案1

mandb连续运行是不正常的。通常mandb每天运行一次计划任务作业,执行维护任务,例如更新已安装手册页的索引以及构建或修剪格式化手册页的缓存。日常作业应该在几秒钟内运行,如果您有大量手册页和缓慢的磁盘,则可能需要几分钟。如果作业运行的时间超过这个时间,则说明出现了问题。

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 脚本,它只是一个更新 man 索引、加快手册搜索速度的命令,每天运行,你可以安全地杀死它。

你不喜欢它,只需禁用它chmod -x /etc/cron.daily/man-db

答案3

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

如果您想排除故障,请运行:

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 触发器(在安装软件包时运行)。

相关内容