gpt4 book ai didi

linux - "lsof"命令无法返回 kwrite 打开的文件

转载 作者:太空宇宙 更新时间:2023-11-04 04:44:10 27 4
gpt4 key购买 nike

Linux 命令“lsof”返回正在访问的文件,我在 shell 中尝试了这一点,其中一个文件用 vi 打开,另一个文件用 kwrite 打开,然后它返回并得到 vi 的进程,但没有 kwrite 的进程,如下

Image of commands on my shell

[linux@localhost shell_ex]$ lsof +d .
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
bash 3458 linux cwd DIR 253,2 50 953101 .
bash 3747 linux cwd DIR 253,2 50 953101 .
vim 3793 linux cwd DIR 253,2 50 953101 .
vim 3793 linux 4u REG 253,2 12288 953102 ./.1.txt.swp
kwrite 3912 linux cwd DIR 253,2 50 953101 .
lsof 3914 linux cwd DIR 253,2 50 953101 .
lsof 3915 linux cwd DIR 253,2 50 953101 .

这里我得到了打开1.txt的PID 3793,并且没有访问2.txt的PID

最佳答案

lsof显示当前存在的文件描述符(也称为文件句柄,或缩写为 fd)。当您使用编辑器(此处为 vim 或 kwrite)打开文件时,它们会创建一个文件描述符来打开该文件,读取内容,然后再次关闭该文件描述符。正如您在 lsof 的输出中看到的,两个编辑器都没有打开的句柄。保存文件后,文件将再次打开(创建新的文件描述符),写入内容并关闭文件描述符。

您始终可以在/proc/<pid>/fd中列出进程当前存在的文件描述符。 .

您在 vim 中看到的一个文件描述符不是 1.txt ,但是.1.txt.swp ,但是vim swap file ,其中每个更改都是直接写入的,因此如果 vim 崩溃(或终端关闭),您可以在保存文件之前恢复更改。

关于linux - "lsof"命令无法返回 kwrite 打开的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48588284/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com