Process stop-polása, folytatása majd PID alapján

Fórumok

Hogyan lehet egy háttérben futó program futását felfüggeszteni, majd később folytatni a futtatását. Konzolból ez egy CTRL+z 'stopped', majd
fg parancs és folytatódik a futása.
De nekem most háttérben futó programhoz kellene, így PID száma alapján kellene felfüggeszteni a futását majd szintén PID-re hivatkozva folytatni a futását. Legalábbis ez tűnik a leglogikusabbnak.
Kérdés viszont, hogy milyen parancsokkal lehet ezt megcsinálni?

Hozzászólások

Valóban fura, de nem így van. Ezen magam is meglepődtem. Csak a parent process áll le, a child processek futnak tovább.
Egyébként arról van szó, hogy egy hibás processzorú gépen kerestem megoldást. Nagy CPU igényű alkalmazásoknál egyszerűen lefagy a rendszer, ilyenek: hosszabb fordítás gcc-vel, komplex matematikai műveleteket végrehajtó programok, egyes nagyobb java programok.
Feltehetően nem arról van szó. hpgy tönkre ment teljesen a CPU egy része, ami egy bizonyos x86 utasítás végrehajtásáért felelős, azaz pontosabban RISC86, mert AMD processzorról van szó. Inkább túlmelegedéses probléba lehet egy bizonyos részén a CPU-nak, mert
1. nem ugyanannál a kódrésznél fagy le fordítás során mindig, hanem hol itt, hol ott.
2. csak egy bizonyos idő után, hosszabb intenzív CPU használat a már említett programokkal. Egyébként hetekig stabilan működik, ha betartjuk a "szabályokat".

Ha megszakítom pl. a fordítás futtatását, CTRL+z majd egy idő után fg folytatom, akkor lefordulnak nagyobb programkódok is. Erre írtam egy scriptet, ami maga megszakítgatja majd folytatja a program futását egy kis szünet után, az általad írt kill -STOP kill -CONT módon.
De valamiért a kill -STOP után is 100% marad a CPU kihasználtság. És hamarosan le is fagy a rendszer.
Konzolbol kiadott CTRL+z minden child processt megszakít, de úgy látszik a kill -STOP $PID valamiért nem.

Ha rekurzíven akarsz kill-ezni, akkor

function rkill() { for i in `ps --no-headers -o pid --ppid $2`; do rkill $1 $i; done; kill $1 $2 }

aztán 'rkill -STOP parentpid'