问题标签 [fuser]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
1026 浏览

linux - fuser 如何识别问题 - 无法统计文件 /proc/1234/fd/3:过时的文件句柄?

有人可以解释 fuser -u 如何报告此错误,甚至如何在 Linux 中重新创建此错误吗?fuser 没有告诉我确切的文件名,只是处理文件集的信息,现在问题消失了。如何获取有关此问题的更多信息(可能通过使用特定的定影器选项或其他工具)?如何修复它以使定影器不会打印错误?是否有可能使用实际文件?

0 投票
1 回答
316 浏览

bash - centos 中的 fuser 命令在 bash 脚本中打印不需要的输出

我正在使用centOS 7,我正在尝试通过bash脚本检查使用端口X/tcp和“fuser”命令的进程的pid,如下所示:

虽然我不希望将任何内容打印到控制台,但结果是:

当我尝试使用 -s 运行 fuser 时,if 语句返回 false,因为由于某种原因,fuser 的结果为空。

如何避免不需要的打印?为什么当我在静音模式下运行 fuser 时它返回空?

0 投票
1 回答
294 浏览

bash - Unix如何将fuser命令输出存储到变量中

我是脚本新手,我遇到了这个问题:

我想使用该fuser命令检查是否存在具有该名称的文件。我想保存命令的输出,然后在加载之前使用它来重命名文件。

我尝试了以下方法:

但是,上面代码的结果是:

命令的输出没有存储在变量中,而是显示在屏幕上,我不知道为什么!

我想要做的是存储Test_file_20180823120345.datfile_name变量中,然后从中删除时间戳并将文件重命名为Test_file_20180823.dat.

然后在暂存表中加载数据后,再次将文件重命名为我们收到的旧文件名,然后使用原始名称归档文件。

0 投票
0 回答
4916 浏览

unix - .nfs 文件无法删除 - 资源繁忙,但 PID 未知

我的系统上有一个非常大的 .nfs 文件,它占用了我的大量磁盘配额。如果我尝试删除它,我会得到“rm: cannot remove '.nfs00000000001bd849100000001': Device or resource busy”。

奇怪的是 fuser -v .nfs0000000001bd849100000001 什么都不返回,而且这个系统没有 lsof。那么有人知道如何删除这个文件吗?

0 投票
4 回答
730 浏览

bash - 如何确定文件是否在 FreeBSD 上的 bash 脚本中打开

我正在尝试将 Linux bash 脚本移植到 FreeBSD。该脚本需要在决定是否采取某些操作之前检查文件是否打开(用于写入)。

在 Linux 上,这很容易使用以下fuser命令:

然而,在 FreeBSD 上,该fuser命令似乎完全被破坏了(由this证明)并且没有返回任何正确的退出代码或任何有用的输出到标准输出。例如,在一个正在被主动写入的文件上:

编辑:


弗拉基米尔·博特卡的评论:

“FreeBSD 12.0 中的简单测试显示”:

在我的 FreeBSD 机器(也是 FreeBSD 12)上,相同的测试产生以下结果:

弗拉基米尔·博特卡的评论:

让我们尝试使用一个简单的 C 程序来测试对文件的写入,该程序打开文件,等待输入并将输入写入文件。

这是我对编译后的 C 代码的测试:

因此,fuser似乎确实被打破了。但是,它似乎只在我的系统上坏了,而不是在 Vladimir Botka 的系统上,这很奇怪,因为它们都是 FreeBSD 12。


看来我可以使用lsoffstat获取这些信息,但不能不对输出进行一些复杂的解析,这会使我的脚本更加复杂。我想知道是否有人可以向我指出一个简单的“是/否”命令来确定一个文件是否正在使用中,这样的文件是否fuser可以在 FreeBSD 上运行?

非常感谢,

0 投票
2 回答
48 浏览

bash - 仅当不在 bash 中访问时才替换文件

