我可以禁用updatedb.mlocate吗?

Dav*_*rks 77 filesystem ext4 updatedb

在 ubuntu 服务器上,我正在尝试使用 Java 从压缩文件格式中解压缩 300M 图像文件。

我的解包速率是 0.5Mbytes/sec,糟糕透顶(以这个速率解压 1.5TB 需要 34 天)。

我试图找出原因,我注意到的唯一奇怪之处是,在我进行解包过程时,updatedb.mlocate 始终有效。我想关闭它以查看它是否妨碍了它,但我不太了解它是什么。

最佳

top - 05:16:52 up 1 day,  5:15,  3 users,  load average: 2.00, 2.01, 1.83
Tasks:  83 total,   1 running,  82 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.4%us,  0.8%sy,  0.0%ni,  8.4%id, 90.2%wa,  0.0%hi,  0.0%si,  0.2%st
Mem:   1737420k total,  1722680k used,    14740k free,  1241260k buffers
Swap:   917500k total,      160k used,   917340k free,   165448k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
22901 davidpar  20   0 1051m  56m 4992 S    3  3.3   0:47.84 java
 2221 root      20   0 32348  26m  268 D    1  1.6  27:57.86 updatedb.mlocat
   25 root      20   0     0    0    0 S    0  0.0  10:10.77 kswapd0
  678 root      20   0 15864  444  268 S    0  0.0   0:19.45 irqbalance
  849 davidpar  20   0 26560 1676  332 S    0  0.1  17:17.49 screen
Run Code Online (Sandbox Code Playgroud)

Total DISK READ: 4.07 M/s | Total DISK WRITE: 789.62 K/s
  TID  PRIO  USER     DISK READ  DISK WRITE  SWAPIN     IO>    COMMAND
 2221 idle root     1556.98 K/s    6.36 K/s  0.00 % 99.61 % updatedb.mlocate
22902 be/4 davidpar    2.54 M/s  671.93 K/s  0.00 % 96.96 % java -cp /home/davidparks21/fruggutils/lib/FruggMapreduceJobs.~educe.UnpackImages /mnt/local/imagebinaries-r-00010 /mnt/ebs1/
  547 be/3 root        0.00 B/s   87.47 K/s  0.00 %  0.30 % [jbd2/xvdf-8]
  177 be/3 root        0.00 B/s    3.98 K/s  0.00 %  0.15 % [jbd2/xvda1-8]
Run Code Online (Sandbox Code Playgroud)

Eri*_*lho 85

它可以被杀死:

sudo killall updatedb.mlocate
Run Code Online (Sandbox Code Playgroud)

或者:

sudo kill -9 <PID>
Run Code Online (Sandbox Code Playgroud)

它每天由 cron 运行。禁用它:

sudo chmod -x /etc/cron.daily/mlocate
Run Code Online (Sandbox Code Playgroud)

如果您想重新启用它:

sudo chmod +x /etc/cron.daily/mlocate
Run Code Online (Sandbox Code Playgroud)

  • 不要忘记删除`/var/lib/mlocate/mlocate.db` (11认同)
  • 编辑文件`/etc/updatedb.conf` 并将`PRUNEPATHS` 设置为您**不想** 搜索的目录。 (11认同)
  • 禁用它是否安全? (2认同)
  • ZOMG 是的。做这个。 (2认同)
  • @inetpro 谢谢。就我而言,我使用的是“backintime”,它随着时间的推移创建了大量的硬链接,一旦我将项目添加到“PRUNEPATH”,事情就会变得更好。 (2认同)
  • 备注:扩展 `PRUNEPATHS` 后运行 `sudo Updatedb` 以触发缩减。 (2认同)

KGI*_*III 20

我不想完全消除这个过程,但我确实想让它不那么频繁地发生,所以我想出了如何将它设置为每周而不是每天运行。这是基于上面接受的答案但最好列为它自己的答案,因为它没有禁用它。

也就是说......它相当简单,似乎工作得很好。

sudo chmod -x /etc/cron.daily/mlocate
sudo cp /etc/cron.daily/mlocate /etc/cron.weekly/mlocate
sudo chmod +x /etc/cron.weekly/mlocate
Run Code Online (Sandbox Code Playgroud)

第一个禁用 cron 作业。第二个将其移至每周任务。第三个命令设置权限以使其启用。每天、每小时、每周和每月都是选项。

  • 请参阅“[如何让 mlocate 仅索引某些目录](https://askubuntu.com/q/160424/79344)”了解另一种加快速度的方法。 (2认同)

小智 13

没用过locate,所以删了。 sudo dpkg -P mlocate 另见:https : //wiki.archlinux.org/index.php/File_system_search

  • 还可以考虑安装 [mlocate-conflicting-package](https://github.com/rdiez/Tools/tree/master/MlocateConflictingPackage) 以防止再次安装 `mlocate`。 (3认同)

小智 7

如果您卸载locate,mlocateplocate使用例如:

sudo apt remove locate mlocate plocate
Run Code Online (Sandbox Code Playgroud)

您可以通过以下方式阻止它们重新安装:

cat <<EOF | sudo tee /etc/apt/preferences.d/do-not-install-locate.pref
Explanation: Do not install locate nor mlocate nor plocate in order to avoid excessive Disk I/O
Package: locate mlocate plocate
Pin: origin *
Pin-Priority: -1
EOF
Run Code Online (Sandbox Code Playgroud)