Linux系统locate命令仍返回已删除文件路径问题咨询
问题原因
locate命令并非实时遍历磁盘查询文件,而是读取系统预先生成的文件索引数据库/var/lib/mlocate/mlocate.db返回结果。该数据库默认由系统定时任务(通常为每日执行一次)自动更新,你手动删除文件后,数据库还未到更新时间,仍然保留了该文件的旧索引记录,就会出现文件已删除但locate仍然返回对应路径的情况。
updatedb报错原因
updatedb命令的作用是刷新mlocate的索引数据库,而数据库文件/var/lib/mlocate/mlocate.db的权限仅允许root用户修改,普通用户执行updatedb时没有写入权限,就会抛出你遇到的临时文件创建失败报错。使用root权限执行updatedb后索引会被刷新,locate就不会再返回已删除文件的记录。
补充建议
如果需要实时校验文件是否存在,更稳妥的方式是使用ls、find这类直接遍历文件系统的命令,不需要依赖预先生成的索引,结果是实时准确的。
内容的提问来源于stack exchange,提问作者Sharad Nanda
相关产品推荐
相关产品推荐

