В Linux, докато работите с процес, който се нуждае от дълго време за изпълнение, може да е болка да го прекратите наполовина, защото сте излезли извън времето или защото трябва да се приберете у дома. Ако някога сте се сблъскали с такава ситуация преди, тогава наистина трябва да получите инструмента Reptyr.

Какво представлява Reptyr?

Инструментът Reptyr е помощна програма за команден ред, която изпълнява процес от един терминал и го мигрира към друг. С други думи, той повтаря един процес. Името също така напомня на псевдо термина, често съкратено като "PTY". Псевдо терминал, ако не знаете, е инструмент, който позволява два процеса (майстор и роб) да бъдат свързани помежду си. Това, което пишете на едно, е отразено в другото.

Как действа Reptyr?

С Reptyr можете да започнете процес на работа и да го завършите у дома (ако използвате SSH). Съществуват и други инструменти, подобни на инструмента Reptyr, като Screenify и Retty и вероятно сте ги срещнали преди това. Въпреки това, Reptry се оказа по-добра от конкурентите си в момента. Той има по-малко бъгове и е много по-ефективен. Проблемът с тези други инструменти е, че контролиращият терминал на процесите не се променя, дори когато процесът мигрира. Ако използвате например Screenify например и се опитате да използвате командите "^ c" или "^ z" на новия терминал, те не работят правилно. Това е така, защото те се изпълняват на терминала, който има контрол в момента. Ако промените размера на прозореца на програмата или опитате командата " less ", тя също не работи правилно, тъй като Linux се заблуждава да мисли, че все още работите на стария терминал.

И как работи Reptyr точно? Той е насочен към процеса, който искаме да мигрираме, като използваме ptrace API, отваряме нов терминал и използваме "dup2", за да презапишем старите описания на файловете. Reptyr също се различава от другите процеси, тъй като променя контролния терминал. Можете да проверите официалния блог, за да получите подробностите, но основно включва манипулиране на функцията ioctl, TIOCSCTTY в Linux, за да промените контролния процес.

Инсталация

В дистрибуция на Ubuntu можете да използвате apt-get, за да инсталирате приложението:

 sudo apt-get инсталирате reptyr 

Преминаване на процес към нов екран с Reptyr

Можете също така да използвате Reptyr заедно с приложението за софтуер GNU Screen (или подобно приложение за терминален мултиплексор), за да преместите процеса си на нова екранна сесия. Например, ако имате работещ процес и трябва да рестартирате сървъра си, можете да го прехвърлите на нова екранна сесия, за да можете отново да го осъществите след рестартиране на системата. Звучи полезно, нали? И така, как точно правиш това?

Първо, трябва да преустановите процеса, който трябва да мигрирате. Това може да се направи по различни начини - всичко зависи от процеса, който изпълнявате (предимно "^ z" работи). След това, след като сте го спряли, трябва да възобновите процеса във фонов режим. Командата за това, не сте знаели, е,

 бг 

След това ще трябва да изолирате процеса на детето от родителския процес. Това е така, защото родителският процес ще бъде прекратен по време на рестартирането и трябва да го задържите от детския процес. За да направите това, използвайте командата за отхвърляне:

 отхвърляне name_of_process 

След това ще трябва да стартирате екранното софтуерно приложение. Това всъщност е доста удобен инструмент - лесно можете да го изтеглите, ако не го притежавате. Пускате го със следната команда:

 екран 

И сега трябва да извлечете процеса, който се опитвате да мигрирате. Имайте предвид, че за тази команда се нуждаете от PID на изпълнения процес. Друга възможност е да използвате командата " pgrep ". Ако знаете PID, въведете:

 reptyr PID 

Ако не знаете PID:

 reptyr $ (pgrep name_of_process) 

И сте готови! Вече можете да излезете от сесията си, без да убивате процеса.

рекапитулация

 $ ctrl + z # Спиране на текущия процес $ disown  # Отделяне на процеса от екрана на обвивката $ # Стартиране на екрана $ reptyr $ (pgrep irssi) # Връщане на процеса 

Reptyr е с отворен код и напълно безплатно. Лесно е да настроите и използвате, така че да върви напред и да опитате. Сигурен съм, че ще го намерите доста удобен.

Ключови думи: Techiezone, Mtellin @ Flickr