คุณไม่สามารถทำให้กระบวนการทำงานน้อยลงได้ คุณสามารถใช้nice
เพื่อให้มันมีลำดับความสำคัญต่ำกว่า แต่ที่เกี่ยวข้องกับกระบวนการอื่น ๆ วิธีเรียกใช้ตัวระบายความร้อนซีพียูในขณะที่กระบวนการทำงานนั้นใช้usleep(3)
เพื่อบังคับให้กระบวนการออกจากสถานะการทำงานเป็นระยะเวลาหนึ่ง แต่อาจเกี่ยวข้องกับการแพตช์tar
หรือการใช้LD_PRELOAD
กลไกเพื่อให้ฟังก์ชั่นการปะติดที่tar
ใช้มากfopen(3)
)
ฉันสงสัยว่าวิธีแก้ปัญหาที่ดีที่สุดของคุณคือฮาร์ดแวร์ที่คุณได้กล่าวถึงใน SuperUser: ทำให้แล็ปท็อปเย็นและ / หรือลดนาฬิกา CPU
วิธีแก้ปัญหาที่น่ารำคาญ แต่อาจเป็นไปได้ (kludge จริงๆ) ทำงานในระดับ 'macroscopic' แทนที่จะทำtar
100ms ทุก ๆ 200ms คุณสามารถทำให้มันวิ่งหนึ่งวินาทีจากทุก ๆ สองวินาที หมายเหตุ: นี่เป็นกระบองที่น่ากลัวและน่ากลัว แต่เดี๋ยวก่อนมันอาจทำงานได้!
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% รอบการทำงาน) คำสั่ง shell sleep
สามารถใช้เวลาเป็นเศษส่วนได้ ดังนั้นคุณสามารถพูดsleep 0.1
ได้ เก็บมากกว่า 0.001 เพื่อให้แน่ใจและอย่าลืมว่าการเรียกใช้สคริปต์เพิ่มขึ้นตามเวลาด้วย