我有一个 Shell 脚本,根据进程是否在运行来归档日志文件。如果进程不再使用日志文件,则将其归档。目前,我正在使用 lsof 获取正在使用的日志文件,但是今后,我已决定使用 Perl 来执行此功能。
问题来了:是否有类似于 Linux 中 lsof 的 Perl 模块可以执行此操作?
问题来了:是否有类似于 Linux 中 lsof 的 Perl 模块可以执行此操作?
lsof
的大问题在于需要使用与操作系统无关的方式进行工作。使用 lsof
允许 Perl 程序员使用一致的应用程序,从而实现操作系统的独立性。fuser
命令,它显示具有文件句柄的进程 ID。还有一个模块试图实现相同的功能。从 perldoc 注意事项中可知:
也可以尝试遍历 /proc/*/fd 并查看其中的文件描述符,以查看是否有任何指向所讨论文件的描述符。如果已知正在打开日志文件的运行进程的进程 ID,则可以轻松查看该进程。请注意,这就是 fuser 模块的工作原理。这种方法的工作方式高度不可能适用于任何其他操作系统,只适用于 Linux,甚至可能不适用于其他 2.2.* 内核。
lsof
软件包的大小高达0.9兆字节。 - Daenyth