如何遵循linux命令的进度?

时间:2012-06-11 13:06:05

标签: linux command

我目前正在使用大型数据集,即使文件格式转换每个主题至少花费一个小时,因此我经常不确定我的命令是否已执行或程序是否已冻结。我想知道是否有人知道如何跟踪我试图在linux中运行的命令/脚本的进度?

非常感谢您的帮助。

5 个答案:

答案 0 :(得分:3)

如果持久命令在文件foo.out中产生一些输出,则可以watch ls -l foo.outtail -f foo.out

您还可以列出/proc/$(pidof prog)/fd以查找某些prog

的已打开文件

答案 1 :(得分:3)

除了@ basile-starynkevitch的回答,
我有一个bash脚本,可以测量你以百分比处理的文件数量。

从fd信息(procfs)中查看/proc/pid/fdinfo获取当前位置,并以相对于文件总大小的百分比计算此值。

请参阅https://gist.github.com/azat/2830255

curl -s https://gist.github.com/azat/2830255/raw >| progress_fds.sh \
&& chmod +x progress_fds.sh

Usage:
./progress_fds.sh /path/to/file [ PID]

对某人有用

答案 2 :(得分:2)

您可以使用strace关注计划的系统调用,这样您就可以关注open来电。

答案 3 :(得分:1)

你可以使用详细输出,但它会减慢速度。

答案 4 :(得分:1)

我想对此没有一般的答案,它只取决于程序的类型(甚至不需要对Linux做任何事情,请参阅“暂停问题”)。

如果您在转换过程中碰巧使用了管道,我发现pv(1)工具非常有用。即使pv无法知道数据的总大小,也有助于查看是否有实际进度以及数据速率有多好。它不是大多数标准安装的一部分,但可能必须明确安装。