쉘을 닫을 때`scp` 전송이 닫히나요? 서버에서 다른 서버로) 전송, 그것은 매우 큽니다. 따라서이

내가 가진 scp(하나의 원격 서버에서 다른 서버로) 전송, 그것은 매우 큽니다.

따라서이 명령을 실행 한 컴퓨터를 닫으십시오. 전송이 종료됩니까? sshBitwise 프로그램을 사용하여 쉘에 액세스 할 수 있습니다.



답변

여러 가지 솔루션이 있습니다.

프로세스 배경 및 폐기

  1. ssh 터미널을 원격 서버로 엽니 다.
  2. scp평소와 같이 전송을 시작하십시오 .
  3. scp 프로세스의 배경을 지정하십시오 ( Ctrl+ Z, 명령) bg.
  4. 백그라운드 프로세스를 제거하십시오 ( disown).
  5. 세션을 종료하면 ( exit) 원격 시스템에서 프로세스가 계속 실행됩니다.

이 방법의 한 가지 단점은 stdout 및 stderr의 파일 디스크립터에 여전히 ssh 세션의 tty에 대한 참조가 포함된다는 것입니다. 이로 인해 종료하려고하면 터미널이 정지 될 수 있습니다. ~.ssh 클라이언트를 강제로 닫으려면 입력하여이 문제를 해결할 수 있습니다. 이스케이프 시퀀스는 새 줄을 따라야합니다 (참조 ~?). 포기하고있는 프로세스가 stdout 또는 stderr에 쓰는 경우 tty 버퍼가 넘치면 프로세스가 조기에 종료 될 수 있습니다.

스크린 세션 생성 및 분리

GNU Screen 을 사용하면 원격 터미널 세션을 만들 수 있으며 세션에서 로그 아웃 한 후 서버에서 분리하여 계속 실행할 수 있습니다. 그런 다음 나중에 서버에 다시 로그인하여 세션에 다시 연결할 수 있습니다.

  1. ssh를 통해 원격 서버에 로그인하십시오.
  2. 스크린 세션을 시작하십시오 screen -D -R <session_name>.
  3. scp평소와 같이 전송을 시작하십시오 .
  4. Ctrl+ A를 사용 하여 화면 세션을 분리하십시오 d.
  5. ssh 세션 종료 ( exit)

세션에 다시 연결하려면 다음을 수행하십시오.

  1. ssh를 통해 원격 서버에 로그인하십시오.
  2. 스크린 세션에 다시 연결하십시오. screen -D -R <session_name>

끊지 않고 명령 실행

를 사용하여 답변을 참조하십시오 nohup.

작업 스케줄러 사용

자동화하려는 정기적 인 작업 인 경우이 방법이 가장 좋습니다.

사용 crontab, at또는 batch전송을 예약합니다.


답변

를 사용할 수 있습니다 nohup(1). 즉, 다음과 같은 작업을 수행 할 수 있습니다.

nohup scp alice@source:/the/answer/of/all bob@target.example.com:/var/tmp/42 &

의 출력이 생성됩니다 nohup.out. 그러면 안전하게 로그 아웃 할 수 있습니다.


답변

예, 종료됩니다. 연결없이 터미널 세션을 유지하는 솔루션은 다음과 screen같습니다.

SCREEN(1)                                                            SCREEN(1)

NAME
       screen - screen manager with VT100/ANSI terminal emulation

SYNOPSIS
       screen [ -options ] [ cmd [ args ] ]
       screen -r [[pid.]tty[.host]]
       screen -r sessionowner/[[pid.]tty[.host]]

DESCRIPTION
       Screen is a full-screen window manager that multiplexes a physical ter‐
       minal between several processes (typically interactive  shells).   Each
       virtual terminal provides the functions of a DEC VT100 terminal and, in
       addition, several control functions from the ISO 6429  (ECMA  48,  ANSI
       X3.64)  and ISO 2022 standards (e.g. insert/delete line and support for
       multiple character sets).  There is a  scrollback  history  buffer  for
       each virtual terminal and a copy-and-paste mechanism that allows moving
       text regions between windows.

답변

위에서 말한 것처럼 screen 명령을 사용할 수 있습니다.

  • 화면 만들기

user@server:~$ screen -S bigscptransfer

  • 당신은 지금 화면에 있습니다

ser@server:~$ scp bigfile.dat server2:.

  • CTRL+ A를 사용하여 화면에서 분리 한 다음D

[detached from 5899.bigscptransfer]

  • 필요한 경우 세션을 재개하십시오.

user@server:~$ screen -r bigscptransfer


답변

nohup scp shinto @ source : / home / data roose@target.example.com : / var / tmp / file

명령을 일시적으로 중지

CTRL + Z

명령을 배경에 넣고 다음을 입력하십시오.

bg

요 프로세스를 확인할 수 있습니다 :

직업