你真的无法得到一个运行更少的过程。您可以使用nice
较低的优先级,但这与其他进程有关。在进程运行时运行CPU冷却器的方法是用于usleep(3)
迫使进程退出运行状态一定时间,但这将涉及修补tar
或使用该LD_PRELOAD
机制提供tar
使用很多功能的修补函数(例如fopen(3)
)。
我怀疑您最好的解决方法是您在SuperUser上提到的硬件:保持笔记本电脑凉爽和/或降低CPU时钟。
一个烦人但可能可行的解决方法(实际上是杂点)在“宏观”层面上起作用。与其让tar
运行时间每200ms变为100ms,不如让它每两秒运行一次。注意:这是可怕的,可怕的恶棍。但是,嘿,它甚至可以工作!
tar cjf some-file.tar.bz2 /some-directory &
while true; do
sleep 1 # Let it run for a second
kill -STOP $! 2>/dev/null || break
sleep 1 # Pause it for a second
kill -CONT $! 2>/dev/null || break
done
第一个sleep
调整睡眠时间,第二个调整运行时间。目前,它的占空比为50%。为了降低温度,您很有可能需要将占空比降低到大约25%或更低(1秒运行,3秒睡眠=每4秒1次= 25%占空比)。sleep
顺便说一句,shell命令可能需要小数时间。所以你甚至可以说sleep 0.1
。请确保将其保持在0.001以上,并且不要忘记脚本执行也会增加时间。