5

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

您的帮助将不胜感激。

4

5 回答 5

3

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

您还可以列出/proc/$(pidof prog)/fd以找出一些打开的文件prog

于 2012-06-11T13:24:37.870 回答
3

除了@basile-starynkevitch 的回答,
我还有一个 bash 脚本,可以测量您处理了多少文件(以百分比为单位)。

它监视procfs从 fd 信息 ( /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]

对某人有用

于 2013-04-18T12:08:37.620 回答
2

您可以使用 跟踪程序的系统调用strace,这将使您能够跟踪open调用。

于 2012-06-11T13:09:48.347 回答
1

您可以使用详细输出,但它会使事情变得更慢。

于 2012-06-11T13:09:06.470 回答
1

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

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

于 2015-09-21T18:10:25.097 回答