我的机器上的 find 命令执行时间太长。当我使用time
命令时,我发现系统时间和用户时间与实际时间相比太小。我的 find 进程是否没有得到正确安排?
我打断了永无止境的查找命令并得到了以下统计数据:
Real time : 5min
Sys time : 1.1 sec
User time : 3 sec
我之前在跑步
find / -name ls 2>/dev/null
答案1
对于该find
命令,磁盘 IO 可能比 CPU 时间成为更为严重的瓶颈。
比较你的
find / -name ls 2>/dev/null
相当于
locate ls | grep "/ls$"
或者
locate -r "/ls$"
或(最快找到路径上命令的位置)
which ls
答案2
想发表一下我的看法...您可能想看看使用 mlocate。它将缓存系统上的文件,并允许您使用“locate”命令快速找到您要查找的内容。并且您可以使用“updatedb”命令更新缓存。唯一的缺点是它在脚本中不像 find 那样容易使用,因为它默认需要 root 权限才能使用。
Find 不会缓存任何内容,它每次都会重新扫描。就像 RedGrittyBrick 所说的那样,您的磁盘会造成系统瓶颈。