关于linux命令大全里没有fuser

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于linux命令大全里没有fuser相关的知识,希望对你有一定的参考价值。

我正在学习linux shell编程
前几天有道题用到了umount命令然后出现了device is busy不能卸载
然后我就上网查找解决方法 看到了一个使用fuser -k 来杀掉进程的命令
使用下来的确有效
但是我又发现这个fuser命令在网上直接搜是搜的到,可是在各种linux大全里就是没有。
谁能告诉我这是为什么?有什么大全里有这个命令(包括这类在大全中没写的命令)?还是因为这个命令比较特殊?

卸载无响应的 DVD 驱动器

网络新手的经历:按下服务器(运行基于 Redmond 的操作系统)DVD 驱动器上的 Eject 按钮时,它会立即弹出。他然后抱怨说,在大多数企业 Linux 服务器中,如果在那个目录中运行某个进程,弹出就不会发生。作为一名长期的 Linux 管理员,我会重启机器。如果我不清楚正在运行什么,以及为何不释放 DVD 驱动器,我则会弹出磁盘。但这样效率很低。

下面介绍如何找到保持 DVD 驱动器的进程,并轻松弹出 DVD 驱动器:首先进行模拟。在 DVD 驱动器中放入磁盘,打开一个终端,装载 DVD 驱动器:

# mount /media/cdrom
# cd /media/cdrom
# while [ 1 ]; do echo "All your drives are belong to us!"; sleep 30; done

现在打开第二个终端并试着弹出 DVD 驱动器:

# eject

将得到以下消息:

umount: /media/cdrom: device is busy

在释放该设备之前,让我们找出谁在使用它。

# fuser /media/cdrom

进程正在运行,无法弹出磁盘其实是我们的错误。

现在,如果您是根用户,可以随意终止进程:

# fuser -k /media/cdrom

现在终于可以卸载驱动器了:

# eject

fuser 很正常。

————————————————————————————————————————————————

用fuser杀掉进程

一,为什么要使用fuser?
先说 fuser的作用,
fuser能识别出正在对某个文件或端口访问的进程
大家想一下,还有哪个命令具备这个功能?
没错,是lsof,
我们前面讲过, lsof能够找出正在对指定文件访问的进程,
那么它们两者之间有何区别?
fuser有一个特别的用法在于它可以一次杀死那些正在访问指定文件的进程

二,如何使用fuser?

1,如何用fuser得到正在使用指定文件的进程?
用法: fuser 文件
说明:它会把正在使用当前文件的进程id列出

[root@localhost lhd]# umount /
umount: /: device is busy.
(In some cases useful info about processes that use
the device is found by lsof(8) or fuser(1))
[root@localhost lhd]# fuser /
/: 1rc 2rc 3rc 4rc 5rc 6rc 7rc 80rc 82rc 84rc 85rc 153rc 157rc 158rc
160rc 165rc 168rc 203rc 204rc 205rc 253rc 441rc 444rc 516rc 521rc 524rc 582rc 583rc
584rc 633rc 1052rc 1392rc 1394rc 1417rc 1597rc 1609rc 1617rc 1620rc 1683rc 1744rc 1783r 1785rc
1788rc 1806r 1808r 1810rc 1811rc 1812rc 1813rc 1814rc 1815rc 1848rc 1886rc 1899rc 1900rc 2001rc
......太多不一一列出

说明:
这些进程号后面的rc是什么意思?

c 将此文件作为当前目录使用。
e 将此文件作为程序的可执行对象使用。
r 将此文件作为根目录使用。
s 将此文件作为共享库(或其他可装载对象)使用

2,如何列出进程的详细信息,而不仅仅是进程id?
用 -v参数即可
说明: -v: 含义是:verbose output,详细的输出信息
例子:

[root@dev ~]# fuser /var/log
/var/log: 4196c
[root@dev ~]# fuser -v /var/log

USER PID ACCESS COMMAND
/var/log: root 4196 ..c.. bash

3,如何列出进程所属的用户?
用 -u参数即可
说明: -u: 含义:display user IDs,显示用户id

例子:
[root@dev ~]# fuser -u /var/log
/var/log: 4196c(root)

4,如何杀死所有正在访问指定文件的进程?
用 -k参数即可
说明: -k:含义: kill processes accessing the named file

例子:

[root@localhost lhd]# fuser -v /root/install.log
用户 进程号 权限 命令
/root/install.log: root 3185 f.... tail
[root@localhost lhd]# fuser -k /root/install.log
/root/install.log: 3185
[root@localhost lhd]# fuser -v /root/install.log

说明: -k参数能够杀死所有的正在访问指定文件的进程,所以用来杀进程时非常方便
说明之二: fuser如何杀死的进程?
它发送的是这个信号:SIGKILL

