该fuser
命令让我知道哪些进程正在使用文件或目录.
我正在寻找相反的命令:让我知道进程正在使用哪些文件.
忘记提到它是用于Solaris系统的.
lsof -p
从这里开始
lsof代表" LiSt Open Files ".这个shell命令看起来很简单:它列出了有关UNIX框上进程打开的文件的信息.
尽管它的(明显的)适度的任务声明,lsof实际上是最强大和最有用的UNIX命令之一.它的原始功能来自UNIX的设计原则之一,通常被描述为"在UNIX中,一切都是文件".这意味着打开文件的lsof概念不仅涵盖常规文件,还包括以下内容:
目录
流或网络文件(例如,Internet或UNIX域套接字和NFS文件)
本机库(例如,链接到进程的.soor .dylibdynamic库)
块和字符特殊文件(例如,磁盘卷,外部硬盘驱动器,控制台或鼠标)
管道
等等,我找不到我的系统上的lsof!
lsof是一种非常流行的工具,它已被移植到几乎所有UNIX方言(Linux,Mac OS X,BSD,Solaris等).如果您的盒子上没有它,请使用常用的包管理系统进行安装.您可以在Sun免费软件上找到Solaris的lsof软件包.
虽然我不会吝惜任何人学习的Dtrace或获取经验安装软件,Solaris中有是一个命令来查看一个进程打开文件:在/ usr/bin中/ PFILES
% tail -f /etc/motd & [1] 6033 % pfiles 6033 6033: tail -f /etc/motd Current rlimit: 256 file descriptors 0: S_IFREG mode:0644 dev:182,65538 ino:163065 uid:0 gid:3 size:54 O_RDONLY|O_LARGEFILE /etc/motd 1: S_IFCHR mode:0620 dev:299,0 ino:718837882 uid:101 gid:7 rdev:24,3 O_RDWR|O_NOCTTY|O_LARGEFILE /dev/pts/3 2: S_IFCHR mode:0620 dev:299,0 ino:718837882 uid:101 gid:7 rdev:24,3 O_RDWR|O_NOCTTY|O_LARGEFILE /dev/pts/3