Answers:
是的,您可以在权杖中禁用它或删除提供的软件包updatedb
。在Red Hat系统上,您需要执行确定是否需要删除任何内容的步骤。
首先找出程序在磁盘上的位置。
$ type updatedb
updatedb is /usr/bin/updatedb
接下来找出软件包提供的内容updatedb
。
$ rpm -qf /usr/bin/updatedb
mlocate-0.26-3.fc19.x86_64
看看是否有任何要求mlocate
。
$ rpm -q --whatrequires mlocate
no package requires mlocate
不需要它,因此您可以删除包装。
$ yum remove mlocate
/var/lib/mlocate
吗?
您会知道,如果另一个程序包使用它,请使用程序包管理器将其删除,因为它必须依赖它(程序包依赖性)。
我有一台服务器Nginx
,php-fpm
并mysql
和它精美的作品没有updatedb
。
aptitude remove
,aptitude why
或aptitude search '?installed ?recommends(mlocate)'
。这些都将显示推荐的依赖关系,以及要求的依赖关系。apt现在默认情况下会安装推荐的软件包,因此尽管它们并不是必不可少的,但是可以依靠它们提供一些非常有用的子功能。
我不会这么说,但很可能不是updateb导致了您的问题。可能是您不想要的其他东西,或者是尚未配置为“喜欢”的备份应用程序,或者是配置文件/系统组结构存在一些安全问题。
似乎系统内存分配对用户不利的另一种情况是一个“不知道堆叠虚拟文件系统”的情况。那就是问题的鼻涕。可以说是“虚拟的逻辑不良炸弹”。
在ext 4系统上以fat32格式格式化的USB驱动器经常会发生这种情况,然后将其转移到zfs系统,该系统未将csh shell设置为man登录shell。它在磁盘上创建“只读USB文件系统”问题的虚拟递归,并将驱动器从fat32格式化/挂载到vFat,这反过来又会创建坏块扇区,并将目录提取(虚拟移动)到其上父目录级别,这会导致无限循环!该目录实际上不在父级的层次结构上。原因是csh的语法。*注意:该驱动器在除zfs c-shell登录系统以外的所有系统上都是只读的。
要完全禁用updatedb,可能会在内存分配和“回滚效果”方面产生不良逻辑。.如果您曾经不希望回滚,那么您知道我的意思是当两个小时的命令行脚本是Fubar编写的,因为您没有将作业处理分配到内存中。
现在,如果您有两个或多个物理处理器(例如,双核或更多)和ddr3 ram,则可以。只要您没有运行繁重的图形(在这种情况下,如果该功率负载导致了您的问题),则updateb将排在您的列表中。如果您出于某种原因试图掩盖系统的运行,那么还有其他方法可以解决此问题,而不是禁用updateb,实际上,updated会巩固您的行为,以至于在系统掩盖下“什么也没有发生”。
坦率地说,基于二进制文件/ usr / bin / updatedb的大小,并考虑与OS中的信号/系统通信的体系结构,并且Bash的大小是相互链接的Shell dash或ash的10倍,异步调用是在系统上非常便宜。
如果您登录时运行了编写的顺序脚本,并且您是管理员(例如sudo),则运行以下命令:
~$ sudo bash
:~# ./script.sh
然后,您可能想在脚本中创建一个局部变量(updatedb需要系统特权,AKA根/ sudo / wheel),例如:
#! /bin/sh
# Create local variables
UPD="updatedb"
echo "Beginning Execution of sequence "
在这种情况下,序列将使用您编写的其他shell脚本中的STDOUT / STDIN并在主脚本中将其作为变量执行,或者说您设置了个人或企业管理软件包,可在此从cdrom上载/下载/端口usb或任何非常大的文件,并且具有适合他们的个人安装脚本,您想保留updatedb。打开终端外壳后,这就是您的主要应用程序实例。其他应用程序可以/确实可以异步运行,但是就整体系统/计算需求而言,updatedb是最便宜的应用程序之一。很多次,尤其是在lxdm Desk Enviro和Lxterm上(那东西非常快),但不是唯一的;没有在脚本中添加updatedb,该系统向我显示了文件不存在或发生错误的错误。我喜欢什么!
外壳比它管理的系统快,我向您保证!
在这种情况下,您将调用updateb变量将先前的序列锁定到内存中,如下所示
echo "Updating local database "
$UPD
echo "Exiting script two "
exit
你看到我在说什么吗?如果您问这个问题是因为您正在运行执行速度测试,例如Andrew Tanenbaum风格而不是它。其他明智的使用该工具的好处。
locate
没有用,因为我无法确定它是否已建立索引。文件较旧时,我进行fzf
模糊搜索。
至少在ArchLinux中,似乎默认启用了,man-db.timer
并且updatedb.timer
默认情况下已启用(即:存在以下文件),但是存在no installation config (WantedBy, RequiredBy, Also, Alias settings in the [Install] section, and DefaultInstance for template units). This means they are not meant to be enabled using systemctl. [...]
(来自的输出systemctl enable {man-,update}db.timer
)。
这些是文件系统中存在的符号链接:
/usr/lib/systemd/system/multi-user.target.wants/man-db.timer
/usr/lib/systemd/system/multi-user.target.wants/updatedb.timer
只需删除它们就可以了。
不过,他们会在每个RE /安装重新创建/升级的man-db
,mlocate
分别包。
对于ArchLinux,可能的解决方法是为pacman删除它们提供一个钩子。
但是,即使您希望在升级过程中启用它们,也会在每次此类事件时将其删除。
在这种情况下,可以在希望启用计时器时禁用该挂钩。
但是,启用计时器仅在软件包的重新/安装/升级时才有效,因为默认.timer
单位文件中没有可直接systemctl enable
配置计时器的部分。
需要使用手册ln -s ../man-db.timer /usr/lib/systemd/system/multi-user.target.wants/man-db.timer
或ln -s ../updatedb.timer /usr/lib/systemd/system/multi-user.target.wants/updatedb.timer
命令来启用计时器,并删除链接以禁用计时器。
您可能已经覆盖了自定义单位/etc/systemd/system/{man-,update}db.timer
,WantedBy=multi-user.target
在[Install]
允许的部分中提供systemtl enable|disable
,但是链接/usr/lib/systemd/system/multi-user.target.wants/{man-,update}db.timer
仍会在re / installation / upgrade上创建,从而有效地重新启用.timer
s。
您也可以运行systemctl mask man-db.timer updatedb.timer
以掩盖计时器。
即使仍然有可能手动运行systemctl start man-db.service updatedb.service
以启动相应的服务,但由于用户发现自己想要/需要这样做的原因,您也将无法手动启动计时器。如果需要/需要,
此解决方法不允许覆盖自定义/etc/systemd/system/{man-,update}db.timer
单元文件,因为systemd需要用符号链接替换它们/dev/null
以表示被屏蔽的单元。
遮罩似乎是侵入性最小的解决方案。
我更喜欢/usr/lib/systemd/system/multi-user.target.wants/{man-,update}db.timer
在每次升级后手动删除,并覆盖/etc/systemd/system/{man-,update}db.timer
具有[Install]
一部分的单元文件WantedBy=multi-user.target
以启用手动systemctl
启用/禁用。
不幸的是,目前还没有简单的解决方法,至少我可以想到。
这假定包man-db
,mlocate
都希望/需要保存在系统中安装:移除它们不会是一个期望的/有用的解决方案。
另请参阅: https://www.reddit.com/r/archlinux/comments/36fqzh/updatedbservice_and_mandbservice_increases_boot/
rpm
也有--whatrecommends
。我认为Fedora在过去的几年中开始将其视为一种概念。(在debian / ubuntu以后很长一段时间就默认安装“推荐”依赖项以及“需要”依赖项)。