Bạn thực sự không thể có được một quá trình để chạy ít hơn . Bạn có thể sử dụng nice
để ưu tiên thấp hơn, nhưng điều đó liên quan đến các quy trình khác. Cách để chạy bộ làm mát CPU trong khi chạy quy trình là sử dụng usleep(3)
để buộc quá trình ra khỏi trạng thái chạy trong một khoảng thời gian nhất định, nhưng điều đó sẽ liên quan đến việc vá tar
hoặc sử dụng LD_PRELOAD
cơ chế để cung cấp chức năng vá tar
sử dụng nhiều (ví dụ: fopen(3)
).
Tôi nghi ngờ cách giải quyết tốt nhất của bạn là những phần cứng bạn đã đề cập trên SuperUser: giữ cho máy tính xách tay mát mẻ và / hoặc hạ thấp xung nhịp CPU.
Một cách giải quyết khó chịu nhưng có thể khả thi (một loại bùn, thực sự) hoạt động ở mức độ 'vĩ mô'. Thay vì tar
chạy 100ms cứ sau 200ms, bạn có thể khiến nó chạy một giây trong số hai giây. Lưu ý: đây là một loại bùn khủng khiếp, khủng khiếp. Nhưng này, nó thậm chí có thể làm việc!
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
Cái thứ nhất sleep
điều chỉnh thời gian ngủ, cái thứ hai điều chỉnh thời gian chạy. Hiện tại, nó có chu kỳ thuế 50%. Để giữ nhiệt độ xuống thấp, rất có thể bạn sẽ cần phải giảm chu kỳ thuế xuống còn 25% hoặc thấp hơn (chạy 1 giây, ngủ 3 giây = 1 cứ sau 4 giây = chu kỳ nhiệm vụ 25%). Bằng cách này, lệnh shell sleep
có thể mất thời gian phân số. Vì vậy, bạn thậm chí có thể nói sleep 0.1
. Giữ chắc chắn hơn 0,001 để chắc chắn và đừng quên rằng việc thực thi tập lệnh cũng tăng thêm thời gian.