“lsof”命令的替代品?

“lsof”命令的替代品?

在许多情况下,lsof它没有安装在我必须使用的机器上,但lsof非常需要它的“功能”(例如在 AIX 上)。 :\

lsof非 Windows 世界中是否有类似的应用程序?

例如,我需要知道哪些进程使用该/home/username目录?

答案1

我知道fuser,查看它在您的系统上是否可用。

答案2

Unix 罗塞塔石碑是解答此类问题的好资源。它提到了一些替代方案拉索夫(见下文)。但请注意,lsof 是其功能的事实上的标准应用程序。

如果您只想查找打开特定文件的进程 ID,那么您可以使用fuser在任何符合 POSIX 标准的系统上。

在具有目录的操作系统上/proc,您可以lsof通过/proc.一些操作系统有这样的命令:

答案3

如果您碰巧运行 Solaris,则lsof可以使用pfiles.

例如:

pfiles /proc/*

答案4

这应该可以解决问题。它将提供所有文件描述符映射,但以下内容除外:

  • 您无权查看,或者
  • 适用于包含字符串“权限被拒绝”的文件
( find /proc -mindepth 1 -maxdepth 1 \
  | grep -E [0-9]+ | xargs -n 1 -I% find %/fd \
  | xargs ls -l \
  | grep -v "Permission denied" ) 2>/dev/null \
| cut -d' ' -f12- | less

如果您已经知道您只关心某些程序的映射,那么您可以使用更多类似的内容:

exec=sshd
pgrep "$exec" | xargs -n 1 ps -p
pgrep "$exec" | xargs -n 1 -I% find /proc/%/fd | xargs ls -l | cut -d' ' -f12- | less

相关内容