Ви дійсно не можете змусити процес запускати менше . Ви можете використовувати його, nice
щоб надати йому нижчий пріоритет, але це стосується інших процесів. Спосіб запуску кулера процесора під час запуску процесу полягає у використанні, usleep(3)
щоб витіснити процес із стану запуску певний проміжок часу, але це передбачало б виправлення tar
або використання LD_PRELOAD
механізму для надання виправленої функції, яка tar
використовує багато (наприклад, fopen(3)
).
Я підозрюю, що ваші найкращі шляхи вирішення - саме ті апаратні, які ви згадали на SuperUser: підтримка ноутбука в прохолоді та / або зниження годинника процесора.
Дратівливий, але можливо життєздатний спосіб вирішення проблеми (насправді неприємність) працює на "макроскопічному" рівні. Замість того, щоб робити tar
пробіг 100 м кожні 200 мс, ви можете змусити його пробігати одну секунду кожні два. Примітка: це жахливий, жахливий хитрощі. Але ей, це може навіть спрацювати!
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 секунди сну = 1 кожні 4 секунди = 25% робочого циклу). Команда оболонки sleep
, до речі, може приймати дробові часи. Так ви могли навіть сказати sleep 0.1
. Тримайте його понад 0,001, щоб бути впевненим, і не забувайте, що виконання сценарію також додає часу.