2010-04-16 4 views

답변

2

당신이하려는 일은 많은 원격 명령을 끄는 것 뿐이라면 perl을 사용할 수 있습니다. ssh 명령을 "열어"결과를 다시 perl로 파이프 할 수 있습니다. (암호없이 액세스 할 수 있도록 키를 설정해야합니다.)

open (REMOTE, "ssh [email protected] \"myScript\"|"); 
while (<REMOTE>) 
{ 
    print $_; 
} 

기계 이름을 사용하여 루프를 만들고 싶지 않을 것입니다. 그 후에 파일 핸들을 논 블로킹 (non-blocking) 읽기 만하면 데이터를 사용할 수있게 되 돌린다.

1

parallel은 중앙 노드에 설치할 수 있으며 여러 컴퓨터에서 명령을 실행하는 데 사용할 수 있습니다.

아래 예제에서는 원격 호스트에서 명령을 실행하기 위해 여러 개의 ssh 연결이 사용됩니다. (-j는 중앙 노드에서 동시에 실행할 작업 수입니다). 그런 다음 결과를 "축소"단계를 수행하는 명령으로 파이프 할 수 있습니다. (이 예제에서는 uniq와 정렬).

병렬 -j 50 SSH {} "LS":::이 host1 host2의 hostn | 정렬 |

이 예는 "열쇠 SSH 로그인을"가정 -c UNIQ는 중앙 노드 클러스터에있는 모든 기계 사이에 설정되었습니다.

원격으로 "ls"인 복잡한 명령을 실행할 때 문자를 올바르게 이스케이프 처리하는 것이 힘들 수 있습니다. 가끔 이스케이프 문자를 이스케이프 처리해야합니다. bashreduce이라고 말하면 간단해질 수 있습니다.