fuser 和 lsof 可以用于系统安全检查。
用fuser查看哪些用户和进程在某些地方作什么:
fuser -cu /root 简略显示
fuser -muv /mnt3 分列显示

lsof 拥有更多的功能
# lsof -i 看系统中有哪些开放的端口,哪些进程、用户在使用它们,比 netstat -lptu 的输出详细。

# lsof -i 4  查看IPv4类型的进程
COMMAND    PID        USER   FD   TYPE DEVICE SIZE NODE NAME
exim4     2213 Debian-exim    4u  IPv4   4844       TCP *:smtp (LISTEN)
dhclient3 2306        root    4u  IPv4   4555       UDP *:bootpc

# lsof -i 6  查看IPv6类型的进程
COMMAND  PID        USER   FD   TYPE DEVICE SIZE NODE NAME
exim4   2213 Debian-exim    3u  IPv6   4820       TCP *:smtp (LISTEN)

# lsof -i @192.168.1.2  查看与某个具体的IP相关联的进程
COMMAND  PID USER   FD   TYPE DEVICE SIZE NODE NAME
amule   3620 root   16u  IPv4  11925       TCP 192.168.1.2:42556->77.247.178.244:4242 (ESTABLISHED)
amule   3620 root   28u  IPv4  11952       TCP 192.168.1.2:49915->118-166-47-24.dynamic.hinet.net:5140 (ESTABLISHED)

# lsof -p 5670 查看PID为5670的进程打开的文件。

通过lsof命令工具可以查看某个进程占用了哪些句柄。同时也可以看某个文件被哪些进程使用了。

2.lsof常见的用法

(A)查找应用程序打开的文件

lsof -p pid   可以查看进程号为pid的进程打开了哪些文件或者占用了哪些fd。

(B)查找打开某个文件的应用程序

lsof filename   可以查看名称为filename的文件被哪些进程打开了。

(C)使用lsof查看网络连接

命令格式为:

lsof -i protocol:@ip:port
其中protocol可以是tcp或udp,ip是主机ip,port是端口
具体使用命令有:

lsof -i #列出所有网络连接的进程
lsof -i tcp #列出所有正式使用tcp协议的进行网络通信的进程
lsof -i :8080 #列出正在监听8080端口的进程
lsof -i tcp:80 #列出正在使用tcp协议监听80端口的进程
(D)lsof还有一些其他高级的用法

例如,恢复已经被删除的文件等等。

备注:

(1)使用/usr/sbin/lsof |grep delete查看被rm的文件,仍然被进程占用,最终导致磁盘空间释放不了。当进程打开了某个文件时,只要该进程保持打开该文件,即使将其删除,它依然存在于磁盘中。这意味着,进程并不知道文件已经被删除,它仍然可以向打开该文件时提供给它的文件描述符进行读取和写入。除了该进程之外,这个文件是不可见的,因为已经删除了其相应的目录条目。

(2)lsof输出的信息中,有一列SIZE值,表示文件的大小,单位是Byte

学习资料来源:

http://www.ibm.com/developerworks/cn/aix/library/au-lsof.html

二、fuser介绍和使用

1.fuser

fuser能识别出正在对某个文件或端口访问的所有进程,类似于lsof。但从区别上来说,lsof可以通过文件名找到正在使用该文件的所有进程,同时也可以根据进程id找出该进程使用的哪些文件。fuser则是可以通过文件名找到使用该文件的所有进程。但是fuser有一个特别的用法在于它可以一次杀死那些正在访问指定文件的进程。

2.fuser的命令格式和常用选项

命令格式:

fuser [option] filename
常用的选项:

-v 列出进程的详细信息,而不仅仅是进程id
-u 列出进程所属的用
-k signal 如果不指定signal,那么默认是SIGKILL。当然用户自己指定信号,例如SIGHUP
-l 列出所有支持的信号

3.fuser命令使用举例

fuser /home/work/wahaha.txt #列出所有使用/home/work/wahaha.txt文件的进程
fuser -v /home/work/wahaha.txt #列出进程的详细信息,而不仅仅是进程id
fuser -u /home/work/wahaha.txt #同时列出进程的user
fuser -k /home/work/wahaha.txt #杀死所有正在使用/home/work/wahaha.txt文件的进程
fuser -k SIGHUP /home/work/wahaha.txt #向所有正在使用/home/work/wahaha.txt文件的进程发送HUP信号
fuser -l #列出所有支持的信号

---------------------

