问题标签 [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.
linux - fuser 如何识别问题 - 无法统计文件 /proc/1234/fd/3:过时的文件句柄?
有人可以解释 fuser -u 如何报告此错误,甚至如何在 Linux 中重新创建此错误吗?fuser 没有告诉我确切的文件名,只是处理文件集的信息,现在问题消失了。如何获取有关此问题的更多信息(可能通过使用特定的定影器选项或其他工具)?如何修复它以使定影器不会打印错误?是否有可能使用实际文件?
bash - centos 中的 fuser 命令在 bash 脚本中打印不需要的输出
我正在使用centOS 7,我正在尝试通过bash脚本检查使用端口X/tcp和“fuser”命令的进程的pid,如下所示:
虽然我不希望将任何内容打印到控制台,但结果是:
当我尝试使用 -s 运行 fuser 时,if 语句返回 false,因为由于某种原因,fuser 的结果为空。
如何避免不需要的打印?为什么当我在静音模式下运行 fuser 时它返回空?
bash - Unix如何将fuser命令输出存储到变量中
我是脚本新手,我遇到了这个问题:
我想使用该fuser
命令检查是否存在具有该名称的文件。我想保存命令的输出,然后在加载之前使用它来重命名文件。
我尝试了以下方法:
但是,上面代码的结果是:
命令的输出没有存储在变量中,而是显示在屏幕上,我不知道为什么!
我想要做的是存储Test_file_20180823120345.dat
在 file_name
变量中,然后从中删除时间戳并将文件重命名为Test_file_20180823.dat
.
然后在暂存表中加载数据后,再次将文件重命名为我们收到的旧文件名,然后使用原始名称归档文件。
unix - .nfs 文件无法删除 - 资源繁忙,但 PID 未知
我的系统上有一个非常大的 .nfs 文件,它占用了我的大量磁盘配额。如果我尝试删除它,我会得到“rm: cannot remove '.nfs00000000001bd849100000001': Device or resource busy”。
奇怪的是 fuser -v .nfs0000000001bd849100000001 什么都不返回,而且这个系统没有 lsof。那么有人知道如何删除这个文件吗?
bash - 如何确定文件是否在 FreeBSD 上的 bash 脚本中打开
我正在尝试将 Linux bash 脚本移植到 FreeBSD。该脚本需要在决定是否采取某些操作之前检查文件是否打开(用于写入)。
在 Linux 上,这很容易使用以下fuser
命令:
然而,在 FreeBSD 上,该fuser
命令似乎完全被破坏了(由this证明)并且没有返回任何正确的退出代码或任何有用的输出到标准输出。例如,在一个正在被主动写入的文件上:
编辑:
弗拉基米尔·博特卡的评论:
“FreeBSD 12.0 中的简单测试显示”:
在我的 FreeBSD 机器(也是 FreeBSD 12)上,相同的测试产生以下结果:
弗拉基米尔·博特卡的评论:
让我们尝试使用一个简单的 C 程序来测试对文件的写入,该程序打开文件,等待输入并将输入写入文件。
这是我对编译后的 C 代码的测试:
因此,fuser
似乎确实被打破了。但是,它似乎只在我的系统上坏了,而不是在 Vladimir Botka 的系统上,这很奇怪,因为它们都是 FreeBSD 12。
看来我可以使用lsof
或fstat
获取这些信息,但不能不对输出进行一些复杂的解析,这会使我的脚本更加复杂。我想知道是否有人可以向我指出一个简单的“是/否”命令来确定一个文件是否正在使用中,这样的文件是否fuser
可以在 FreeBSD 上运行?
非常感谢,
bash - 仅当不在 bash 中访问时才替换文件
我的要求是仅在未访问文件时才替换文件。我有以下片段:
但我怀疑我没有正确处理并发。请提供一些见解和可能的方法来实现这一目标。
谢谢。
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 命令的所有结果?
linux - fuser 命令输出进程 ID 提取
尝试从fuser输出中提取使用给定端口号的进程 ID,如下所示
没有使用awk提取 PID
ls -l /proc/5920/exe
从提取的PID中,我想做
二进制版本如下:
docker - 如何从 docker 内部检查已安装的 dockerhost 文件系统/卷上的打开文件
我的应用程序在其自己的 docker 容器中运行,需要检查位于已安装文件系统/卷上的文件是否仍由 linux dockerhost 上的另一个进程(不是此应用程序容器内的进程)打开。例如,我的应用程序应该只在 dockerhost 上的进程完成写入此文件后才开始处理输入文件。
如果我的应用程序直接在 dockerhost 上运行,“fuser”或“lsof”命令(以 root 身份运行/通过 sudo 运行)将提供所需的输出(例如,列出访问文件的进程 ID)。但是在 docker 容器中,fuser 命令(甚至以 root 身份运行)不显示任何进程。
任何在 unix 级别甚至更好的 python3 上的代码片段都会有所帮助!