查找与配置文件关联的命令

查找与配置文件关联的命令

假设我不知道~/.bashrc有什么用。是否有一个命令可以告诉我该文件是什么/做什么?除了谷歌搜索答案。手册页有一个文件部分,也许有一种方法可以告诉 man:给我在其手册页 FILES 部分中有此文件的命令的手册页。这样的事情存在吗?

答案1

如果您有包管理器,您可以查询哪个包拥有给定的文件。

在 Arch Linux 上,您可以使用

pacman -Qo FILENAME

在 Ubuntu、Debian 和其他带有 apt 的发行版上,您可以使用

apt-file FILENAME

要搜索 man 文件,您可以使用zgrep

cd /usr/share/man
find -name *.gz | \        # List all *.gz files
while read line; do        # For each file:
  zgrep bashrc "$line" &&  # call zgrep with pattern and filename
  echo "--- $line ---";    # print filename if zgrep found something (&&)
done                       # 

答案2

谷歌通常是最快的方法。但是,如果要搜索手册页,可以使用以下命令列出 ( -w) 包含任意位置文本的用户命令(第 1 节)的所有手册页.bashrc

man -w -s 1 -K .bashrc

对于像这样的文件.bashrc,这会以手册页的形式出现一些误报,建议向.bashrc.该命令用于 man 的 man-db 实现,该命令在 Linux 下很流行。还有其他 man 实现没有全文搜索选项;您可以grep在找到手册页的位置后使用,例如

grep -F .bashrc /usr/man/man1/*.1

如果你想找到哪个程序访问了该配置文件,你可以设置一个监控系统。您可以使用记录文件系统监视目录树中的所有访问。监视整个主目录可能非常冗长,并且 LoggedFS 只能监视目录树,而不能单独监视常规文件,因此要监视特定文件,请将其移动到自己的目录并创建符号链接。

mkdir ~/monitored
mv ~/.bashrc ~/monitored
ln -s monitored/.bashrc ~
loggedfs -l ~/monitored.log ~/monitored

观察日志文件以查看进程何时访问它。默认情况下,进程名称包含在日志中。

答案3

我推荐@akrafs 答案,但如果不够详细;您可以设置auditd来记录哪个文件访问了配置文件。

更多详情请参阅:http://www.la-samhna.de/library/audit.html

相关内容