问题标签 [lsof]

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 回答
135 浏览

linux - lsof 显示 riak 进程中打开文件描述符的差异

当我这样做时lsof -l,它会显示所有打开的文件描述符(~180000),但是当我检查时lsof -lp pid只显示~1000。我知道带有 pid 的进程pid打开了 ~170000 个文件描述符。

以下是日志:

为什么会有这样的差异?

0 投票
1 回答
4462 浏览

unix - lsof 的非零退出代码

我正在使用以下lsof命令:

如果有一些输出,则此命令返回退出代码,0但如果没有输出,则退出代码为1

谁能解释为什么会这样?有没有办法避免它?

0 投票
2 回答
41 浏览

linux - 如何记录超过 24 小时的文件访问?

我经常无法在我的服务器上运行 apt-get install 。像那样:

经常发生,几乎每天都有。每当我试图找出还有谁在用lsof命令锁定它时,我就来不及了,锁已经消失了。真的很奇怪。

有什么窍门,我怎么能记录超过 24 小时还有谁在锁定/⁠var/⁠lib/⁠dpkg/⁠lock

0 投票
1 回答
1042 浏览

linux - 谁在写我的文件或为什么 lsof 没有显示作者但读者显示

我在两个单独的终端上做了以下操作:

1s任期:

启动正在后台写入文件的进程:

获取在后台运行的最后一个进程的 PID:

第二学期:

显示正在写入的文件内容:

第一学期:

检查谁在访问文件(注意只有读者)

继第二个终端后kill终止tail -flsof返回空输出:

第二学期:

然后我tail -f重新开始,我看到数据仍然写入日志文件。这意味着某些进程仍在写入日志文件:

在这种情况下,我实际上知道正在写入文件的进程的神秘 PID,它是 PID 20604,所以我可以杀死它并且日志文件将停止增长。

我的问题是:

  1. 为什么不lsof显示(即使重复发出)实际正在写入日志文件的进程?我知道 20604 属于bash并且不是 bash 直接写入文件,而是 child date。但是lsof没有显示 也bash没有date
  2. 如果我不知道 PID 20604 怎么办?那么如何跟踪写作过程呢?

PS:使用的shell:GNU bash,版本 4.2.37(1)-release (x86_64-pc-linux-gnu)

0 投票
1 回答
349 浏览

javascript - 检查进程 A 写入的文件是否准备好被进程 B 读取

我有一个执行 k-shell 的 Java 脚本,该脚本调用一个写入文件 A 的程序。此后,相同的 Java 脚本解析输出文件 A。没有其他进程读取或写入文件 A。

问题是文件 A 并不总是准备好及时解析,我认为这是因为即使在程序和调用 shell 返回之后文件系统仍在完成其工作。这仅在运行大量进程时发生。

lsof 似乎不适用于我的系统。如果我用编辑器打开一个文件,lsof 会向我显示编辑器进程,但是如果我将文件名传递给 lsof,我会得到: lsof: no file use located: filename

我不认为 fileLock 会起作用,因为我必须在从程序或 k-shell 返回之前解锁它,到那时文件可能还没有完全关闭。

我的想法是编写一个简短的脚本来重命名(mv)文件,然后让解析器解析重命名的文件,我的理解是文件在完全写入之前无法重命名。我把 mv 命令放在一个 while 循环中,检查 mv 命令的 stdOut 中是否有任何内容,理论上如果它是空的,我们就可以开始了。

我还没有看到 mv 被搁置的实例。任何意见、建议、暗示或侮辱将不胜感激。在此先感谢大家。

0 投票
0 回答
394 浏览

python - Django - 文件描述符可能泄漏?

我正在 Django 中开发应用程序,我想使用多处理来执行有效的计算,但是 python/Django 以某种方式将打开的文件描述符保留到本地数据库,这会在一段时间后产生错误。

在文件models.py我有类:

在第二个文件中我有:

方法 save() 是用于在 db 中插入行的内置 Django.models 方法,我认为它将文件描述符打开到 db。

基本上my_function刷新 Vms 的状态并在数据库中更新它。我的问题是,即使在关闭池之后,还有 db.sqlite3 的打开文件描述符,并且 20 分钟后我有 I/O 异常,因为一个文件有 1000 多个打开的描述符。我不知道为什么 Django 或 python 不关闭它。这是 lsof 命令返回的内容:

