동시 컬 실행을 시도했지만 "호스트를 확인할 수 없습니다"라고 쉽게 보고됩니다. 컬을 병렬로 실행하려면 "병렬"을 사용합니다.
parallel :::: ./a.sh ./a.sh
from api server
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 16 0 16 0 0 13781 0 --:--:-- --:--:-- --:--:-- 16000
from api server
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 16 0 16 0 0 14925 0 --:--:-- --:--:-- --:--:-- 16000
from api server
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 16 0 16 0 0 15009 0 --:--:-- --:--:-- --:--:-- 16000
from api server
from api server
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 16 0 16 0 0 14324 0 --:--:-- --:--:-- --:--:-- 16000
curl: (6) Could not resolve host: curl
100 16 0 16 0 0 44198 0 --:--:-- --:--:-- --:--:-- 44198
금연 건강 증진 협회
#!/bin/bash
curl http://127.0.0.1:81/a.php
a.php
<?php
echo "from some server\n";
4개의 동시 컬만으로 호스트가 실패하는 문제를 해결하는 방법은 무엇입니까? 내가 겪은 원래 문제가 다음에 설명되어 있기 때문에 이것을 시뮬레이션하고 있습니다.동시 요청을 할 때 phpcurl localhost가 느려집니다. 동시 컬이 4개만 있기 때문에 이것이 열린 파일 제한 문제라고 생각하지 않습니다. 왜 이런 일이 발생하는지 설명할 수 있는 사람이 있나요? 참고로 운영체제는 우분투 16.04 입니다.
Rudy Meier는 병렬성을 사용하는 올바른 방법을 제안했습니다. 사용 후에는 yes | head -n4 | parallel ./a.sh
문제가 더 이상 존재하지 않습니다. 그래도 내 원래 문제는 남아 있습니다.
답변1
--dryrun
GNU Parallel이 실행 중인 것이 무엇인지 혼란스러우면 다음을 사용해 보세요.
$ parallel --dryrun :::: ./a.sh ./a.sh
#!/bin/bash #!/bin/bash
#!/bin/bash
#!/bin/bash curl http://127.0.0.1:81/a.php
#!/bin/bash
curl http://127.0.0.1:81/a.php
curl http://127.0.0.1:81/a.php #!/bin/bash
curl http://127.0.0.1:81/a.php
curl http://127.0.0.1:81/a.php curl http://127.0.0.1:81/a.php
이것은 분명히 당신이 원하는 것이 아닙니다. 그래서 무슨 일이 일어났나요?
출력을 분석하면 첫 번째 파일의 모든 줄이 두 번째 파일의 모든 줄과 결합되는 것을 볼 수 있습니다. 더 명확하게:
file-b:
1
2
3
$ parallel --dryrun :::: b b
1 1
1 2
1 3
2 1
2 2
2 3
3 1
3 2
3 3
실수는 GNU를 병렬화하는 것 입니다 ::::
.::::
읽다파일의 내용이 매개변수로 사용됩니다. 2개의 파일을 제공했으므로 해당 파일의 교차곱이 생성됩니다.
당신이 원하는 것은 :::
:
$ parallel --dryrun ::: ./a.sh ./a.sh
./a.sh
./a.sh
답변2
사용법 parallel
이 잘못되었습니다.
어떻게든 네 번째 실행이 실행됩니다.
curl http://127.0.0.1:81/a.php curl http://127.0.0.1:81/a.php
구문을 완전히 이해하지는 못하지만 다음과 같이 작동합니다.
yes | head -n4 | parallel ./a.sh
매뉴얼 페이지 설명
작업은 단일 명령일 수도 있고 입력의 각 줄에 대해 실행되어야 하는 작은 스크립트일 수도 있습니다.