GNU/Linux >> Znalost Linux >  >> Linux

4 způsoby, jak udržet příkaz spuštěný poté, co se odhlásíte z relace SSH

Řekněme, že vzdáleně přistupujete k jinému systému přes SSH. Chcete spustit příkaz, jehož dokončení trvá dlouho, a poté ukončit relaci SSH, ale ponechat příkaz spuštěný, i když již nejste připojeni ke vzdálenému systému. Jak to děláš? Jak možná víte, jakmile opustíte SSH, všechny běžící úlohy budou ukončeny. Začali byste práci od začátku? Nemusíš. Zde jsem uvedl 4 způsoby, jak udržet příkaz spuštěný po odhlášení z relace ssh. Čtěte dál.

Nechte příkaz spuštěný po odhlášení z relace SSH v systému Linux

Může být mnoho způsobů, jak to udělat. Zjistil jsem však, že následující metody jsou snadné a přímočaré.

Metoda 1 – Použití obrazovky

obrazovka nástroj, celoobrazovkový správce oken s emulací terminálu VT100/ANSI, vám umožňuje bezpečně se odpojit od relace SSH bez ukončení vzdálené úlohy. Bude to užitečné pro ty, kteří pracují s více vzdálenými servery. Příkaz obrazovky je předinstalován ve většině operačních systémů Linux. Pro případ, že není nainstalován, můžete jej nainstalovat pomocí správce balíčků vaší distribuce.

Na Arch Linuxu a jeho derivátech:

$ sudo pacman -S screen

Na RHEL, CentOS a dalších systémech založených na RPM:

$ sudo yum install screen

Na Debianu, Ubuntu a dalších systémech založených na DEB:

$ sudo apt-get install screen

Na SUSE/OpenSUSE:

$ sudo zypper install screen

Po instalaci obrazovky na vzdálené systémy spusťte relaci obrazovky:

$ screen

Relace obrazovky byla nyní zahájena. Nyní spusťte jakoukoli úlohu nebo úkol, který jste chtěli provést na vzdáleném systému.

Chystám se stáhnout obrázek Ubuntu 16.04:

$ wget http://mirror.waia.asn.au/ubuntu-releases/xenial/ubuntu-16.04.2-desktop-amd64.iso

Ubuntu 16.04 ISO má velikost kolem 1,5 GB. Při běžném širokopásmovém připojení bude stahování trvat téměř hodinu. Nemusíte tak dlouho čekat. Stačí nechat proces stahování spuštěný na vzdáleném systému a opustit relaci obrazovky stisknutím „Ctrl-A“ následuje “d“ . Uvidíte výstup podobný níže.

[detached from 1365.pts-0.server]

Po odpojení od relace obrazovky se můžete odhlásit ze vzdáleného systému. Vzdálená úloha bude na serveru nadále běžet.

K relaci obrazovky se můžete kdykoli znovu připojit pomocí příkazu:

$ screen -r

Uvidíte, že proces tam stále běží.

Pokud máte více než jednu relaci obrazovky, musíte zadat ID relace obrazovky, abyste ji mohli znovu připojit. Chcete-li zobrazit počet relací obrazovky, spusťte:

$ screen -ls

Ukázkový výstup by byl:

There are screens on:There are screens on: 
     1382.pts-0.server (Saturday 15 July 2017 04:39:51  IST) (Detached) 
     1365.pts-0.server (Saturday 15 July 2017 04:38:44  IST) (Detached)
2 Sockets in /var/run/screen/S-sk.

Nyní se znovu připojte k požadované relaci obrazovky, řekněte 1382 , spustit:

$ screen -r 1382

Další podrobnosti naleznete na manuálových stránkách.

$ man screen
Doporučené stažení - Zdarma Cheat Sheet:"Linux Command Line Cheat Sheet"

Metoda 2 – Použití tmux

tmux je terminálový multiplexer, který umožňuje vytvořit řadu terminálů, přistupovat k nim a ovládat je z jediné obrazovky. Relaci tmux lze odpojit od obrazovky a pokračovat v běhu na pozadí a později ji znovu připojit. Stejně jako nástroj Screen můžete také použít tmux k odpojení od relace SSH bez ukončení vzdálených úloh. Příkaz Tmux je předinstalován na většině operačních systémů Linux. Pro případ, že není nainstalován, můžete jej nainstalovat pomocí správce balíčků vaší distribuce.