[root@PC ~]# lsof | grep db.sqlite3

python 6924 根 6u REG 253,0 1143808 1581361 /opt/projects/mail/mvp/db.sqlite3

python 6924 根 7u REG 253,0 1143808 1581361 /opt/projects/mail/mvp/db.sqlite3

python 6924 根 8u REG 253,0 1143808 1581361 /opt/projects/mail/mvp/db.sqlite3

python 6924 root 9u REG 253,0 2576 1581352 /opt/projects/mail/mvp/db.sqlite3-journal

python 6924 根 10u REG 253,0 1143808 1581361 /opt/projects/mail/mvp/db.sqlite3

python 6924 根 11u REG 253,0 1143808 1581361 /opt/projects/mail/mvp/db.sqlite3

python 6924 root 12r REG 253,0 1143808 1581361 /opt/projects/mail/mvp/db.sqlite3

python 6924 根 14u REG 253,0 1143808 1581361 /opt/projects/mail/mvp/db.sqlite3

python 6924 根 16u REG 253,0 1143808 1581361 /opt/projects/mail/mvp/db.sqlite3

python 6924 根 17u REG 253,0 1143808 1581361 /opt/projects/mail/mvp/db.sqlite3

python 6924 根 18u REG 253,0 1143808 1581361 /opt/projects/mail/mvp/db.sqlite3

python 6924 根 19u REG 253,0 1143808 1581361 /opt/projects/mail/mvp/db.sqlite3

python 6924 root 20u REG 253,0 1143808 1581361 /opt/projects/mail/mvp/db.sqlite3`

应用程序运行时间越长,打开的描述符就越多。有什么解决办法吗?有什么方法可以关闭这个描述符并在池工作人员之后进行清理?

0 投票
4 回答
20096 浏览

linux - 如何检查文件是否在 Linux 中打开?

问题是,我想跟踪用户是否尝试在共享帐户上打开文件。我正在寻找任何可以帮助我了解相关文件是否在运行时打开的记录/技术。

我想创建一个脚本来监视文件是否打开,如果是,我希望它向特定的电子邮件地址发送警报。我正在考虑的文件是一个常规文件。

我尝试使用lsof | grep filename用于检查文件是否在 gedit 中打开,但该命令不返回任何内容。

实际上,我正在为一个宠物项目尝试这个,因此是这个问题。

0 投票
2 回答
1163 浏览

linux - 运行lsof后ESTABLISHED指标是什么意思

我运行了该命令sudo lsof -i -n -P | grep TCP,我想知道是否可以对其输出进行更多说明。

具体来说,在这张图片中:

在此处输入图像描述

为什么我有一个 IP:PORT 指向另一个 IP:PORT,然后又用标签“ESTABLISHED”返回自身?我对这到底意味着什么感到困惑。

0 投票
1 回答
53 浏览

node.js - 是否可以确定性地跟踪端口 80 的转发方式以及给定系统上的配置位置?

有没有办法确定或跟踪如何在运行 Ubuntu 14.04 LTS 的系统上设置端口转发配置,在该系统上运行 NodeJS 服务并以某种方式通过端口 80 接受连接,尽管服务本身在端口 8080 上运行,鉴于很明显 Apache 正在处理端口 80 连接(请参阅下面的详细信息)?

我已经尝试lsof -i :80在系统上,根据lsof,端口 80 上没有运行任何进程。但有趣的是:

在确定它位于/etc/apache2/apache2.conf并且无法找到任何VirtualHost记录之后,我已经深入研究了 apache 配置ProxyPass,或任何类似的东西。

我也检查iptables -L了以防万一。

httpry或类似的东西有助于弄清楚端口转发配置以及哪些正在运行的进程负责端口转发?

0 投票
1 回答
114 浏览

regex - 在 Mac 终端中一起使用 lsof 和 awk 的奇怪行为?

我想在其中找到所有lsof带有“Google”的行,所以我尝试了以下方法:

这会正确产生以“google”开头的行的输出。

但是,然后我尝试这个并且 csv 不包含任何内容:

但是,我认为这\s*意味着任意数量的空格。这种行为有什么原因吗?谢谢你。