Mam scp
transfer (z jednego zdalnego serwera na inny), który jest dość duży.
Więc może chcę zamknąć komputer, z którego wykonałem to polecenie, czy to zakończy transfer? Mam ssh
dostęp do powłoki za pomocą programu Bitwise.
Istnieje wiele rozwiązań.
scp
transfer jak zwykle.bg
).disown
).exit
), a proces będzie kontynuowany na zdalnym komputerze.Wadą tego podejścia jest to, że deskryptory plików dla stdout i stderr nadal będą zawierać odniesienia do tty sesji ssh. Z tego powodu terminal może się zawiesić podczas próby wyjścia. Możesz obejść ten problem, pisząc, ~.
aby wymusić zamknięcie klienta ssh (sekwencja ucieczki musi podążać za nową linią ... zobacz także ~?
). Jeśli proces, który porzucasz, zapisuje na standardowe lub standardowe, proces może zakończyć się przedwcześnie, jeśli bufor tty się przepełni.
Za pomocą GNU Screen można utworzyć zdalną sesję terminala, którą można odłączyć i kontynuować na serwerze po wylogowaniu z sesji. Możesz później zalogować się ponownie na serwerze i ponownie dołączyć do sesji.
screen -D -R <session_name>
.scp
transfer jak zwykle.exit
)Aby ponownie dołączyć do sesji:
screen -D -R <session_name>
Zobacz odpowiedź za pomocą nohup
.
To najlepsze rozwiązanie, jeśli jest to okresowe zadanie, które chcesz zautomatyzować.
-D -R
flagi na początkuscreen
. Przeczytałem stronę podręcznika i nie pomogło mi to zrozumieć:-D -R Attach here and now. ...
screen -r <session>
zrobiło ... więc-DR
różni się to tylko-r
tym, że może je wyrzucić? Nie tylko podłącz ponownie i nie powiedzie się, jeśli jest na nim inny użytkownik.Można użyć
nohup(1)
, czyli zrobić coś takiego:Spowoduje to utworzenie wyniku
nohup.out
. Następnie możesz bezpiecznie się wylogować.źródło
&
końcu zrobiła to dla mnie różnica! Dzięki!Tak, zostanie zakończone. Rozwiązaniem umożliwiającym utrzymanie sesji terminalu przy życiu bez łączności jest
screen
program:źródło
Jak wspomniano powyżej, możesz użyć polecenia screen, na przykład:
user@server:~$ screen -S bigscptransfer
ser@server:~$ scp bigfile.dat server2:.
[detached from 5899.bigscptransfer]
user@server:~$ screen -r bigscptransfer
źródło
nohup scp shinto @ źródło: / home / data [email protected]: / var / tmp / file
zatrzymaj tymczasowo polecenie za pomocą
umieść w tle polecenie, wpisz:
możesz sprawdzić proces za pomocą:
źródło