Create cpu_strees.sh

This commit is contained in:
Arkasha-P
2025-07-26 18:13:31 +03:00
committed by GitHub
parent 84e2007010
commit 08cad89478

84
cpu_strees.sh Normal file
View File

@@ -0,0 +1,84 @@
#!/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