2012-05-29 7 views
2
나는 다음과 같은 명령을 사용하여 원격 호스트에 폴더를 생성하는 콘 (88) 쉘 스크립트가

는 : 폐쇄하지 ssh를

ssh [email protected]$host "mkdir -p $somedir" 2>> $Log 

그 후

scp -o keepalive=yes $somedir/$file [email protected]$host:$somedir 
를 사용하여 루프에서 파일들을 전송

스크립트가 끝난 후 첫 번째 명령이 연결을 계속 열어 둘지 궁금합니다.

+0

그렇지 않습니다. 'ps' 또는'top'을 사용하여 직접 확인할 수 있습니다. – cnicutar

+1

'man rsync' ... –

답변

3

각 명령은 자체 연결을 열고 닫습니다. 이를 확인하려면 tcpdump과 같은 도구를 사용하는 것이 쉽습니다.

이것은 프로세스를 종료하는 데 사용되는 exit() 시스템 호출이 소켓 파일 설명자를 포함하여 열려있는 파일 설명자를 모두 닫음으로써 발생합니다. 소켓을 닫으면 소켓 뒤의 연결이 닫힙니다.

+0

즉, 전송할 파일이 10 개있는 경우 10 + 1 = 11 개의 연결이 열리고 닫히고 스크립트 실행 중 ... 더 효율적인 방법이 있습니까? – Dima

+0

단일 연결에서 여러 파일을 복사하는 방법은 여러 가지가 있습니다. 하나의 좋은 대안은 [rsync] (http://linux.die.net/man/1/rsync)입니다 (William Pursell의 코멘트 참조). 또한 scp는 여러 파일을 복사 할 수 있습니다. [man scp] (http://linux.die.net/man/1/scp)를 참조하십시오. –

3

충분히 새로운 버전의 ssh는 단일 물리적 연결을 통해 여러 개의 가상 연결을 다중화 할 수 있습니다. 그래서 당신이 할 수있는 일은 연결 멀티플렉싱이 가능한 배경에서 장기간 실행되는 ssh 명령을 시작한 다음 후속 연결은 훨씬 빠른 시작 시간으로 그 연결을 재사용합니다. 연결 멀티플렉싱에 대한 정보는 ssh_config의 맨 페이지를 참조하십시오. 관련 옵션은 ControlMasterControlPath입니다.

윌리엄 퍼셀 (William Pursell)이 제안했듯이, rsync은 옵션 인 경우 더 쉽고 빠릅니다.