长期以来,我的 Ubuntu VM 一直存在严重的性能问题,因为每天的某个时间 CPU 都会达到 100%,这表明挂载共享目录的 fuse 进程存在问题/mnt/hgfs
。为了找出导致问题的原因,我做了
$ sudo lsof /mnt/hgfs/
[sudo] passord for myuser:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
find 20811 nobody 4r DIR 0,45 327680 1644542 /mnt/hgfs/SharedData/Users/myuser/Pictures/Lightroom/Main Previews.lrdata/9
然后找到该find
进程的父进程:
$ sudo pstree -s -p 20811
systemd(1)───anacron(20328)───sh(20470)───run-parts(20472)───locate(20715)───updatedb.findut(20720)───updatedb.findut(20728)───su(20786)───sh(20809)───find(20811+
因此,这是由 cron 作业调用而导致的updatedb
。没关系,我知道updatedb
在 有一个配置文件/etc/updatedb.conf
,所以我将其添加/mnt/hgfs
到变量中PRUNEPATHS
,并认为这就是它。
事实证明并非如此。同样的问题不断出现。
好的,所以 grep 目录后/etc/cron.*
我很快就发现了/etc/cron.daily/locate
,这次我查看了一下,发现脚本设置了自己的自定义配置,包括PRUNEPATHS
。它似乎/etc/updatedb.conf
根本没有查阅。这让我非常困惑。日常更新中不使用的配置文件有什么意义?现在我需要破解系统提供的文件才能使其工作。这似乎违反直觉,而且不是我在 Ubuntu 上习惯的东西。
有人能解释一下这里的逻辑吗,或者这是怎么回事应该上班?