Vraag Hoe vraag ik een afgekeurd proces terug?


Net als bij veel eerdere vragen, merkte ik dat ik een baan runde die ik wenste dat ik op het scherm had gespeeld. Ik moest het proces verloochenen omdat ik de verbinding moest verbreken. Nu ik opnieuw verbinding heb gemaakt, zie ik dat het proces nog steeds loopt. Hoe kan ik het proces "reclaimen", zodat ik de uitvoer ervan kan zien en input kan geven?

Deze vraag onderscheidt zich van het verplaatsen van een lopend proces naar het scherm, met als doel het heropenen van verloren stdin / out / err-handles.


10
2017-11-24 01:57


oorsprong


Mogelijk duplicaat van Een reeds actief proces naar het scherm verplaatsen - mattdm


antwoorden:


Dit is een dubbele vraag - zie Een reeds actief proces naar het scherm verplaatsen , wat wijst naar retty, wat een zelf-beschreven vreselijke hack is die implementeert wat ik altijd had geraden, maar mogelijk nooit echt geprobeerd: het vindt fd 0, 1 en 2 (standaard in, uit en fout, respectievelijk) voor het proces en hecht aan ze, als een vreselijke afwijkende parasiet die niet zou moeten zijn.


5
2017-11-24 04:11



Ik wist niet van dit programma - hoewel de waarheid wordt verteld, het is geen goede gewoonte om het te gebruiken! Goed antwoord, ongeacht. - Andrew M.


Door het proces af te wijzen, zeg je effectief dat je wilt dat het SIGHUP's negeert die zijn uitgegeven door de terminal. Zodra je je sessie sluit (zeg bash), wordt dit proces het eigendom van init. Dus als je zegt dat je een proces opnieuw wilt bezitten nadat je het eigendom hebt opgegeven, zeg je dat je het eigendom wilt verwijderen van een ander proces - dat niet is geïmplementeerd en niet zonder reden. Dit is gewoon niet mogelijk om elegant te doen in Linux.


5
2017-11-24 04:03



Processen bezitten andere processen niet zo. Een verstoord proces loopt nog steeds als u. - mattdm
Ze doen wanneer de bovenliggende sessie is gesloten - zoals aangegeven door zijn vraag. Ik heb mijn antwoord bijgewerkt om dit te weerspiegelen. - Andrew M.
Het bovenliggende proces verandert in init, maar dat is anders dan eigendom. De EUID en UID van het proces blijven dat van de oorspronkelijke gebruiker. Anders kan dit mogelijk worden misbruikt, omdat elke gebruiker plotseling een manier heeft om code uit te voeren als een andere gebruiker en niet minder als een systeemgebruiker. - mattdm
EUID / UID! = PPID. Ik heb het over proceseigendom, geen rechten. - Andrew M.
Ja, ik denk dat we het over alles eens zijn, behalve over de betekenis van het begrip 'proceseigendom'. Dit verwijst naar het gebruikers-ID waarmee het proces is geassocieerd, niet het bovenliggende proces. Misschien is de verwarring te wijten aan de disown bash-specifieke opdracht, die ondanks de naam eigenlijk niets te maken heeft met het veranderen van proceseigendom. - mattdm