reparenting procesu po preruseni ssh spojeni
Dan Lukes
dan at obluda.cz
Sat Mar 14 09:49:26 CET 2020
Miroslav Lachman wrote on 12. 3. 2020 16:45:
> Zil jsem v domeni, ze kdyz se prerusi SSH spojeni, tak proces, ktery byl
> spusten uzivatelem skrz to SSH spojeni, se taky ukonci.
Hacek je zakopany v presnem popisu.
A ten se ti dokonce (asi neumyslne) podaril. Skutecne - *proces* se
ukonci. Myslim aktivne - musi to udelat on. No a nektery proces se
proste neukonci.
Tak ja to radsi popisu jinak.
Kdyz spadne SSHD, proces by od nej mel dostat signal SIGHUP. Signal je
procesem prijat a obslouzen, pricemz defaultni obsluzna rutina aktivne
ukonci proces (sama sebe). Ale konkretni proces nemusi nechat reagovat
defaultni obsluznou rutinu, muze instalovat vlastni nebo aktivovat
"igoruj" obsluhu signalu ...
> Rodicem toho procesu se stal PID 1 (init).
Kdyz umre rodicovsky proces a child neskonci, pak se jeho rodicem stava
init.
> A jak tomu zabranit?
Pokud ...
1. nejde o chybu SSHD (dokaze zabranit tomu, aby se pri jeho konci detem
SIGHUP poslal)
2. nejde o chybu systemu (odeslany signal se nedoruci)
pricemz
na tyhle chyby to nevypada, kdyz u jinych procesu to funguje spravne
tak jde o
3. chybu procesu, ktery se rozhodne se neukoncovat.
Mozne reseni:
a) oprava procesu aby se takhle nechoval (muze to byt chyba PHP nebo
dusledek vady interpretovaneho PHP kodu)
nebo
b) napsat wrapper, spoustet ze sshd ten a ktery teprve bude volat
postizeny proces a ktery bud etransparentni az na ten SIGHUP, ktery
nebude dolu predavat 1:1 a misto nej posle jiny signal, na ktery proces
reagovat ochotny je, propadne SIGKILL, ktery sam obslouzit (a tedy
ignorovat) nemuze.
> Zrovna v tomhle pripade bych potreboval, aby ten proces taky umrel. I
> kdyz mi neco naseptava, ze neni normalni ani to, ze tam ten proces
> zustane bezet klidne 20 hodin a zere veskery CPU (tzn. je tam neco hodne
> spatne)
Zrejme dalsi prizmak vady toho SW.
Tak mu omez maximalni dovoleny spotrebovany cas procesoru. Po prelezeni
sift limitu dostane SIGXCPU coz ho defaultne taky ukonci, ale i tohle
muze ignorovat. Prelezeni hard limitu by ale uz prezit nemel.
Dan
More information about the Users-l
mailing list