In Linux, tijdens het uitvoeren van een proces dat lang moet worden uitgevoerd, kan het lastig zijn om het halverwege te beëindigen omdat je geen tijd meer hebt, of omdat je thuis moet komen. Als je ooit een dergelijke situatie hebt meegemaakt, moet je echt de Reptyr-tool gebruiken.

Wat is Reptyr?

Het hulpprogramma Reptyr is een opdrachtregelhulpprogramma dat een werkproces van de ene terminal uitvoert en naar een andere module migreert. Met andere woorden, het herhaalt een proces. De naam doet ook denken aan een pseudoterminal - vaak afgekort als "PTY". Een pseudoterminal is, als je het nog niet wist, een tool waarmee twee processen (een master en een slave) aan elkaar kunnen worden gekoppeld. Wat je op de ene schrijft, wordt weerspiegeld in de andere.

Hoe werkt Reptyr?

Met Reptyr kunt u een proces op het werk starten en het thuis beëindigen (als u SSH gebruikt). Er zijn andere hulpprogramma's die lijken op de Reptyr-tool, zoals Screenify en Retty, en die u mogelijk al eerder bent tegengekomen. Reptry is echter op dit moment beter dan zijn concurrenten. Het heeft minder bugs en is veel efficiënter. Het probleem met deze andere tools is dat de controleterminal van het proces niet wordt gewijzigd, zelfs wanneer het proces wordt gemigreerd. Als u bijvoorbeeld Screenify gebruikt en u probeert de opdrachten "^ c" of "^ z" op de nieuwe terminal te gebruiken, werken deze niet correct. Dit komt omdat ze worden uitgevoerd op de terminal die op dit moment de controle heeft. Als je het formaat van een programmavenster aanpast of de " less " -opdracht probeert, werkt het ook niet correct, omdat Linux wordt misleid door te denken dat je nog steeds op de oude terminal werkt.

Dus hoe werkt Reptyr precies? Het is gericht op het proces dat we willen migreren met behulp van ptrace API, opent een nieuw eindstation en gebruikt "dup2" om de oude bestandsbeschrijvingen te overschrijven. Reptyr verschilt ook van andere processen doordat het de controleterminal verandert. Je kunt de officiële blog bekijken om de details te krijgen, maar het betreft in feite het manipuleren van de ioctl, TIOCSCTTY-functie in Linux om het controleproces te veranderen.

Installatie

In een Ubuntu-gebaseerde distro kun je apt-get gebruiken om de applicatie te installeren:

 sudo apt-get install reptyr 

Een proces naar een nieuw scherm verplaatsen met Reptyr

U kunt Reptyr ook gebruiken, samen met de GNU Screen-software-app (of een soortgelijke terminal-multiplexer-applicatie), om uw proces naar een nieuwe schermsessie te verplaatsen. Als u bijvoorbeeld een lopend proces hebt en uw server opnieuw moet opstarten, kunt u het naar een nieuwe schermsessie overbrengen, zodat u het opnieuw kunt openen na een herstart van het systeem. Klinkt handig, toch? Dus hoe doe je dat precies?

Ten eerste moet u het proces opschorten dat u wilt migreren. Dat kan op verschillende manieren gebeuren - het hangt allemaal af van het proces dat je uitvoert (meestal werkt "^ z"). Vervolgens moet u het proces op de achtergrond hervatten nadat u het hebt opgeschort. Het bevel hiervoor is dat je het niet wist, is,

 bg 

Vervolgens moet u het onderliggende proces isoleren van het bovenliggende proces. Dit komt omdat het bovenliggende proces wordt beëindigd tijdens het opnieuw opstarten en u moet voorkomen dat dit gebeurt met het onderliggende proces. Gebruik hiervoor de opdracht disown:

 disown name_of_process 

Dan moet je de schermsoftware starten. Het is eigenlijk een vrij handig hulpmiddel - het is eenvoudig te downloaden, als je het niet hebt. Je start het op met de volgende opdracht:

 scherm 

En nu moet u het proces ophalen dat u probeert te migreren. Houd er rekening mee dat u de PID van het lopende proces voor deze opdracht nodig hebt. U kunt ook de opdracht " pgrep " gebruiken. Als u de PID kent, typt u:

 reptyr PID 

Als u de PID niet kent:

 reptyr $ (pgrep naam_van_proces) 

En je bent klaar! U kunt nu uitloggen van uw sessie zonder het proces te doden.

Samenvatting

 $ ctrl + z # Onderbreek het huidige proces $ disown  # Ontkoppel het proces van het shell $ -scherm # Startscherm $ reptyr $ (pgrep irssi) # Keer terug naar het proces 

Reptyr is open source en helemaal gratis. Het is eenvoudig in te stellen en te gebruiken, dus ga ervoor en probeer het eens. Ben zeker dat je het heel handig zult vinden.

Afbeeldingscredit: Techiezone, Mtellin @ Flickr