GNU/Linux >> Znalost Linux >  >> Linux

Zabránit zabití aktuálně spuštěné linuxové úlohy po odhlášení z SSH

Pokud je vaše úloha již spuštěna, je příliš pozdě* zvážit alternativní řešení, která vloží další vrstvu mezi vaše ssh session a shell spouštějící příkaz, například screen , tmux , byobu , nohup a lajky.

Pokud má být podpora vašeho procesu umístěna na pozadí a zejména nevisí při stdout a stderr jsou nezapisovatelné/uzavřené, můžete je před odhlášením umístit na pozadí pomocí Control Z a bg pak jej oddělte od vašeho shellu pomocí disown vestavěný.

např.:

$ ssh localhost
You have new mail.
Last login: Fri Jun  6 11:26:56 2014

$ /bin/sleep 3600    


^Z[1] + Stopped                  /bin/sleep 3600
$ bg
[1] /bin/sleep 3600&
$ jobs
[1] +  Running                 /bin/sleep 3600
$ disown %1
$ exit
Connection to localhost closed.
$ ps -ef|grep sleep
jlliagre 12864     1  0 21:12 ?        00:00:00 /bin/sleep 3600
jlliagre 13056 12477  0 21:13 pts/18   00:00:00 grep sleep
$ 

* Jak Bob poznamenal, ve skutečnosti existuje několik hackerských způsobů, jak znovu vytvořit relaci tty pod Linuxem. repty, retty, injcode a neercs. Nejpokročilejší vypadá jako reptyr, ale možná budete potřebovat práva root, abyste umožnili ptrace hacknout váš proces.


Jedním z řešení je použití obrazovky GNU. Můžete spustit screen , spusťte příkaz a poté odpojte pomocí C-a d . Později se pro opětovné připojení proveďte screen -r a jste zpět v předchozí relaci.

Dalšími výhodami obrazovky je správa oken (takže můžete přepínat na jiné shelly, když je váš příkaz spuštěn, aniž byste potřebovali nové připojení SSH), a umožňuje vašemu příkazu zůstat v popředí, ať už v aktuální relaci nebo později.

Upravit: Jak je uvedeno v komentářích, bude to fungovat, pouze pokud si nezapomenete spustit screen před spuštěním příkazu. Pokud je příkaz již spuštěn, budete potřebovat řešení @jlliagre.


Linux
  1. Naplánujte si úlohu pomocí příkazu Linux at

  2. Jak najít aktivní připojení SSH v systému Linux

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

  1. Jak na SSH na Linuxu z Androidu

  2. Zabránit spuštění Tmux na Ssh?

  3. linux spustit příkaz vzdáleně

  1. Příkaz SCP Linux – Jak přenášet soubory SSH ze vzdáleného do místního

  2. Spuštění linuxového příkazu z pythonu

  3. Příkaz Linuxu, který čeká na spuštění serveru SSH