sync
时,当然所有内容都必须进入磁盘,这需要很长时间。但是在某个地方可以看到计数器降为零吗?在buffers
中观看top
没有帮助。#1 楼
查看/proc/meminfo
将显示随着所有数据假脱机,Dirty
的数量随着时间的推移而缩小。其中一些也可能溢出到Writeback
中。这将是针对所有设备的摘要,但是在系统上一台设备比其余设备慢得多的情况下,通常会遇到该队列中所有与之相关的设备。启动时您可能会发现Dirty
数字较大,而sync
在接近0的同一时间结束。请尝试以下操作以获得交互式显示:常规磁盘,我通常可以忽略Writeback
,但是我不确定USB传输路径中是否更多地使用了它。如果只是在没有明显趋势的情况下上下反弹,则可能只需看一下Dirty
数字即可。评论
在我的系统上,当Dirty为空时,回写将保持几兆,直到接近尾声,这时它也开始下降。
–mattdm
2012年10月8日在2:02
#2 楼
您可以在同步时查看相应设备的/sys/block/<device>/stat
文件。第9列将指示设备上的进行中请求数量,同步完成后该数量应降至零。应该让您大致了解仍有多少“填充”待处理。有关更多信息,请参阅内核文档中的stat.txt文件。 (我的系统上该目录中还有一个
inflight
文件,看起来它可能包含读写运行中的请求,但我找不到有关此文件的文档。)评论
仅供参考,结合其他答案:watch -t -n1'awk“ {print \ $ 9}” / sys / block / sdd / stat'
–mattdm
2012年10月8日在1:59
对于我的USB记忆棒,在复制操作和随后的整个同步过程中,它倾向于徘徊在150左右。它确实为0,但仅在最后。这使得其他答案对于不耐烦地观察进度更加有用。
–mattdm
2012年10月8日在2:01
(尽管从理论上讲,我只希望查看适当的设备,而不是查看系统范围的信息。)
–mattdm
2012年10月8日在2:03
有没有一种方法来获取已写入(已同步,刷新后不在运行中)或缓存要写入驱动器的字节数?如果每个驱动器都有写缓存大小,则可以将其与du一起使用,以计算在驱动器上同步的实际数据。
– Unfa
17年4月26日在10:06
#3 楼
通过使用Greg的答案,您可以简单地让sync
在后台运行,同时在内存中显示脏块的状态。要实现此目的,只需运行以下命令:
这将在后台执行
sync
的同时在后台调用watch
。当sync
命令完成时(大约在Dirty块的大小达到0时),您将获得如下所示的输出:该命令已完成,您可以使用Ctrl + C终止
watch
命令。评论
顺便说一句:我知道这是一个古老的问题,但这是第一个在有人寻找它时在Google上弹出的问题,我想添加找到的解决方案。
– jflemieux
17年5月24日下午14:15
太糟糕的sync / umount不能从内核获取更新,并且如果被告知可以直接打印这种东西。
–mcr
17-10-7在22:16
评论
有关更多信息,请参见:lwn.net/Articles/572911