查找与软件相关的文件

时间:2010-02-16 13:24:05

标签: linux file package

我有一个疑问。我正在做一个与Linux系统恢复概念相关的项目。我计划在发生故障时执行应用程序明智的回滚。有没有办法弄清楚系统中应用程序使用的所有文件是什么?

确定。我会说清楚一点。例如,考虑firefox应用程序。安装时,许多文件从.deb文件写入文件夹,如/ etc,/ usr,/ opt等。在Windows中,所有文件都安装在程序文件下的一个文件夹中,而在linux中却没有。那么有什么方法可以找出属于软件的文件吗?

感谢。

4 个答案:

答案 0 :(得分:5)

这可以涵盖好几件事。

如果您的意思是,您的应用程序安装提供了哪些文件?然后答案是,使用体面的包管理,提供你的软件作为rpm / deb / ...任何包,并且安装将负责其余的。

如果您的意思是,我们的应用程序引用了哪些库?然后你可以使用ldd这将告诉你在执行这个应用程序时使用了哪些动态库。

如果您的意思是,我的应用程序主动使用哪些文件?然后看一下lsof(lsof = list open files)的输出(或者ls / proc // fd /),这将显示你的应用程序打开的所有文件描述符(文件,套接字,管道,tty,... )

或者您可以使用以上所有内容。

您无法跟踪的一件事(除非您自己记录)是您的应用程序在其生命周期中创建了哪些文件。

答案 1 :(得分:1)

确定随应用程序一起安装的所有文件取决于程序包管理器。我所处理的所有(apt,pacman)都有这种能力。

要确定应用程序当前打开的所有文件,请使用lsof。

答案 2 :(得分:0)

嗯,这取决于......

大多数Linux系统都有某种数据包管理软件,比如debian和ubuntu中的aptitude。在那里,您有关于什么属于数据包的信息。您可以使用该信息。这不包括在应用程序运行时创建的文件。

答案 3 :(得分:0)

如果您使用的是基于RPM的发行版

# rpm -Uvh --repackage pkg-1-1.i386.rpm

将重新打包旧文件并在事务中升级,以便稍后在出现问题时可以回滚。要回滚到昨天的状态,例如

# rpm -Uvh --rollback yesterday

有关其他示例,请参阅this article