Find

使用 -exec 查找但有延遲

  • November 23, 2021

我有這段程式碼來優化/dir目錄內所有圖像的圖像大小:

find /dir/ -iregex ".*\.\(jpg\|jpeg\)" -exec jpegoptim --strip-all {} \;

當我執行這段程式碼時,它會消耗大量的伺服器 CPU。所以我想知道:我是否可以在每個之間添加延遲exec?例如,我希望每次exec呼叫每個圖像之間有 100 毫秒的延遲,這樣 CPU 就不會變得很忙。

你有什麼建議?我的伺服器正在執行 Centos 8。

-exec您還可以使用more添加更多命令

find /dir/ -iregex ".*\.\(jpg\|jpeg\)" -exec jpegoptim --strip-all {} \; -exec sleep 0.1 \;

但作為一般規則,如果你想讓它充分工作但對其他程序友好,使用 nice 非常簡單*:*

nice find /dir/ -iregex ".*\.\(jpg\|jpeg\)" -exec jpegoptim --strip-all {} \;

這就是命令喜歡並被創建的nice原因ionice

  • nice可用於降低程序CPU優先級
  • ionice可用於降低程序IO優先級

這些的組合可以確保您的程序只佔用可用處理器和 IO 功能的一小部分。此範例將程序 IO 推送到“盡力而為”類的最低端:

ionice -c2 -n7 find...

更改-c2-c3確保您的程序僅在 IO 子系統空閒時執行。

此範例將處理器餘量降低為低優先級:

nice -n12 find...

更改-n12-n19盡可能低的優先級。

將它們結合起來以獲得最大效果:

ionice -c2 -n7 nice -n12 find...

引用自:https://unix.stackexchange.com/questions/675897