Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 确定已在运行的进程通过文件的距离_Linux_File_File Io_Process - Fatal编程技术网

Linux 确定已在运行的进程通过文件的距离

Linux 确定已在运行的进程通过文件的距离,linux,file,file-io,process,Linux,File,File Io,Process,我想看看进程通过文件的距离。或者更准确地说:我想知道进程从文件的哪个部分读取。现在,我可以使用类似pv命令的命令,但这不起作用,因为我想在已经运行的进程上执行此操作 以下是几个例子: 假设视频正在vlc中播放。我想从另一个程序中知道视频vlc的传输距离 或者使用dd。假设我正在镜像一个HDD(我知道这个例子有问题,因为如果有人想要跟踪进度,那么在没有pv的情况下启动dd是愚蠢的(我是个傻瓜),您可以向dd发送kill信号以获取当前进度,但忽略这两个事实…)。这可以用来向我显示转移进度 我看到在一

我想看看进程通过文件的距离。或者更准确地说:我想知道进程从文件的哪个部分读取。现在,我可以使用类似pv命令的命令,但这不起作用,因为我想在已经运行的进程上执行此操作

以下是几个例子:

假设视频正在vlc中播放。我想从另一个程序中知道视频vlc的传输距离

或者使用dd。假设我正在镜像一个HDD(我知道这个例子有问题,因为如果有人想要跟踪进度,那么在没有pv的情况下启动dd是愚蠢的(我是个傻瓜),您可以向dd发送kill信号以获取当前进度,但忽略这两个事实…)。这可以用来向我显示转移进度


我看到在一些linux系统上,您可以使用lsof-o来获取偏移量,但我不知道如何将这段数据(类似于此
0t1659509
)转换为进程在文件中通过的距离的百分比,或者是否可能。另外,知道做一件事的多种方法是好的。

在现代Linux内核上,您可以在
/proc/$pid/fdinfo/$fd
中获得进程所持有的文件描述符的信息,包括当前偏移量:

pos:    12345
flags:  0100000

哇!Linux给你提供了多少信息,这让我感到惊讶不已。Proc对于linux程序员来说确实是一项惊人的资产。但是这个数字代表什么呢?正在读取的是当前字节还是其他度量值?它是文件句柄的当前偏移量(以字节为单位),与您从
lseek()
获得的偏移量相同。谢谢!你帮了大忙关于
dd
的更多答案。