Files
Lenovo-RD450x_Temperature/cpu_strees.sh
2025-07-26 18:13:31 +03:00

85 lines
2.3 KiB
Bash
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/bin/bash
# Функция для аварийного завершения
cleanup() {
echo -e "\n[!] Аварийная остановка... Завершаем все процессы."
pkill -P $$ # Убиваем все дочерние процессы
exit 1
}
trap cleanup SIGINT SIGTERM # Перехватываем Ctrl+C
# Числа Фибоначчи (рекурсия + большие числа)
fib() {
local n=$1
if (( n <= 1 )); then
echo $n
else
echo $(( $(fib $((n-1))) + $(fib $((n-2))) ))
fi
}
# Тяжёлые вычисления с плавающей точкой (симуляция БПФ)
floating_point_stress() {
local i
for (( i=0; i<500; i++ )); do
awk 'BEGIN {
sum = 0
for (j=0; j<1000; j++) {
sum += sin(j) * cos(j) / (sqrt(j+1) + 0.0001)
}
}' >/dev/null
done
}
# Генерация SHA-256 хешей
hash_stress() {
local str="CPU_STRESS_TEST_$RANDOM"
for (( i=0; i<1000; i++ )); do
echo "$str$i" | sha256sum >/dev/null
done
}
# Проверка простых чисел (упрощённый тест)
is_prime() {
local n=$1
if (( n < 2 )); then
return 1
fi
for (( i=2; i*i<=n; i++ )); do
if (( n % i == 0 )); then
return 1
fi
done
return 0
}
prime_stress() {
local i
for (( i=2; i<5000; i++ )); do
is_prime $i
done
}
# Запуск нагрузочных тестов в параллельных подпроцессах
run_stress_test() {
echo "[+] Запуск сложного CPU-теста (алгоритмы: Фибоначчи, плавающая арифметика, SHA-256, простые числа)..."
echo "[!] Нажмите Ctrl+C для остановки."
# Запускаем нагрузку на всех ядрах
for (( core=0; core<$(nproc); core++ )); do
(
while true; do
fib 20 >/dev/null
floating_point_stress
hash_stress
prime_stress
done
) &
done
wait # Ждём завершения (никогда не произойдёт, пока не нажмём Ctrl+C)
}
run_stress_test