Na Arch Linuxu a jeho derivátech:

$ sudo pacman -S tmux

Na RHEL, CentOS a dalších systémech založených na RPM:

$ sudo yum install tmux

Na Debianu, Ubuntu a dalších systémech založených na DEB:

$ sudo apt-get install tmux

Na SUSE/OpenSUSE:

$ sudo zypper install tmux

Po instalaci tmux spusťte relaci tmux pomocí příkazu:

$ tmux

Nyní začněte svůj úkol nebo práci. Poté se bezpečně odpojte od relace tmux, aniž byste opustili vzdálené úlohy stisknutím "CTRL-b" následuje "d" . Tím se odpojí vaše relace tmux, ale vaše práce v této relaci zůstane spuštěna na pozadí. To znamená, že všechny dálkové ovladače budou spuštěny, i když budete odpojeni od relace.

Chcete-li zobrazit seznam dostupných relací, spusťte:

$ tmux ls
0: 1 windows (created Sat Jul 15 16:51:35 2017) [134x33]
1: 1 windows (created Sat Jul 15 16:53:58 2017) [134x33]

K relaci tmux se můžete znovu připojit pomocí příslušného ID relace, jak je uvedeno níže:

$ tmux attach -t 0

Další podrobnosti naleznete na manuálových stránkách.

$ man tmux

Metoda 3 – Použití Reptyru

Co když jste na prvním místě zapomněli spustit příkazy v screen/tmux? Bez obav. Zde je Reptyr přichází na pomoc. Reptyr vám pomáhá přesouvat běžící procesy mezi ptys. O Reptyru jsme již publikovali podrobného průvodce. Podívejte se na následující odkaz.

  • Reptyr – přesunutí běžícího procesu z jednoho terminálu do druhého bez jeho uzavření

Metoda 4 – Použití nohup

nohup , znamená Ne h angup , je další nástroj příkazového řádku, který vám pomůže spouštět příkazy Linuxu i poté, co jste odpojeni od relací SSH. Protože je součástí GNU coreutils, nemusíte jej instalovat. Dodává se předinstalovaný ve všech distribucích Linuxu.

Použití je naprosto snadné. Po přihlášení do vzdáleného systému vše, co musíte udělat, je:

$ nohup <command> &

Ano, je to tak jednoduché.

Příklad:

$ nohup wget http://mirror.waia.asn.au/ubuntu-releases/xenial/ubuntu-16.04.2-desktop-amd64.iso &

Nyní můžete ukončit relaci SSH. Vzdálená úloha bude pokračovat.

Přihlaste se ke vzdálenému systému a spusťte následující pro zobrazení seznamu běžících úloh.

$ jobs -l
[1]+ 1421 Running nohup wget http://mirror.waia.asn.au/ubuntu-releases/xenial/ubuntu-16.04.2-desktop-amd64.iso &

Ve výchozím nastavení budou výstupy připojeny k 'nohup.out'. Výstupní soubor můžete samozřejmě změnit.

Zde je další příklad.

$ nohup find -size +10M > log.txt &

Výše uvedený příkaz najde soubory o velikosti větší než 10M a zapíše výstup do souboru log.txt.

Další podrobnosti naleznete na manuálových stránkách.

$ man nohup

A to je zatím vše lidi. Máte něco na mysli? Neváhejte a dejte mi vědět v sekci komentářů níže. Přijdou další dobré věci. Pokračujte v návštěvě!

Na zdraví!


Linux
  1. 5 způsobů, jak udržet vzdálené relace a procesy SSH spuštěné po odpojení

  2. 4 tipy, které vám pomohou co nejlépe využít příkaz Linux df

  3. Ssh – Ponechat procesy spuštěné po odpojení relace Ssh?

  1. Ssh – Jak vytvořit proces, který zahájím během relace Ssh, která běží po skončení relace?

  2. Příklady příkazů Nohup – Spustí příkaz, který běží i po vašem odhlášení

  3. Obnovit příkaz spuštěný ve zrušené relaci SSH

  1. Ponechat program Python i po odhlášení z relace Ssh?

  2. Jak zachovat spuštěný příkaz, který jsem začal z prostředí Shell, pokud se odhlásím z prostředí Shell?

  3. Který příkaz umožňuje zobrazit skryté soubory v SSH?