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

时间:2013-12-05 01:39:14

标签: linux file file-io process

我想看一个进程的文件有多远。或者,更准确一点:我想知道一个进程正在读取的文件的哪个部分。现在我可以使用像pv命令之类的东西,除了因为我想在已经运行的进程上执行此操作而无法工作。

以下是几个例子:

让我们说视频正在vlc中播放。我希望能够通过另一个程序告诉视频vlc有多远。

或者用dd。让我说我正在镜像一个硬盘驱动器(我知道这个例子有问题,因为如果他们想跟踪进度(我是个傻瓜),有人在没有光盘的情况下启动dd是愚蠢的,你可以发送kill信号到dd获取当前信息进步,但忽略了这两个事实......)。这可以用来向我展示转移进度。

我在一些Linux系统上看到,你可以使用lsof -o来获取偏移量,但我不知道如何将这段数据(看起来像这个0t1659509)变成一个过程在文件中的持续时间百分比,或者甚至是否可能。另外,了解不止一种方法做得好。

1 个答案:

答案 0 :(得分:6)

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

pos:    12345
flags:  0100000