三,多学一点知识

1,fuser可以列出它所知的信号:
用 -l参数即可

例子:
[root@dev ~]# fuser -l
HUP INT QUIT ILL TRAP ABRT IOT BUS FPE KILL USR1 SEGV USR2 PIPE ALRM TERM
STKFLT CHLD CONT STOP TSTP TTIN TTOU URG XCPU XFSZ VTALRM PROF WINCH IO PWR SYS
UNUSED

2,fuser可以发送它已知的信号给访问的指定文件进程而代替-k参数默认发送的SIGKILL
例如:只是挂起进程,那么发送HUP信号就可以了

例子:
[root@localhost lhd]# fuser -v /root/install.log
用户 进程号 权限 命令
/root/install.log: root 3347 f.... tail
[root@localhost lhd]# fuser -k -SIGHUP /root/install.log
/root/install.log: 3347
[root@localhost lhd]# fuser -v /root/install.log
参考技术A 老大,linux下的命令那么多,而且开发人员那么多,一个优秀的程序在linux下通用是很常见的,你怎么指望一本大全能把所有命令包括呢?

要与时俱进,网络就是一本大全!本回答被提问者采纳
参考技术B 呵呵 好像没见过

linux命令之 df file fsck fuser

有非常多人说。网上非常多知识点都有了,为什么你还要在自己的博客中反复这些东西呢?

我想说的是,别人写的东西是别人理解的东西。同一时候也是别人学习过程的总结,对于自己来说。自己写自己的博客最基本的目的就是为了记录下自己的学习历程,同一时候对自己学的东西进行下总结,当过了一段时间后能够回头看看。自己以前经历的。这也是一种学习,也是一种人生态度。


以下言归正传:继续介绍下linux的几个命令

df 磁盘管理命令

功能:检查文件系统的磁盘空间占用情况。获取磁盘空间的剩余空间和已使用空间。

语法:df [选项]

df命令能够显示全部文件系统对i节点和磁盘块的使用情况。

參数:

-a 显示全部文件系统的磁盘使用情况,包含0块(block)的文件系统。如/proc文件系统

-k 以k字节为单位显示

-i 显示i节点的信息,而不是磁盘块的

-t 显示各指定类型的文件系统的磁盘空间使用情况

-x 列出不是某一指定类型文件系统的磁盘空间使用情况(与t选项相反)

-T 显示文件系统类型

$ df
Filesystem 1 K-blocks Used Available Use% Mounted on 
/dev/hda2      1361587 1246406 44823   97% / 
df命令的输出清单:

Filesystem:代表文件系统相应的设备文件路径(即磁盘分区)

K -blocks:分区包括的数据块(1024字节)的数目

used:已使用数据块

available:未使用数据块

use%:普通用户空间使用百分比

Mounted on :所挂载的文件夹

说明:第三、四列的块数之和不等于第二列的总块数,这是由于缺省的每一个分区都留了少量空间供系统管理员使用,即使普通用户空间已满,管理员仍能登录和留有解决这个问题所需的工作空间。

eg:列出文件系统i节点的使用情况

$ df -ia  
Filesystem Inodes IUsed IFree Iused% Mounted on  
/dev/ hda2 352256 75043 277213 21% /  
none 0 0 0 0% /proc  
localhost:(pid221) 0 0 0 0% /net  
eg:列出文件系统的类型
$ df -T  
Filesystem Type 1K-blocks Used Available use% Mounted on  
/dev/hda2 ext2 1361587 1246405 44824 97% / 

file 命令

功能: 辨识文件类型

语法: file [-beLvz] [-f <文件名>] [-m <魔法数字文件>...] [文件或文件夹]

參数:

-b 列出辨识结果时。不显示文件名

-c 具体显示指令运行过程,便于排错或者分析程序运行的情形

-f <名称文件> 指定名称文件,其内容有一个或多个文件名,让file依序辨识这些文件。格式为每列一个文件名

-L 直接显示符号连接所运行的文件的类型

-m <魔法数字文件> 指定魔法数字文件

-v 显示版本号信息

-z 尝试去解读压缩文件的内容


fsck命令

功能:被用于检查而且试图修复文件系统中的错误。

当文件系统错误发生四化。可用fsck指令尝试加以修复。

语法:fsck [-aANPrRsTV][-t ][文件系统...]

參数:

-a 自己主动修复文件系统,不询问不论什么问题
-A 按照/etc/fstab配置文件的内容。检查文件内所列的所有文件系统。
-N 不运行指令,仅列出实际运行会进行的动作。


