linux中是否有类似于lsof命令的perl函数?

linux中是否有类似于lsof命令的perl函数?,perl,lsof,Perl,Lsof,我有一个shell脚本,它根据进程是否正在运行来归档日志文件。如果进程未使用日志文件,则我将其存档。到目前为止,我一直在使用lsof来获取正在使用的日志文件,但在将来,我决定使用perl来完成此功能 有没有一个perl模块类似于linux中lsof可以执行的功能?有一个perl模块,它围绕lsof展开。请参阅。在我看来,不使用lsof的最大问题是需要以独立于操作系统的方式工作。使用lsof允许perl程序员使用一致的应用程序,从而实现操作系统的独立性 让perl模块开发人员编写lsof实际上就是

我有一个shell脚本,它根据进程是否正在运行来归档日志文件。如果进程未使用日志文件,则我将其存档。到目前为止,我一直在使用lsof来获取正在使用的日志文件,但在将来,我决定使用perl来完成此功能


有没有一个perl模块类似于linux中lsof可以执行的功能?

有一个perl模块,它围绕lsof展开。请参阅。

在我看来,不使用
lsof
的最大问题是需要以独立于操作系统的方式工作。使用
lsof
允许perl程序员使用一致的应用程序,从而实现操作系统的独立性

让perl模块开发人员编写lsof实际上就是将lsof编写为一个库,然后将其链接到perl中——这比仅仅使用现有的二进制代码要复杂得多

还可以使用,它显示带有文件句柄的进程ID。还有一种方法试图实现相同的功能。perldoc的说明:

这种工作方式不太可能在任何其他操作系统上工作 除了Linux之外,即使在2.2之外,它也可能无法工作* 果仁

您可以尝试遍历/proc/*/fd并查看其中的文件描述符,看看是否有任何描述符指向所讨论的文件。如果知道要打开日志文件的正在运行的进程的进程ID,那么查看该进程也同样容易。请注意,这就是定影器模块的工作方式


也就是说,应该询问“您为什么要离开lsof”

除了Unix::lsof之外,还有其他模块吗?这个函数同样依赖于我将在不久的将来卸载的lsof二进制文件。@nlrreddy:为什么要卸载它?至少在我的系统上,
lsof
包的重量高达0.9兆。@Daenyth:我看到过在操作系统补丁后lsof无法工作的问题。谢谢@MichaelT,我使用的fuser与lsof的功能类似。