GNU parallel 사용 예.

GNU parallel 사용 예

GNU parallel은 하나 이상의 컴퓨터를 사용하여 작업을 병렬로 실행하기위한 쉘 도구이다. 작업(job)은 입력의 각 행에 대해 실행할 단일 명령 또는 스크립트이다. 전형적인 입력은 파일 목록, 호스트 목록, 사용자 목록, URL 목록 또는 표 목록이다. 작업은 파이프에서 읽은 명령어일 수도 있다. GNU parallel은 입력을 분리하여 병렬로 명령을 파이프 할 수도 있다.

사용법:
parallel [options] [command [arguments]] < list_of_arguments
parallel [options] [command [arguments]] (::: arguments|:::: argfile(s))…
cat … | parallel –pipe [options] [command [arguments]]

-j n parallel 로 n 개의 작업을 수행
-k 순서를 유지
-X 문맥 치환을 가지는 복수의 인수
–colsep regexp Split input on regexp for positional replacements
{} {.} {/} {/.} {#} 문자열 대체
{3} {3.} {3/} {3/.} 문자열의 위치 대체

-S sshlogin 예: foo@server.example.com
–slf .. ~/.parallel/sshloginfile 을 sshlogins 리스트로 사용
–trc {}.bar –transfer –return {}.bar –cleanup 의 약어
–onall 모든 sshlogins에 대해 주어진 인수(argument)화 함께 명령을 실행
–nonall 모든 sshlogins에 대해 인수 없이 명령을 실행

–pipe stdin (표준입력)을 여러 작업(job)으로 분리.
–recend str –pipe의 레코드 끝 구분자
–recstart str –pipe의 레코드 시작 구분자

* ssh로 접속하여 모든 등록된 호스트의 전원 끄기
호스트는 host.txt에 아래와 같이 등록되어 있다. 아래 예에서, 비밀번호를 일일이 입력하지 않으려면, ssh-keygen으로 키파일을 생성해 등록해 놓으면 된다(참고: https://blog.boxcorea.com/wp/archives/92  에서 해당부분 참고)

$ cat host.txt
192.168.100.11
192.168.100.14
...
$ cat host.txt | parallel -k -q ssh root@{} "poweroff"

* ping 을 이용하여 대상 호스트들의 상태를 간단히 확인하기.

$ cat host.txt | parallel -k -q ping -c 1 -w 1 {}
PING 192.168.100.14 (192.168.100.14) 56(84) bytes of data.
64 bytes from 192.168.100.14: icmp_seq=1 ttl=64 time=0.211 ms

--- 192.168.100.14 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.211/0.211/0.211/0.000 ms
PING 192.168.100.15 (192.168.100.15) 56(84) bytes of data.

--- 192.168.100.15 ping statistics ---
2 packets transmitted, 0 received, 100% packet loss, time 999ms
...

참고문서 :https://www.gnu.org/software/parallel/parallel_tutorial.html#Multiple-input-sources

답글 남기기

Your email address will not be published.