我的要求是仅在未访问文件时才替换文件。我有以下片段:

但我怀疑我没有正确处理并发。请提供一些见解和可能的方法来实现这一目标。

谢谢。

0 投票
1 回答
26 浏览

bash - 避免 bash 命令输出被记录

我正在寻找一种方法来避免从 Node-Red 进程(在我的 Raspberry Pi 3B+ 设备上运行)中执行的某些 bash 命令将进入 Raspeberry OS(Stretch)的 /var/log/system 日志文件。

特别是我有一个节点(在 node-red 内),每 30 秒执行一个 bash 命令,以终止在串行设备上运行的任何最终进程(通过 FTDI USB 转换器连接到 Raspberry)。

我在 node-red 中执行的命令如下:

sudo fuser /dev/ttyFTDI_GAS -k

大多数情况下,FTDI 串行连接设备上没有正在运行的进程,因此该命令会导致错误。在这种情况下,这个错误会填满我的系统日志文件,使它真的“拥挤”并且难以阅读。

下面是我的系统文件的样子。

5 月 27 日 07:30:59 raspberrypi Node-RED [349]:5 月 27 日 07:30:59 - [info] [exec:96ba9b5a.d097b8] 错误:错误:命令失败:sudo fuser /dev/ttyFTDI_GAS -k

5 月 27 日 07:30:59 raspberrypi Node-RED [349]:5 月 27 日 07:31:29 - [info] [exec:96ba9b5a.d097b8] 错误:错误:命令失败:sudo fuser /dev/ttyFTDI_GAS -k

5 月 27 日 07:30:59 raspberrypi Node-RED [349]:5 月 27 日 07:31:59 - [info] [exec:96ba9b5a.d097b8] 错误:错误:命令失败:sudo fuser /dev/ttyFTDI_GAS -k

5 月 27 日 07:30:59 raspberrypi Node-RED [349]:5 月 27 日 07:32:29 - [info] [exec:96ba9b5a.d097b8] 错误:错误:命令失败:sudo fuser /dev/ttyFTDI_GAS -k

相反,当有一个或模式进程使用连接的设备时,此命令(这就是使用“-k”选项的原因)将杀死它们并“释放”连接的设备,以便准备好接受新的串行通信与覆盆子。

有没有办法避免在系统日志中显示 sudo fuser /dev/ttyFTDI_GAS -k 命令的所有结果?

0 投票
1 回答
393 浏览

linux - fuser 命令输出进程 ID 提取

尝试从fuser输出中提取使用给定端口号的进程 ID,如下所示

没有使用awk提取 PID

ls -l /proc/5920/exe从提取的PID中,我想做

二进制版本如下:

0 投票
1 回答
195 浏览

docker - 如何从 docker 内部检查已安装的 dockerhost 文件系统/卷上的打开文件

我的应用程序在其自己的 docker 容器中运行,需要检查位于已安装文件系统/卷上的文件是否仍由 linux dockerhost 上的另一个进程(不是此应用程序容器内的进程)打开。例如,我的应用程序应该只在 dockerhost 上的进程完成写入此文件后才开始处理输入文件。

如果我的应用程序直接在 dockerhost 上运行,“fuser”或“lsof”命令(以 root 身份运行/通过 sudo 运行)将提供所需的输出(例如,列出访问文件的进程 ID)。但是在 docker 容器中,fuser 命令(甚至以 root 身份运行)不显示任何进程。

任何在 unix 级别甚至更好的 python3 上的代码片段都会有所帮助!

0 投票
0 回答
29 浏览

windows - `fuser -f` 的等价物是什么

我正在寻找以编程方式列出所有进程 ID 的命令或解决方案,这些进程 ID 为特定文件打开了文件句柄。

或者,我只想知道,如果任何进程都有一个打开给定文件的句柄。SO上有一个类似的问题, 但它指的是目录。就我而言,我需要有关文件的信息。