Вы не можете заставить процесс работать меньше . Вы можете использовать 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, чтобы быть уверенным, и не забывайте, что выполнение скрипта также увеличивает время.