Linux里怎么打开pt文件,Linux学习笔记:fuser和lsof,查看打开的文件

fuser根据目录或者文件来查看打开的程序和用户,如果在umount一个设备时出现busy,就可以利用fuser来查看被什么程序给占用了。

实验

进入lvm后,又去umount /lvm是肯定不行,也可以透过这样看到fuser的用法

[root@localhost ~]# cd /lvm

[root@localhost lvm]# umount /lvm

umount:

/lvm: device is busy.

(In some cases useful info about processes that use

the device is found by lsof(8) or fuser(1))

[root@localhost lvm]# fuser -uv /lvm

USER PID ACCESS COMMAND

/lvm: root 3143 ..c.. (root)bash

参数u是显示程序的执行者

参数v则显示列名,比较详细,除非用于SHELL编程,否则建议使用它增强可读性

另外还有

参数m,可以上提到文件最顶目录,查看占用程序;

参数k,试图使用SIGKILL去终止占用的程序;

参数i,配合k参数询问是否终止程序;

参数signal,例如-1、-9、-15,具体参考kill命令

输出的结果中,3143是占用程序的PID,可透过ps去查,可见占用的程序是bash

[root@localhost lvm]# ps aux | grep 3143

root 3143 0.0 0.1 5232 1708

pts/1 Ss 20:58 0:00

-bash

..c..其实是五个位,每个位代表不同的意思

c代表这个程序就在当前目录下

e可被触发为执行状态

f是一个被开启的档案

r代表顶层目录

F档案被开启,并且等待回应

m可能为动态函数库

vim一个新文件,然后按ctrl+z的效果

[root@localhost lvm]# fuser -uv .test.swp

USER PID

ACCESS  COMMAND

.test.swp: root 3209 F....

(root)vim

使用tail

-f去监视一个文件的结尾,然后ctrl+z的效果

[root@localhost lvm]# tail -f

/etc/sysconfig/network-scripts/ifcfg-eth0

[root@localhost lvm]# fuser -uv

/etc/sysconfig/network-scripts/ifcfg-eth0

USER PID ACCESS COMMAND

/etc/sysconfig/network-scripts/ifcfg-eth0:

root 3215 f.... (root)tail

再来看lsof

既然能根据文件来查打开的程序,也就该用根据程序来查打开的文件

不带参数的lsof会显示当前系统中所有打开的文件和打开的程序

要根据程序名去找的话,只需要grep就可以了

[root@localhost ~]# lsof | sed -n '1p';lsof | grep

rsyslogd

COMMAND PID USER FD TYPE DEVICE

SIZE/OFF NODE NAME

rsyslogd 1126 root cwd DIR 8,3 4096 2 /

rsyslogd 1126 root rtd DIR 8,3 4096 2 /

rsyslogd 1126 root txt REG 8,3 404168 8317 /sbin/rsyslogd

(略)

参数u,可以根据执行用户来查找打开的文件

[root@localhost ~]# lsof -u smmsp

COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE

NAME

sendmail

1192 smmsp cwd DIR 8,3 4096 134134 /var/spool/clientmqueue

sendmail

1192 smmsp rtd DIR 8,3 4096 2 /

sendmail

1192 smmsp txt REG 8,3 856280 16158 /usr/sbin/sendmail.sendmail

sendmail

1192 smmsp mem REG 8,3 103384 4454

/lib/libresolv-2.12.so

sendmail

1192 smmsp mem REG 8,3 35212 5880

/lib/libwrap.so.0.7.6

sendmail

1192 smmsp

mem REG 8,3 38376 4432

/lib/libcrypt-2.12.so

参数a,逻辑运算符and,代表前面的参数与后面的参数都匹配时才输出

[root@localhost ~]# lsof -u root -a -U

COMMAND PID

USER FD TYPE DEVICE SIZE/OFF NODE NAME

init 1 root 7u unix

0xf66b4c40 0t0 6983 socket

udevd 419 root 4u unix

0xc1454c80 0t0 7119 socket

udevd 419 root 8u unix

0xc1454a80 0t0 7141 socket

udevd 419 root 9u unix

0xf66b4440 0t0 7142 socket

lsof根据文件夹来查打开的文件

[root@localhost ~]# lsof +d /dev | grep -v

'null'

COMMAND PID

USER FD TYPE DEVICE SIZE/OFF NODE NAME

rsyslogd

1126 root 0u unix

0xc15ac8c0 0t0 8449 /dev/log

(略)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值