GNU/Linux >> Znalost Linux >  >> Linux

Reptyr – přesuňte běžící proces z jednoho terminálu do druhého bez jeho uzavření

Řekněme, že spouštíte proces na vzdáleném serveru prostřednictvím relace SSH z místního systému. Nevěděli jste, že dokončení vzdálené úlohy bude trvat dlouho. Chcete pouze ponechat běžící úlohu na samotném vzdáleném serveru a zavřít relaci SSH bez ukončení vzdálené úlohy a poté ji znovu připojit k relaci SSH později nebo další den. Úlohu samozřejmě můžete spustit v screen/tmux relaci a odpojit se od relace obrazovky bez ukončení vzdálené úlohy a ukončit relaci SSH. Pokud jste ale nejprve zapomněli spustit relaci obrazovky, neexistuje způsob, jak se později znovu připojit k běžícímu procesu. Jakmile zavřete relaci SSH, běžící procesy budou také uzavřeny na vzdáleném systému. Co tedy budete dělat v takových případech? Žádný problém. Zde je Reptyr příkaz přichází na pomoc.

Reptyr je nástroj příkazového řádku pro přesun běžících procesů mezi ptys. Stačí spustit proces, který trvá dlouho, než se dokončí na vašem vzdáleném systému prostřednictvím relace SSH z místního počítače nebo notebooku, a zavřete relaci SSH, vraťte se domů a další den znovu připojte běžící proces. Můžete také snadno okamžitě migrovat/přesunout dlouho běžící proces z jednoho terminálu do druhého, aniž byste jej museli ukončit. Zní to užitečně? Samozřejmě, že je!

StáhnoutZdarma e-kniha:„6 užitečných nástrojů příkazového řádku systému Linux pro správce systému“

Tento stručný návod popisuje, jak přesunout běžící proces na nový terminál pomocí příkazu Reptyr.

Nainstalujte Reptyr na vzdálené systémy

Poznámka:  Váš vzdálený systém by měl mít tmux nebo obrazovka nainstalován, aby bylo možné přesunout běžící proces.

V Arch Linuxu a jeho derivátech spusťte:

$ sudo pacman -S reptyr

V systémech založených na DEB spusťte následující příkaz k instalaci Reptyr:

$ sudo apt-get install reptyr

Chcete-li nainstalovat obrazovku nebo tmux, spusťte:

$ sudo apt-get install tmux screen

Na RHEL / CentOS / Scieintific Linux / Fedora není reptyr k dispozici v repozitářích. Můžete jej tedy zkompilovat a nainstalovat, jak je uvedeno níže.

Nainstalujte následující předpoklady:

$ sudo yum install git tmux screen
$ sudo yum groupinstall 'development tools'

Repozitář Git clone reptyr s příkazem jako uživatel root:

$ git clone https://github.com/nelhage/reptyr.git

Přejděte do adresáře reptyr:

$ cd reptyr/

Spuštěním následujících příkazů jej zkompilujte a nainstalujte.

$ make
$ sudo make install

Zkompiloval jsem a nainstaloval jsem Reptyr ze zdroje v 64bitové serverové edici CentOS 7 a fungoval docela dobře, jak je popsáno výše.

Přesuňte běžící proces z jednoho terminálu do druhého bez jeho uzavření pomocí Reptyr

Obvykle se ke vzdálenému serveru připojujeme z libovolného místního systému přes SSH, jak je uvedeno níže.

# ssh [email protected]_Of_remote_system

Po připojení ke vzdálenému systému spusťte dlouhý proces. Například si stáhnu Ubuntu 16.04 desktop ISO pomocí wget příkaz.

# wget http://cdimage.ubuntu.com/daily-live/current/xenial-desktop-amd64.iso

Ukázkový výstup:

Jak vidíte na výše uvedeném snímku obrazovky, celková velikost stahování je 1,5 GB a dokončení zabere více než 90 minut.

Nechci čekat o tolik déle a také nechci opouštět vzdálenou práci.

Takže, co udělám, je spuštění obrazovky nebo tmux relaci v novém terminálu použijte reptyr nástroj pro zachycení běžícího procesu uvnitř obrazovky nebo relace tmux. Nakonec ukončím obě relace ssh a znovu se připojím k běžícímu procesu, kdykoli budu chtít.