-P 匹配“-A”參数时使用,会同一时候检查全部的文件系统。
-r 採用互动模式,在运行修复时询问问题,让用户得以确认并决定处理方式。
-R 当搭配"-A"參数使用时,会略过/文件夹的文件系统不予检查
-s 依序运行检查作业,而非同一时候运行。
-t 指定要检查的文件系统类型
-T 运行fsck指令时。不显示标题信息
-V 显示指令运行过程

eg:检查msdos档案系统的/dev/hda5是否正常,假设有异常便自己主动修复

 fsck -t msdos -a /dev/hda5

执行fsck命令后产生的文件有什么用?

当运行fsck命令时。fsck命令假设发现存在孤立的文件或文件夹。这些孤立的文件或文件夹对于系统管理员或用户来说,无法訪问到它,由于它与它的上级文件夹失去了关联。假设用户同意fsck又一次把它们找回来的话。fsck命令就会把这些孤立的文件或文件夹放在文件系统的/lost+found文件夹下。并用各自的i-node号来命名,以便用户查找自己须要的文件。

Lost+found文件夹通过它的英文含义我们都能够知道,它是一个失物认领处。

因此当某个用户发现自己丢失了某个文件,能够在运行fsck之后到/lost+found文件夹下去查找,这时通过文件名称已无法辨认出文件的作用,仅仅能用file之类的命令来确定文件的类型,假设是数据文件,能够用more或vi命令来查看,假设是二进制文件,能够用dbx命令来调试或者试着运行它(注意它可能是一个具有破坏性的程序),知道文件或文件夹的作用之后,能够对其进行改名。


fuser命令

功能:识别出正在对某个文件或port訪问的进程。

同一时候lsof也可以找出正在对指定文件訪问的进程。差别在于fuser可以一次杀死那些正在訪问指定文件的进程。

fuser命令列出了本地进程的进程号。哪些本地进程使用了file參数指定的文件或远程文件。

对于堵塞特别设备。此命令列出了使用该设备上不论什么文件的进程。

列出的每一个进程号后面都尾随一个字母,该字母指示进程怎样使用文件

eg:

$ fuser -v -n tcp 80
                      USER        PID ACCESS COMMAND
 80/tcp:              root       3067 F.... (root)httpd
                      apache     3096 F.... (apache)httpd
                      apache     3097 F.... (apache)httpd

>c 指示进程的工作文件夹

>e 指示该文件为进程的可运行文件(即进程由该文件拉起)

>f 指示该文件被进程打开,默认情况下f字符不显示

>F 指示该文件被进程打开进行写入,默认情况下F字符不显示

>r 指示该文件为进程的根文件夹

>m 指示进程使用该文件进行内存映射。抑或该文件为共享库文件,被进程映射进内存

语法:fuser[-c|-d|-f][-k][-u][-x][-V]文件

參数:

-l 列出全部已知信号名

-a 显示命令行中指定的全部文件

-k 杀死訪问指定文件的全部进程

-i 杀死进程前须要用户进行确认

-m 指定一个被载入的文件系统或一个被载入的块设备

-n 选择不同的名称空间

-u 在每一个进程后显示所属的username

-V执行时显示具体处理信息

-c 显示包括file的文件系统中关于不论什么打开的文件

-d 暗示使用了-c和-x标志,显示不论什么与文件系统(自父文件夹删除的)无链接的打开的文件,当与-v一起使用时,也会报告被删除文件的节点号和大小。

-x 与-c和-f连用,显示除标准fuser输出以外的可运行的和可加载的对象

-f 仅显示对文件的打开实例

eg:

挂载usb设备并显示所属的用户

$ fuser -m -u /mnt/usb1
 /mnt/usb1:   1347c(root)  1348c(guido)  1349c(guido)

列出全部已知信号

$ fuser -l
HUP INT QUIT ILL TRAP ABRT IOT BUS FPE KILL USR1 SEGV USR2 PIPE ALRM TERM
STKFLT CHLD CONT STOP TSTP TTIN TTOU URG XCPU XFSZ VTALRM PROF WINCH IO PWR SYS
UNUSED

杀死全部和root文件夹相关的进程

$ fuser -k /root
/root: 4552c 4630c 4661c 4664c 4666c 4669c 4671c 4732c 4733c 4735c 4736c 4740c 4741c 4743c 4744c 4750c 4751c 4767c 11065c 30632c 31755c























以上是关于关于linux命令大全里没有fuser的主要内容,如果未能解决你的问题,请参考以下文章

linux命令大全

linux命令大全

?linux命令大全

❤️学习linux 两年多沉淀下来的linux 命令大全⭐建议收藏⭐

❤️学习linux 两年多沉淀下来的linux 命令大全⭐建议收藏⭐

总结工作中常用到的linux命令大全_经典