command를 사용하여 컴퓨터 목록에서 명령을 병렬로 실행할 수 있습니다 pssh
. 예를 들어 foo
여러 컴퓨터에 폴더를 만들려면 다음을 hosts.txt
실행할 수 있습니다.
pssh -h hosts.txt -l MyUserName "mkdir foo"
그러나 명령에는 더 많은 인수(예: 인증을 위해 공개 키 사용 등)가 필요하기 때문에 bar.sh
실행하려는 명령이 단순히 스크립트에 대한 인수로 제공되도록 다음 bash 스크립트를 만들려고 했습니다.
#!/bin/bash
pssh -h hosts.txt -l MyUserName "$@"
하지만 실행하면 bar.sh mkdir foo
터미널이 정지됩니다. Ctrl+C를 사용해도 터미널을 종료할 수 없습니다.
어떤 아이디어가 있나요?
답변1
나는 에 너무 익숙하지 않습니다 pssh
. GNU Parallel을 사용하는 경우 동일한 오류가 발생합니까?
#!/bin/bash
parallel -j10 --slf hosts.txt --nonall "$@"
사용자 이름을 Host.txt에 입력하세요.
myuser@host1
myuser@host2
답변2
-i(각 서버에 대한 인라인 집계 출력 및 오류)를 사용해야 합니다. 아래에서는 작동합니다.
pssh -h pssh.txt -l root -i uptime