我使用以下命令加入大约20个文件,总大小为40Gb。
cat hda1.ntfs-ptcl-img.gz.* > hda1.ntfs-ptcl-img.gz
只是想知道这个过程通常应该花多长时间,因为它已经运行了一段时间。
感谢。
答案 0 :(得分:10)
按Ctrl + Z暂停作业,然后使用'bg'命令在后台运行它。然后你可以使用'ls -l'来查看输出文件的大小,或者'ls -l / proc / * / fd | grep hda1'显示正在处理的文件。
答案 1 :(得分:4)
只是想知道这个过程有多长 通常应该
这是不可能回答这里提供的信息:这取决于你在哪里读,你写的地方,等等。如果你同时阅读和写入本地磁盘,将会有一些争论。如果您正在通过网络进行读写,则可能会更慢,具体取决于您的网络速度。
要从流程中获取更多信息,您可以将其从单个cat命令分解为for循环:
for file in hda1.ntfs-ptcl-img.gz.*
do
echo "Starting $file at `date`"
cat $file >> hda1.ntfs.ptcl-img.gz
done
或者,您可以使用pv
(pipeview)实用程序从管道中获取更多信息。来自man pv
:
pv允许用户查看进度 数据通过管道,给予 时间等信息, 百分比完成(有进展 bar),当前吞吐率,总计 转移的数据和ETA。
要使用它,请将其插入两个进程之间的管道中 适当的选择。它的标准 输入将传递给它 标准输出和进度将是 标准错误显示。
pv会将每个提供的FILE依次复制到标准输出( - 表示 标准输入),或者没有FILE 指定的标准输入是 复制。这与行为相同 猫(1)。
因此,只需将命令行中的cat
替换为pv
:
pv hda1.ntfs-ptcl-img.gz.* > hda1.ntfs-ptcl-img.gz
虽然你已经开始这个,但下次做什么的提示并不是特别有用。相反,您可以将正在运行的作业放在后台(使用ctrl + z,然后在提示符处运行bg
以使作业继续在后台运行)。如果你很幸运,你的livecd将有watch
,所以你可以watch ls -h hda1.ntfs.ptcl-img.gz
- 这将每隔几秒运行一次ls并用输出更新屏幕,这样你就可以看到文件随着时间的推移而增长
如果您没有安装watch
,请使用穷人的手表:
while true
do
clear
date
ls -l hda1.ntfs.ptcl-img.gz
sleep 3
done
你仍然需要自己弄清楚字节写入的速度(以及你剩下多少时间)。
答案 2 :(得分:0)
在另一个终端中,使用“ls -al”检查输出文件的大小,这样你就可以知道你的距离。
对于进度条,请尝试“pv”(管道查看器):http://www.catonmat.net/blog/unix-utilities-pipe-viewer/
答案 3 :(得分:0)
您可以创建更复杂的过程,以显示您正在处理的文件。它不会显示整个过程的时间,但会比你的更冗长。
for f in `ls hda1.ntfs-ptc1-img.gz.*`; do
echo $f
cat $f >> hda1.ntfs-ptc1.img.gz
done
答案 4 :(得分:0)
简短的回答可能是一个小时左右。
如果您在本地进行此操作并且还没有回到提示符,那么它仍在运行。如果您正在远程执行此操作,则有一些机会(取决于您是否连接到无线路由器等一系列因素)您的连接已超时。
就像其他人所说的那样,很多都依赖于加入的文件数量,无论是本地还是远程,机器上正在发生的其他进程,处理器,时钟速度和RAM等等,等等。 。
确保它正在做某事的最简单方法是打开另一个终端窗口并定期运行“ls -l /path/to/file.name”并查看输出文件是否变大。您还可以运行“top -p PID”(用实际进程ID替换PID)来使用top监视该进程,只要它仍在运行,它仍在执行某些操作。
答案 5 :(得分:0)
与Roger的答案类似,我将运行watch -n 10 "ls -l"
,每10秒调用一次“ls -l”,让我看看我的文件是否增长。或者我会使用watch "du -sh"
。
我真的不知道在文件操作期间这是否是一件“好”的事情(我猜它可能会让事情变慢一些?)但它对我有用。