我有一个 30 TB 的目录,其中有数十亿个文件,形式上都是 JPEG 文件。我正在删除每个文件夹的文件,如下所示:
sudo rm -rf bolands-mills-mhcptz
该命令只是运行并且不显示任何内容无论它是否工作。
我想查看它正在删除文件或命令的当前状态是什么。
答案1
您可以使用每个删除的文件rm -v
打印rm
一行。这样你就可以看到rm
删除文件确实起作用了。但如果您有数十亿个文件,那么您将看到的只是rm
仍在工作。您将不知道有多少文件已被删除以及还剩下多少。
该工具pv
可以帮助您估计进度。
http://www.ivarch.com/programs/pv.shtml
以下是使用示例输出调用rm
的方法pv
$ rm -rv dirname | pv -l -s 1000 > logfile
562 0:00:07 [79,8 /s] [====================> ] 56% ETA 0:00:05
在这个人为的例子中,我告诉了pv
有1000
文件。的输出pv
显示 562 已被删除,经过的时间为 7 秒,预计完成时间为 5 秒。
一些解释:
pv -l
使pv
按换行符而不是字节进行计数pv -s number
告诉pv
您总数是多少,以便它可以给您一个估计。logfile
最后的重定向是为了干净的输出。否则,状态行pv
会与 的输出混淆rm -v
。奖励:您将拥有删除内容的日志文件。但要注意文件会变得很大。/dev/null
如果不需要日志,也可以重定向到。
要获取文件数量,可以使用以下命令:
$ find dirname | wc -l
如果有数十亿个文件,这也可能需要很长时间。您pv
也可以在这里查看它已经计数了多少
$ find dirname | pv -l | wc -l
278k 0:00:04 [56,8k/s] [ <=> ]
278044
这里说统计278k个文件用了4秒。 () 末尾的确切计数278044
是 的输出wc -l
。
如果您不想等待计数,那么您可以猜测文件数量或pv
直接使用:
$ rm -rv dirname | pv -l > logfile
这样您将无法估计要完成的任务,但至少您会看到有多少文件已被删除。/dev/null
如果不需要日志文件,请重定向到。
吹毛求疵:
- 你真的需要吗
sudo
? - 通常
rm -r
足以递归删除。不需要rm -f
。
答案2
查看莱斯马纳的回答,它比我的好得多 - 尤其是最后一个例子,如果您指定而不是 ,pv
它不会比原始静默花费更长的时间。rm
/dev/null
logfile
假设您rm
支持该选项(因为您运行的是 Linux,所以可能会支持),您可以使用以下命令在详细模式下运行它-v
:
sudo rm -rfv bolands-mills-mhcptz
正如许多评论者所指出的,由于终端生成和显示的输出量很大,这可能会非常慢。您可以将输出重定向到文件:
sudo rm -rfv bolands-mills-mhcptz > rm-trace.txt
并观察 的大小rm-trace.txt
。
答案3
另一种选择是观察文件系统上的文件数量减少。在另一个终端中,运行:
watch df -ih pathname
rm
随着进展,已使用的索引节点数量将会减少。 (除非文件大多具有多个链接,例如,如果树是使用创建的cp -al
)。这会跟踪文件(和目录)数量的删除进度。 df
没有-i
将跟踪所使用的空间。
您还可以运行iostat -x 4
查看每秒的 I/O 操作(以及 kiB/s,但这与纯元数据 I/O 不太相关)。
rm
如果您对当前正在处理哪些文件感到好奇,您可以将 附加strace
到它并观察unlink()
(和 getdents)系统调用在您的终端上出现。例如sudo strace -p $(pidof rm)
。您可以在不中断它的情况^c
下分离该 strace 。rm
我忘记是否rm -r
将目录更改为要删除的树;如果是这样你可以看看/proc/<PID>/cwd
。它/proc/<PID>/fd
可能经常打开一个目录 fd,因此您可以查看该目录以了解您的rm
进程当前正在查看的内容。
答案4
您可以做的一件事是在后台启动该rm
进程(没有输出,因此不会减慢速度),然后使用简单的(a)命令在前台监视它:
pax> ( D=/path/to/dir ; rm -rf $D & while true ; do
...> if [[ -d $D ]] ; then
...> echo "$(find $D | wc -l) items left"
...> else
...> echo "No items left"
...> break
...> fi
...> sleep 5
...> done )
27912 items left
224 items left
No items left
pax> _
该find/wc
组合可以替换为任何能够为您提供所需单位的工具。
(一口井,相对地简单,与核物理、黎曼假设或圣诞节给我妻子买什么相比:-)