我目前正在使用大型数据集,即使文件格式转换每个主题至少花费一个小时,因此我经常不确定我的命令是否已执行或程序是否已冻结。我想知道是否有人知道如何跟踪我试图在linux中运行的命令/脚本的进度?
非常感谢您的帮助。
答案 0 :(得分:3)
如果持久命令在文件foo.out
中产生一些输出,则可以watch ls -l foo.out
或tail -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
无法知道数据的总大小,也有助于查看是否有实际进度以及数据速率有多好。它不是大多数标准安装的一部分,但可能必须明确安装。