我可以减少大型递归 find + chmod 命令的 CPU 使用率吗?

我可以减少大型递归 find + chmod 命令的 CPU 使用率吗?

我正在使用以下命令执行权限修复:

sudo find . -type f -exec chmod 470 {} \;

有成千上万个文件需要更新权限。它还会在运行期间导致 CPU 使用率激增。

使用纯 chmod 递归更新进一步修改文件权限的后续调用不会造成 CPU 峰值

sudo chmod 770 -R /path/to/directory

我正在寻找:

  • 减少此调用期间 CPU 使用率的方法
  • 可能过滤需要更新权限的文件

答案1

用于nice在运行命令时设置较低的调度优先级,或用于renice更改已经运行的进程的优先级。

sudo nice -n 19 find . -type f -exec chmod 470 {} \;

您可以将 find 更改为不返回已与您设置的模式匹配的文件:

sudo nice -n 19 find \! -perm 0470 -and -type f -exec chmod 470 {} \;

答案2

CPU 的峰值是由于磁盘活动引起的,因此减少 CPU 的唯一方法是加快磁盘速度。

相关内容