Linux学习笔记:fuser和lsof的更多相关文章

  1. Linux 学习笔记

    Linux学习笔记 请切换web视图查看,表格比较大,方法:视图>>web板式视图 博客园不能粘贴图片吗 http://wenku.baidu.com/view/bda1c3067fd53 ...

  2. linux学习笔记2-linux的常用命令

    第一篇博客:linux学习笔记1-ubuntu的安装与基本设置 之中,已经介绍了如何安装linux操作系统,以及一些基本的设置修改. 本篇博客主要介绍linux中的一些常用的终端命令 ======== ...

  3. Linux学习笔记(一)2015.4.13

    研究生由单片机转Linux学习 首先安装VMware虚拟机,用的是VMware 10.0 在VMware 10.0上安装视频上推荐的Red Hat Linux 5 安装后正式进入Linux学习 笔记1 ...

  4. 20160127 linux 学习笔记

    Linux学习笔记第一天 Linux基本介绍 Linux的起源和发展: 简单说linux是一种操作系统,可以安装在包括服务器.个人电脑,乃至PDA.手机.打印机等各类设备中. 起源: Linux起源于 ...

  5. linux —— 学习笔记(汇总)

    笔记目录:一.系统知识 和 基本概念                    二.常用操作                   三.系统管理(内存.设备.服务等管理)                   ...

  6. Linux学习笔记-林耐斯Notes-Linux就该这么学

    Linux学习笔记... 参考的优秀Linux网站: http://www.w3cschool.cn/linux/ http://www.linuxeye.com/ http://linux.vbir ...

  7. Linux~学习笔记目录索引

    回到占占推荐博客索引 本篇文章是对自己学习Linux及在它的环境下部署工具的一个总结,以方便自己查阅,也给他人一个帮助,本文章同时会不断的更新,欢迎大家订阅! 本目录包括的内容会包括linux基础命令 ...

  8. deepin linux学习笔记(四)进不去图形界面怎么办?

    目录 deepin linux学习笔记(四)进不去图形界面怎么办? 前言 更换成lxde桌面 进不去图形界面怎么办? 总结 deepin linux学习笔记(四)进不去图形界面怎么办? 前言 生命不息 ...

  9. deepin linux 学习笔记(二)——文本编辑器

    目录 deepin linux 学习笔记(二)--文本编辑器 前言 nano 小巧的命令行编辑器 通用 编辑 定位 排版 配置 vim 思路独特的超级编辑器 命令模式 插入模式 底线模式(末行模式) ...

随机推荐

  1. php文件包含漏洞 file inclusion vulnerability

    0x00 何为文件包含漏洞 开发人员如果在写类似include "a.php"的代码时,如果将a.php写成了可变的值,那么就可以在上面做文章,举个理想的例子: <? inc ...

  2. Go map使用

    前言 map 是在 Go 中将值(value)与键(key)关联的内置类型.通过相应的键可以获取到值. 在一个map里所有的键都是唯一的,而且必须是支持==和!=操作符的类型,切片.函数以及包含切片的 ...

  3. ubuntu16.04安装zabbix-server3.4

    一.安装前环境准备 部署zabbix需要安装apache,mysql和php sudo apt-get install apache2 sudo apt-get install mysql-serve ...

  4. 学习CSRF漏洞并挖掘CSRF漏洞

    什么是跨站请求伪造? 跨站请求伪造(英语:Cross-siterequest forgery),也被称为one-clickattack或者session riding,通常缩写为CSRF或者XSRF, ...

  5. sql sever 查询用户所有的表和各个表数据量

    和oracle有区别, 需要关联表 SELECT A.NAME ,B.ROWS  FROM sysobjects  A JOIN sysindexes B ON A.id = B.id WHERE A ...

  6. Django Restful Framework

    你在浏览器中输入了一个地址的时候发生了什么事情? 1.HOST 2.DNS 3.HTTP/HTTPS协议 发送一个协议 4.进入了实现了WSGI协议的服务器(wsgiref uwsgi(C语言实现,多 ...

  7. 1.Storm概述简介

    主要目标: 1. 离线计算是什么? 2. 流式计算是什么? 3. 流式计算与离线计算的区别? 4. Storm是什么? 5. Storm与Hadoop的区别? 6. Storm的应用场景及行业案例 7 ...

  8. 巧用linux云服务器下的的/dev/shm/,避开磁盘IO不给力!

    巧用linux云服务器下的的/dev/shm/,避开磁盘IO不给力! 一.什么是tmpfs和/dev/shm/? tmpfs是Linux/Unix系统上的一种基于内存的文件系统.tmpfs可以使用您的 ...

  9. 0011SpringBoot的@EnableWebMvc全面接管SpringMVC的自动配置(源码)

    所谓的@EnableWebMvc全面接管SpringMVC的自动配置,是指@EnableWebMvc注解会使SpringMVC的自动配置失效,原理如下: 1.查看@EnableWebMvc的源码,如下 ...

  10. nodejs常用框架使用样例

    Koa const Koa = require('koa'); const router = require('koa-router')(); const app = new Koa(); const ...