lsof 与fuser

lsof 与fuser http://www.cnblogs.com/vigarbuaa/archive/2012/11/18/2776565.html 服务器上调试程序时,有时会遇到所需资源被占用的状况,这时就要查一下是什么程序占用了资源。须要用到lsof与fuser指令。 lsof用于显示打开文件的信息 lsof filename 显示打开指定文件的全部进程 lsof -a 表示两个参数都必须知足时才显示结果 lsof -c string 显示COMMAND列中包含指定字符的进程全部打开的文件 lsof -u username 显示所属user进程打开的文件 lsof -g gid 显示归属gid的进程状况 lsof +d /DIR/ 显示目录下被进程打开的文件 lsof +D /DIR/ 同上,可是会搜索目录下的全部目录,时间相对较长 例如 vigar@vigar-laptop:~/下载/nice$ lsof /opt/google/chrome/chrome COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME chrome 4913 vigar txt REG 8,6 68449288 1835017 /opt/google/chrome/chrome chrome 4917 vigar txt REG 8,6 68449288 1835017 /opt/google/chrome/chrome chrome 4919 vigar txt REG 8,6 68449288 1835017 /opt/google/chrome/chrome fuser 的做用与lsof很是类似,也会将使用指定文件的进程信息所有列出 vigar@vigar-laptop:~/下载/nice$ fuser -v /opt/google/chrome/chrome 用户 进程号 权限 命令 /opt/google/chrome/chrome: vigar 4913 ...e. chrome vigar 4917 ...e. chrome vigar 4919 ...e. chrome 权限含义:   c 将此文件做为当前目录使用。 e 将此文件做为程序的可执行对象使用。 r 将此文件做为根目录使用。 s 将此文件做为共享库(或其余可装载对象)使用 fuser另外一个很是有用的功能是-k,能够杀死指定进程(发SIGKILL信号) vigar@vigar-laptop:~/下载/nice$ fuser aaa.avi aaa.avi: 14097 vigar@vigar-laptop:~/下载/nice$ fuser -k aaa.avi aaa.avi: 14097 vigar@vigar-laptop:~/下载/nice$ fuser aaa.avi vigar@vigar-laptop:~/下载/nice$ 可知占用aaa.avi的进程已经被干掉。固然,执行这条指令须要足够的权限,有root权限最好,其它人是没法杀死别人的进程的。 当利用lsof或fuser查出指定进程号后,便可用netstat -anp | grep pid查出其开放端口 test> netstat -anp | grep 7172 (Not all processes could be identified, non-owned process info tcp 0 0 :::8777 :::* LISTEN 7172/java tcp 0 0 ::ffff:10.0.7.128:23564 ::ffff:10.0.3.103:1521 ESTABLISHED 7172/java tcp 0 0 ::ffff:10.0.7.128:23550 ::ffff:10.0.3.103:1521 ESTABLISHED 7172/java tcp 0 0 ::ffff:10.0.7.128:10629 ::ffff:10.0.3.91:1414 ESTABLISHED 7172/java tcp 0 0 ::ffff:10.0.7.128:23562 ::ffff:10.0.3.103:1521 ESTABLISHED 7172/java tcp 0 0 ::ffff:10.0.7.128:23572 ::ffff:10.0.3.103:1521 ESTABLISHED 7172/java 有时在机器上查出某个进程在跑,殊不知道程序部署在何处,能够用ps -ef 查出pid,用lsof| grep pid,根据获得的信息推断出程序位置
相关文章
相关标签/搜索