it-swarm-eu.dev

Jak obnovit Shell po odpojení

Dělám nějakou práci na vzdáleném počítači CentOS 5.6 a moje síť neustále klesá. Existuje způsob, jak mohu obnovit své zavěšené relace po opětovném připojení?

ÚPRAVA: Dělám nějakou aktualizaci a instalaci s Yum a mám strach, že by to mohl být problém, pokud procesy zůstanou viset uprostřed toho, co dělají.

44
sergio

Neexistuje způsob, jak tomu zabránit, ráda používám tmux. Začnu tmux, zahájím operaci a jdu na cestě. Pokud se vrátím a zjistím, že připojení bylo přerušeno, vše, co musím udělat, je znovu připojit a napsat tmux attach.

Zde je příklad.

$ tmux
$ make <something big>
......
Connection fails for some reason
Reconect

$ tmux ls
0: 1 windows (created Tue Aug 23 12:39:52 2011) [103x30]

$ tmux attach -t 0
Back in the tmux sesion
69
cnicutar

Doporučení pro tmux i obrazovku jsou dobrými doporučeními. Naznačují odpověď na vaši otázku, ale ve skutečnosti ji neuvádějí. Odpověď na otázku zní: neexistuje způsob. Pokud se přihlásíte přes ssh, Shell je ukončen, jakmile spojení poklesne. Řešením je přihlášení a okamžité spuštění virtuálního terminálu nějakého druhu (například tmux). Když spojení klesne, Shell, ve kterém se právě nacházíte, je ukončen, ale můžete otevřít nový Shell a znovu se připojit k virtuálnímu terminálu (to je spuštěné prostředí, ve kterém skutečně pracujete).

37
William Pursell

Jak řekl William, krátká odpověď zní ne, neexistuje způsob. Abyste tomu zabránili, mohli byste před ztrátou připojení použít příkaz obrazovky

8
Nicholas Smith

Někdo přidal reptyra spíše do odpovědi než do odpovědi, takže to nemohu upvote, ale zdá se, že je to dobrá odpověď na upravenou otázku a výborně pracoval na CentOS.

viz: https://github.com/nelhage/reptyrhttps://www.ostechnix.com/reptyr-move-running-process-new-terminal/

Existuje způsob, jak mohu obnovit své zavěšené relace po opětovném připojení?

ÚPRAVA: Dělám nějakou aktualizaci a instalaci s Yum a mám strach, že by to mohl být problém, pokud procesy zůstanou viset uprostřed toho, co dělají.

Stejně tak jsem ztratil vzdálené připojení k relaci aktualizace yum. Takže jsem prohledal a našel tuto otázku ... pak se znovu připojil a použil obrazovku tentokrát:

  1. znovu připojit ssh
  2. obrazovka
  3. nainstalujte reptyr podle výše uvedených odkazů
  4. ps -a | grep yum
  5. reptyr psid

a tam jsem na zotaveném Prompt, který yum dával o pár hodin dříve.

Technicky jsou odpovědi správné, nejedná se o zotavení zavěšené relace, jde o reparentaci osiřelého procesu k aktuální relaci. A velmi užitečné je také ...

3
ingleno

Ne, po odpojení nemůžete obnovit Shell. Místo toho můžete zajistit, že spuštěný příkaz bude po odpojení nadále spuštěn.

Chcete-li toho dosáhnout, použijte příkazy „Nohup“ a „disown“, což jsou obvykle vestavěné příkazy na většině prostředí, tj. Nemusíte nic instalovat. To však funguje pouze pro neinteraktivní příkazy.

Kroky by tedy byly následující:

  1. Přihlášení k serveru
  2. Spusťte příkaz: „Nohup Sudo yum update &“ (také zaznamená veškerý výstup do souboru Nohup.out v aktuálním adresáři)
  3. Spustit „disown% 1“
  4. Neváhejte se v tomto bodě odpojit nebo počkejte, až bude odpojen :)

Když se vrátíte na server, jednoduše „tail Nohup.out“ uvidíte, jak příkaz funguje.

3
zygis

Jak mnoho lidí navrhlo screen a tmux, oba podporují základní funkčnost, ale mají zřetelné specifické funkce, takže nelze říci, že jeden je ve všech případech lepší než druhý. Například pouze podpora tmux Rozdělení okna , zatímco pouze GNU obrazovka se může přepínat dlouhé řádky s (Ctrl + ar). Viz podrobnější srovnání zde .

Existují také nástroje speciálně pro řešení tohoto problému ssh:

Autossh je program, který spouští kopii ssh a monitoruje ji, podle potřeby restartuje, pokud zemře nebo přestane předávat provoz. Myšlenka je od rstunnel.

Mosh je aplikace vzdáleného terminálu, která umožňuje roaming, podporuje občasné připojení a poskytuje inteligentní lokální echo a linkovou editaci uživatelských úhozů. Mosh je náhradou za SSH. Je robustnější a citlivější, zejména prostřednictvím Wi-Fi, celulárních a dálkových spojení.

1