updatedb 更新locate搜索的数据库

本文介绍在Linux系统中如何解决使用updatedb命令时遇到的权限问题,并提供了解决方案,即通过sudo命令获取足够权限来更新mlocate数据库。

在Linux中,搜索文件可以用locate命令来搜索,搜索是在usr/lib/下的一个数据库中,但是它不是实时更新的,差不多一天一更新。所以当你新建一个文件的时候,用locate命令去搜索的话是搜索不到的,所以需要更新数据库,可以使用命令  updatedb。


输入时,出现以下问题报错:


updatedb: 无法为 `/var/lib/mlocate/mlocate.db' 打开临时文件


这个原因是权限问题,直接sudo updatedb就可以更新了,就可以找到新建的文件在哪了。

任务描述 相关知识 locate updatedb 编程要求 测试说明 任务描述 假设,我们想一个月前创建的一个文件,但是又不记得具体是放在什么位置,只记得文件的名称,通过本关的学习,我们将可以轻松的完成对文件/目录的搜索。 本关任务:使用locate命令查系统中的文件。 相关知识 locate locate命令用来查文件或目录。 locate命令要比其他查文件命令(例如:find)快得多,原因在于它不搜索具体目录,而是搜索一个数据库/var/lib/mlocate/mlocate.db。 /var/lib/mlocate/mlocate.db这个数据库中含有本地所有文件信息。Linux 系统自动创建这个数据库,并且每天自动更新一次,因此,我们在用locate文件时,有时会到已经被删除的数据,或者刚刚建立文件,却无法查到,原因就是因为数据库文件没有被更新。为了避免这种情况,可以在使用locate之前,先使用updatedb命令,手动更新数据库。 接下让我们详细的学习locateupdatedb的使用方法。 locate具体命令如下: locate 命令参数 文件/目录 常用命令参数如下: -c, --count 只输出到的数量; -d, --database DBPATH 使用DBPATH指定的数据库,而不是默认数据库/var/lib/mlocate/mlocate.db; -i, --ignore-case 忽略大小写; -q, --quiet 安静模式,不会显示任何错误讯息; -e, --existing 只显示当前存在的文件条目; 案例演示1: 搜索etc目录下以pass开头的文件或目录,具体使用如下命令: locate /etc/pass 案例演示2: 搜索包含passwd字母的文件或目录总个数,具体使用如下命令: locate -c passwd updatedb updatedb命令用来创建或更新locate命令所必需的数据库文件。 updatedb命令的执行过程较长,因为在执行时它会遍历整个系统的目录树,并将所有的文件信息写入locate数据库文件中。 具体命令如下: updatedb 命令参数 常用参数如下: -o<文件>:忽略默认的数据库文件,使用指定的slocate数据库文件; -U<目录>:更新指定目录的slocate数据库; -v:显示执行的详细过程; 执行权限:updatedb必须以root权限才能执行,如果是普通用户想执行updatedb时,需要在命令前加sudo命令来提升权限为root权限。 案例演示1: 新创建一个testFile文件,更新locate数据库后使用locate命令定位该文件,具体使用如下命令: touch testFile locate testFile sudo updatedb locate testFile 可以看到新创建文件后直接使用locate去查是没有任何结果的,只有更新数据库后才能查到新创建的文件。 案例演示2: 删除testFile文件,更新locate数据库后使用locate命令定位该文件,具体使用如下命令: rm testFile locate testFile sudo updatedb -U ./ locate testFile 第三条命令是只更新testFile所在目录的数据库,这样速度比较快,如果不使用该参数,则会更新整个文件系统的内容。 可以看到删除文件后直接使用locate去查是可以定位到的,但是此时文件已经不存在了,原因是没有马上更新数据库。 编程要求 在右侧编辑器中补充代码,使用locate命令查系统中的文件,具体编程要求如下: 使用locate命令查系统中所有包括group字母的文件或目录的总个数; 使用locate命令定位系统中最新创建的文件newFile。 测试说明 平台会对你编写的代码进行评测: 预期输出: 定位group文件/目录个数成功 定位newFile文件成功 只有胜利才能生存,只有成功才有代价,只有耕耘才有收获。——佚名 开始你的任务吧,祝你成功!
06-21
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值