我打算编写一个Linux命令,该命令将(使用自定义逻辑)处理一个很大的文件。一旦运行此命令,将需要几个小时才能完成任务。
给出eta输出的最佳方法是什么?
编写一个100字节的进度状态文件的想法怎么样?在特定阶段,我可以将字节写入文件。说40%,我可以将40个字节写入文件。一旦文件大小达到100字节大小,则表示该过程已完成。因此,要监视进度,我们只需要检查此文件的大小即可。
是否有处理此类进度信息的一般方法?我不想在程序中包含太多逻辑来显示进度信息。我正在寻找一个简单的解决方案。
有什么建议?
的正常方式是建立一个信号处理程序等dd
做,然后发送的处理的SIGUSR1或使用诸如此类kill
命令,并将其捕获信号,并输出状态消息。尝试
man dd
因此,例如,在我的iMac上dd
使用SIGINFO
,
# Move a whole load of nothing to nowhere in the background
dd if=/dev/zero of=/dev/null &
[1] 11232
# No output, till I want some a few seconds later
kill -SIGINFO 11232
12875835+0 records in
12875834+0 records out
6592427520 bytes transferred in 9.380158 secs (702805581 bytes/sec)
# No more output, till I want some a few more seconds later
kill -SIGINFO 11232
19163866+0 records in
19163865+0 records out
9811898880 bytes transferred in 14.015095 secs (700095068 bytes/sec)
即使在Shell脚本中,信号处理程序也很容易设置。例如:
#!/bin/bash
trap "echo Progress report..." SIGINT
echo "My process id is $$"
while : ; do
sleep 10 # Do something - admittedly little :-)
done
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句