GNU/Linux >> Znalost Linux >  >> Linux

Provádění dlouhotrvajícího příkazu na ssh

Řešení 1:

Nejlepší způsob je použít screen (na serveru), chcete-li spustit relaci pro spuštění příkazu, a poté odpojit obrazovku, aby pokračovala v chodu a vy můžete dělat jiné věci, nebo se jen odpojit od serveru. Další možností je použít nohup v kombinaci s & takže byste měli nohup <command> &

Řešení 2:

Můžete také použít disown pokud jste proces již zahájili bez screen nebo nohup

Řešení 3:

Stávající odpovědi mohou fungovat dobře, ale potřeboval jsem něco pro BusyBox (shell a sada nástrojů pro minimální hardware, jako jsou domácí routery). Můj systém nemá screen , dtach , at , disown , nebo dokonce nohup ! Takže díky tbc0 na SO (odkaz) jsem našel tento klenot. Okamžitě se vrátí, ale proces serveru pokračuje:

ssh myserver 'sleep 100 >&- 2>&- <&- &'

Nebo, pokud je potřeba více příkazů:

ssh myserver '(echo one; sleep 100; echo two; sleep 200) >&- 2>&- <&- &'

Vysvětlení:

  • >&- - zavřete stdout rukojeť
  • 2>&- - zavřít stderr
  • <&- - zavřít stdin
  • & - dát proces na pozadí

To nepoužívá žádné externí programy a mělo by fungovat přes ksh, ash, Bourne shell, bash atd.


Linux
  1. Jak používat Linux Screen Command

  2. Jak používat příkaz „screen“ v Linuxu

  3. Jak vymazat scrollback v příkazu na obrazovce?

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

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

  3. SSH - Jak zahrnout příkaz -t do souboru ~/.ssh/config

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

  2. Ssh – Omezení uživatele Ssh/scp/sftp na adresář?

  3. Ssh způsobí, že se smyčka zastaví?