Jak mogę użyć ssh, aby uruchomić polecenie na zdalnym komputerze z systemem Unix i wyjść, zanim polecenie zostanie wykonane?

17

Jak mogę użyć ssh, aby uruchomić polecenie na komputerze z systemem Unix i wyjść, zanim polecenie zostanie wykonane?

Na przykład, jeśli piszę

ssh localhost 'sleep 60 &'

ssh wisi na moim terminalu, dopóki sen się nie skończy, nawet jeśli sen jest uruchamiany w tle.

Richard Hoskins
źródło
Prawdopodobnie chcesz &poza cytatami.
Brad Gilbert,
1
Nie, to po prostu umieszcza cały zestaw i kaboodle w tle i nie mogę wpisać swojego hasła.
Richard Hoskins,

Odpowiedzi:

19

SSH ma przełącznik -f, który działa dokładnie tak samo, jak używanie nohup na twoim kliencie, ale umożliwia, że ​​ssh prosi o hasło. Użyj tego w ten sposób:

ssh localhost -f 'command'

Ale : SSH nadal będzie działał w tle, więc jeśli zamkniesz klienta przed zakończeniem polecenia na serwerze, zostanie on przerwany. Jeśli chcesz, aby połączenie ssh zostało zamknięte po wykonaniu polecenia, możesz użyć screen po stronie serwera:

ssh localhost -f 'screen -d -m sleep 60'
Jaskółka oknówka
źródło
Jeśli wykonam 'ssh remotemachine -n' długo działające polecenie> withremoteredirects 2> & 1 </ dev / null & ', a klient się wyłączy, czy polecenie zostanie wykonane?
Richard Hoskins,
Afaik nr. I połączenia ssh zostały utracone, demon ssh powinien zakończyć wszystkie terminale „wewnątrz” ssh. Odp., Ponieważ terminal uruchomił polecenie, do którego zostaną zakończone, ponieważ proces macierzysty został zakończony. Ale warto spróbować;)
Martin
Co powiesz na „nohup” zamiast „screen” po stronie serwera?
Richard Hoskins,
@Brad Gilbert Nic? Mogę wymyślić kilka rzeczy, ale jedną wspólną cechą jest to, że ekran nie jest dostępny na wszystkich komputerach POSIX.
Richard Hoskins,
6

Użyj przekierowania nohup, stdout / stderr i uruchom polecenie w tle:

 nohup ssh localhost 'sleep 60' >/dev/null 2>/dev/null &

EDYCJA: Lub jeszcze lepiej, po prostu użyj parametru -f ssh:

ssh -f localhost 'sleep 60'
neu242
źródło
Prawdopodobnie możesz połączyć te dwa przekierowania z &>/dev/null.
Brad Gilbert
@BradGilbert Ta składnia nie jest kompatybilna z POSIX; ciężko argumentować za poświęceniem kompatybilności, aby uratować kilka postaci.
tripleee
2

Lub po zalogowaniu się przy użyciu ssh, zacznij, screenjeśli chcesz wrócić później, aby sprawdzić postęp lub wyniki.

Arjan
źródło
Możesz także użyć „tmux”, które osobiście uważam za łatwiejsze do skonfigurowania. Obie aplikacje są prawie równoważne, a każda z nich ma swoje zalety i wady.
mzuther