红联Linux门户
Linux帮助

locate命令出错!!!

发布时间:2008-06-30 13:31:58来源:红联作者:luyangbox
我用虚拟机安的红旗linux6.0但当用locate命令时出现:
locate: can not open `/var/lib/mlocate/mlocate.db': 没有那个文件或目录
我觉的可能是因为没有更新数据库的原因,但当我用updatedb命令更新数据库时(我是以root用户登陆的)出现:
updatedb: src/updatedb.c:595:scan_cwd: 断言“name_size > 1”失败。
小弟初学请高手指点一下?
文章评论

共有 3 条评论

  1. wuyuejingdian 于 2008-12-03 08:09:19发表:

    updatedb
    updatedb: src/updatedb.c:595:scan_cwd: 断言“name_size > 1”失败。

    网上搜索此问题,只有问的,没有回答的,因此只好自己解决。

    使用updatedb的"-v"选项,发现是“/sys/module/nousb/parameters/目录里的一个怪异文件导致updatedb退出,这个怪异文件在列表里如下所示:
    ls /sys/module/nousb/parameters/ -lah
    总计 0
    drwxr-xr-x 2 root root 0 2008-04-24
    drwxr-xr-x 2 root root 0 2008-04-24 .
    drwxr-xr-x 3 root root 0 2008-04-24 ..


    就是第一个文件,什么也没显示的。也没办法删除,重启检测文件系统也没有错误,晕。

    最后看了看updatedb的文档,修改了一下它的配置文件,修改/etc/updatedb.conf,把目录"/sys/module/nousb/parameters"(不含引号)放到PRUNEPATHS里,不让updatedab扫描这个目录,然后重新执行updatedb这个命令,顺利完成,至此问题解决。

    [ 本帖最后由 wuyuejingdian 于 2008-12-3 08:13 编辑 ]

  2. luyangbox 于 2008-06-30 22:26:15发表:

    感谢你的回答,不过就是我在用updatedb时就已出错了! updatedb: src/updatedb.c:595:scan_cwd: 断言“name_size > 1”失败。

    有没有其他解决办法???

  3. sonr 于 2008-06-30 16:00:45发表:

    在使用 locate 命令查找文件时,出现:

    locate: can not open `/var/lib/mlocate/mlocate.db': 没有找到指定数据库文件

    使用 #updatedb,即可以解决问题。

    locate指令和 find找寻文件的功能类似,但 locate是透过 update程序将硬盘中的所有文件和目录资料先建立一个索引数据库,在执行loacte时直接找该索引,查询速度会较快,索引数据库一般是由操作系统管理,但也可以直接下达 update强迫系统立即修改索引数据库。不过第一次在执行 update后再使用 locate寻找文件常会失败,此时就要执行 slocate -u该命令(也可执行updatedb指令,其效果相同)来更新slocate数据库,该命令会在/usr/sbin下产生slocate执行档,再由locate到此数据库寻找所要找的资料。