GNU/Linux >> Znalost Linux >  >> Linux

Ssh – Jak zrušit běžící proces a přiřadit jej k novému prostředí obrazovky?

Mám spuštěný program na SSH shellu. Chci jej pozastavit a mít možnost zrušit pozastavení jeho provádění, až se vrátím.

Jedním ze způsobů, jak to udělat, bylo převést jeho vlastnictví na shell obrazovky, a tak jej tam nechat běžet.

Existuje jiný způsob, jak postupovat?

Přijatá odpověď:

„Vlastnictví“ programu můžete z prostředí shellu zrušit pomocí disown vestavěný:

# press Ctrl+Z to suspend the program
bg
disown

To však pouze říká shellu, aby neodesílal SIGHUP signál do programu, když shell opustí. Program si zachová veškeré spojení, které má s terminálem, obvykle jako standardní vstupní, výstupní a chybové proudy. Neexistuje způsob, jak je znovu připojit k jinému terminálu. (Screen funguje tak, že emuluje terminál pro každé okno, takže programy jsou připojeny k oknu obrazovky.)

Je možné znovu připojit deskriptory souboru k jinému souboru připojením programu v debuggeru (tj. pomocí ptrace ) a zavolání open , dup a close . Existuje několik nástrojů, které to umožňují; je to složitý proces a někdy místo toho proces zhroutí. Možnosti zahrnují (odkazy shromážděné z odpovědí na Jak mohu zrušit běžící proces a přiřadit jej k novému prostředí obrazovky? a Mohu nohup/obrazovat již spuštěný proces?):

  • chytit (a ambicióznější kryopid)
  • neercs
  • přesměrování
  • reptyr
  • retty

Linux
  1. Jak vypsat spuštěné relace obrazovky?

  2. Jak poznám, že mám spuštěný vnořený shell?

  3. EC2 ssh zlomené potrubí ukončí běžící proces

  1. Jak programovat s Bash:Syntaxe a nástroje

  2. Jak odpojit relaci ssh bez zabití běžícího procesu?

  3. Jak získat pid procesu a vyvolat na něj kill -9 ve skriptu shellu?

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

  2. Jak povolit SFTP a zakázat SSH?

  3. Jak restartovat (nebo resetovat) běžící proces v Linuxu?