두 개의 bash 스크립트가 동시에 실행되고 있으며 두 가지를 제외하고는 동일합니다.
다른 설정 외에도 다음 항목을 실행합니다.
ssh ${target_server} "bash -s" < ${target_script} > ${home_dir}/logs/${instance_name}.log 2> ${home_dir}/logs/${instance_name}.err &
두 스크립트의 유일한 차이점은 ${target_server}
IP 주소와 변수에 전달된 변수 입니다 ${instance_name}
.
확장 후 모습은 다음과 같습니다.
local_script1에서:
target_script="target_script1.sh"
ssh 10.1.2.3 "bash -s" < ${target_script} > /home/user/logs/script1.log 2> /home/user/logs/script1.err &
로컬 스크립트 2에서:
target_script="target_script2.sh"
ssh 10.1.2.4 "bash -s" < ${target_script} > /home/user/logs/script2.log 2> /home/user/logs/script2.err &
target_scripts는 관련 서버의 경로와 관련된 몇 가지 주요 변수를 제외하고는 동일한 두 개의 별도 bash 파일입니다.
별도의 서버에서 실행되고 있지만 설정된 변수에 일부 교차가 있을 수 있습니까?
예를 들어 들어가면 픽업이 myVar=1
되나요 ?target_script1
target_script2
또는 (제가 올바르게 생각하고 있습니까?) 각 서버가 "원격" 서버에 대한 SSH 연결을 먼저 열기 때문에 변수는 로컬 서버가 아닌 원격 서버에만 존재합니다.
답변1
아니요, 한 스크립트에 설정된 변수는 다른 스크립트에 표시되지 않습니다. 두 스크립트 모두 별도의 환경에서 실행됩니다.
예:
bash -c 'a=1; echo $a'
bash -c 'echo $a'
두 번째 전화는 bash
절대로한 번1
두 줄이 실행되는 순서나 동시에 실행되는지 여부에 관계없이 a를 출력으로 씁니다 .
1
두 번째 줄이 출력되는 유일한 시간 은 환경 변수(내보낸 쉘 변수)가 호출되는 환경에서 호출될 때입니다.a