Find使用
使用 -exec
查找但有延遲
我有這段程式碼來優化
/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...