Wissel van terminal met Reptyr

linux tools

Artikelgereedschap

  • Tip ons
  • Printen
  • Reacties (1)
1x Aanbevolen

Gepubliceerd: Dinsdag 19 juli 2011
Auteur: Koen Vervloesem

Iedere Linux-beheerder gebruikt wel eens Screen om een programma aan een andere terminal te koppelen. Maar wat als je vergeten bent Screen op te starten? Reptyr komt dan te hulp.

Zelfs de meest verstokte Screen- of Tmux-gebruikers vergeten wel eens een programma in hun favoriete sessiebeheerder op te starten, waardoor ze het programma niet naar een andere terminal kunnen verplaatsen. Maar is dat echt een probleem? Nee, er is een eenvoudige manier om toch nog het programma van de terminal te ontkoppelen: druk op CTRL+Z om het te suspenden, en typ daarna bg in om het in de achtergrond als job uit te voeren. Met het commando jobs krijg je een lijst van jobnummers, en daarna kan je een job van zijn terminal ontkoppelen met het volgende commando (hier voor jobnummer 1):


$ disown %1

Reptyr

Hierna kun je dus tenminste je terminal afsluiten zonder dat je programma afgebroken wordt, maar nu het 'disowned' is gaat de uitvoer van het programma nergens meer heen, wat niet in alle gevallen wenselijk is. Als het programma eenmaal gestopt is, weet je bijvoorbeeld niet eens of het wel succesvol afgesloten is. En invoer kun je aan het programma uiteraard ook niet meer geven. Maar voor wget- of curl-commando waarmee je een groot iso-bestand begon te downloaden vlak voor je je van je computer wou afmelden, is dit nog best nuttig.

Een flexibeler oplossing is het programma Reptyr. Hiermee kun je een programma van zijn terminal ontkoppelen en dit aan een andere terminal koppelen, zodat je de uitvoer van het programma daarin te zien krijgt. Zoek daarvoor eerst het process ID van het programma met pgrep of pidof , ga naar een andere terminal en typ daarin het volgende in:


$ reptyr <pid>

Het programma wordt dan van de originele terminal afgekoppeld en verschijnt nu in de tweede terminal.

Reptyr is Linux-only omdat het ptrace gebruikt en afhangt van Linux-specifieke systeemaanroepen. Voor Ubuntu is er een PPA van Reptyr, en anders kun je het zelf compileren. Onder Ubuntu 10.10 en hoger is ptrace echter uitgeschakeld behalve voor enkele uitzonderingssituaties. Om reptyr dan te kunnen gebruiken moet je eerst ptrace inschakelen met het volgende commando als root:


# echo 0 > /proc/sys/kernel/yama/ptrace_scope

En om deze wijziging blijvend te maken, kun je in het bestand /etc/sysctl.d/10-ptrace.conf de volgende regel zetten:


kernel.yama.ptrace_scope = 0

Meer informatie over de werking van reptyr vind je op de website van de maker, Nelson Elhage, in zijn blogposts reptyr: Attach a running process to a new terminal en reptyr: Changing a process's controlling terminal. Andere programma's die iets soortgelijks doen zijn injcode en neercs.

De rubriek Tips & Tools biedt praktische informatie die IT-professionals in hun dagelijkse werk kunnen toepassen.

Nieuwsbrief

Ontvang dagelijks een overzicht van het laatste ICT-Nieuws in uw mailbox

Whitepapers

  • Maximaliseer het voordeel van SaaS

    Cloud-applicaties hebben grote invloed op het gebruik van de IT-architectuur en niet ieder project levert de verwachte voordelen op.

    Downloaden
  • Flexibele IT noodzaak voor bankenOnderzoeksrapport over de beperkte flexibiliteit van veel IT-systemen in de bancaire wereld. Lees meer!
  • Kostenbesparing voor long tail appsOplossing voor kostenkwesties in VDI. Technologie geschikt voor long tail apps.
» Meer whitepapers

Peiling

Loading Poll

Video: Review: HTC One X-smartphone met vijf...

Review: HTC One X-smartphone met vijf cores (video)