Otevřeme nové okno Terminálu nebo novou kartu a zahájíme relaci obrazovky nebo tmux zadáním screen nebo tmux v Terminálu:

# screen

nebo

# tmux

Jak vidíte na výše uvedeném snímku obrazovky, relace obrazovky byla spuštěna a běží.

Nyní pomocí následujícího příkazu najdeme běžící procesy z nového terminálu:

# ps -a

Ukázkový výstup:

 PID TTY TIME CMD
 2320 pts/0 00:00:11 wget
 2343 pts/1 00:00:00 screen
 2358 pts/2 00:00:00 ps

Poznamenejte si PID pro wget proces a připojte běžící proces v relaci obrazovky pomocí příkazu:

# reptyr 2320

Hotovo! Jak vidíte na výše uvedeném snímku obrazovky, proces wget byl přesunut (migrován) ze starého terminálu do nového okna terminálu (toho, který běží s relací obrazovky).

Jakmile přesunete běžící proces z původního terminálu, bude okamžitě uzavřen a začne pokračovat tam, kde jsme jej v novém terminálu přestali.

Nyní můžete bezpečně odpojit nebo zavřít terminál a úloha bude pokračovat na vašem vzdáleném serveru.

Chcete-li se odpojit od obrazovky nebo relace tmux, stiskněte CTRL+A+D .

Po odpojení od relace obrazovky se zobrazí následující zpráva.

[detached from 2344.pts-1.server1]

Chcete-li znovu připojit běžící proces, SSH ke vzdálenému systému:

# ssh [email protected]

Zde. 192.168.1.150 je IP adresa mého vzdáleného serveru.

A pokud používáte relaci obrazovky, spusťte následující:

# screen -Dr

Pro relaci tmux spusťte:

# tmux attach

Voila! Spuštěný proces byl znovu připojen a uvidíte, že proces stále běží.

Jak vidíte na výše uvedeném snímku obrazovky, úloha wget není přerušena ani ukončena a stále běží. Poběží tak dlouho, dokud bude váš vzdálený systém v provozu.

Shrnutí

Abych to shrnul, Reptyr je velmi důležitý a užitečný nástroj pro správce systému Linux na jakékoli úrovni. V případě, že vás omrzí proces, jehož dokončení trvalo opravdu dlouho, Reptyr vám určitě pomůže. Stačí otevřít nové okno terminálu, SSH na váš vzdálený server, najít ID běžících procesů a bezpečně je přesunout na obrazovku nebo do relací tmux a ukončit relaci SSH. Další podrobnosti naleznete v odkazech připojených na konci tohoto kurzu.

Doporučené čtení:

  • Automatické spuštění relace Tmux na vzdáleném systému při přihlášení přes SSH
  • Jak zobrazit informace o procesu pomocí procesů v systému Linux
  • Tmate – sdílejte svůj terminál okamžitě s kýmkoli odkudkoli
  • Jak změnit typ a velikost písma konzole Linux
  • Jak uzamknout relace virtuální konzole v systému Linux
  • Jak přepínat mezi TTY bez použití funkčních kláves v Linuxu

To je prozatím vše. Nechám vás tedy, abyste se s tímto užitečným nástrojem seznámili. Vyzkoušejte to a nebudete zklamáni.

Referenční odkazy:

  • Reptyr GitHub
  • Průvodce Reptyrem

Linux
  1. CentOS / RHEL :Jak přesunout skupinu svazků z jednoho systému do druhého

  2. Zkopírujte strukturu složek (bez souborů) z jednoho umístění do druhého

  3. Existuje jednoduchý způsob, jak přesunout/zkopírovat logický svazek z jedné skupiny svazků do druhé? (LVM2)

  1. Jak přesunout všechny soubory (včetně skrytých) z jednoho adresáře do druhého?

  2. Spouštění skriptů z jiného adresáře

  3. Jak připojím terminál k oddělenému procesu?

  1. Linux – je to proces, který má řídicí terminál, nebo je to relace, která má řídicí terminál?

  2. Kopírovat posledních N řádků z jednoho souboru do druhého?

  3. Jak přesunout (a přepsat) všechny soubory z jednoho adresáře do druhého?