NoPaste

CPU-Stresser

von heinz
SNIPPET_DESC:
CPUs auslasten mittels bc
SNIPPET_CREATION_TIME:
23.01.2020 12:59:31
SNIPPET_PRUNE_TIME:
Unendlich

SNIPPET_TEXT:
  1. #!/bin/bash
  2. #
  3. # CPU-Stresser
  4. #
  5. # Script um jeden Kern des Prozessors unter vollast laufen zu lassen.
  6. #
  7. #
  8.  
  9.  
  10. # Konfiguration
  11. # Anzahl der Prozessorkerne oder leer lassen fuer autoerkennung.
  12. kernmenge=
  13.  
  14. # Angabe, wieviele nachkommastellen von PI berechnet werden sollen.
  15. # Erhoehen Sie diesen Wert um die Rechen-/Laufzeit zu verlaengern
  16. rechendauer=100000000
  17.  
  18.  
  19.  
  20. # Funktionen -------------------------------------------------------------------
  21. function Stress_an # ($1=kernmenge leer=alle)
  22. {
  23. # Stressprozesse pause aus
  24.         for kern in `seq 0 $((${1:-$kernmenge}-1))`
  25.         do
  26.                 if test -n "${pids[$kern]}"
  27.                 then
  28.                         kill -sigcont ${pids[$kern]}
  29.                 else
  30.                         break
  31.                 fi
  32.         done
  33. }
  34.  
  35.  
  36.  
  37.  
  38.  
  39.  
  40.  
  41. function Stress_aus # ($1=kernmenge)
  42. {
  43. # Stressprozesse pause an
  44.         for kern in `seq 0 $((${1:-$kernmenge}-1))`
  45.         do
  46.                 if test -n "${pids[$kern]}"
  47.                 then
  48.                         kill -sigstop ${pids[$kern]}
  49.                 else
  50.                         break
  51.                 fi
  52.         done
  53. }
  54.  
  55.  
  56.  
  57.  
  58.  
  59.  
  60. function Ende
  61. {
  62.         echo -e '\n'
  63. # Stressprozesse beenden
  64.         for kern in `seq 0 $(($kernmenge-1))`
  65.         do
  66.                 kill ${pids[$kern]}
  67.  
  68.                 echo "-$kern- Stresser beendet. PID=${pids[$kern]}"
  69.         done
  70.  
  71.         echo -e "\nFertig.\n"
  72.  
  73.         exit
  74. }
  75.  
  76.  
  77.  
  78.  
  79.  
  80.  
  81.  
  82.  
  83. # Hauptteil ####################################################################
  84. # [strg]+c und 'Fenster schliessen Knopf' abfangen (Um noch die Stressprozesse zu killen)
  85. trap 'Ende' 1 2 3 15
  86.  
  87. # Automatische ermittlung der Kernmenge
  88. kernmenge=${kernmenge:-`grep -ce 'processor' /proc/cpuinfo`}
  89.  
  90. echo -e "\nCPU-Stresser: ($kernmenge Kerne)\n"
  91.  
  92. # Stressprozesse starten
  93. for kern in `seq 0 $(($kernmenge-1))`
  94. do
  95.         bc -l <<<"scale=$rechendauer; 4*a(1)" >/dev/null &
  96.         pids[$kern]=$!
  97.  
  98.         echo "-$kern- Stresser gerstartet. PID=${pids[$kern]}"
  99. done
  100. Stress_aus
  101. echo
  102.  
  103.  
  104.  
  105.  
  106.  
  107. # Hauptschleife
  108. while true
  109. do
  110.         read -sn1 -p "Wieviele Stresser sollen laufen? [0 - $kernmenge]   (q=ende) "
  111.         test "$REPLY" == 'q' && break
  112.         menge=`tr -d '[:alpha:][:space:][:punct:][:cntrl:]' <<<$REPLY`
  113.         test ${menge:-0} -gt $kernmenge && menge=$kernmenge
  114.         test ${menge:-0} -eq 0 && farbe='\033[0;32;40m' || farbe='\033[1;31;40m'
  115.         echo -ne "  $farbe${menge:-0}\033[0m  \r"
  116.         Stress_aus
  117.         test ${menge:-0} -gt 0 && Stress_an $menge
  118. done
  119.  
  120.  
  121.  
  122.  
  123. Ende
  124.  
  125.  
  126.  
  127.  
  128.  
  129.  
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136.  
  137.  
  138.  
  139.  
  140.  
  141.  
  142.  
  143.  
  144.  
  145.  
  146.  
  147.  
  148.  
  149.  
  150.  
  151.  
  152.  
  153.  
  154.  
  155.  
  156.  
  157.  
  158.  
  159.  
  160.  
  161.  
  162.  
  163.  
  164.  
  165.  
  166.  

Quellcode

Hier kannst du den Code kopieren und ihn in deinen bevorzugten Editor einfügen. PASTEBIN_DOWNLOAD_SNIPPET_EXPLAIN