다른 서버에서 스크립트 트리거

다른 서버에서 스크립트 트리거

다른 서버에서 4개의 다른 스크립트를 차례로 실행하는 스크립트가 있습니다. 내 스크립트는 첫 번째 스크립트가 대상 서버에서 완료될 때까지 기다린 다음 두 번째 스크립트를 트리거합니다. 아래는 코드입니다

SCB_CMD=/sc/db2home/scbinst/bin/reload_scrpt1.sh
SCB_LOG=/sc/db2home/scbinst/log/reload_scrpt1.log

echo `date` "Executing $SCB_HOST:$SCB_CMD ..." 

ssh $SCB_HOST "$SCB_CMD | tee $SCB_LOG"

RC=$?

#---------------------------------------------------------------------------
# -- Check for errors
#---------------------------------------------------------------------------
if [ $RC -ne 0 ]
then
  echo `date` "!error occurred executing SCB load script1!" 

  exit 99
fi
#---------------------------------------------------------------------------
SCB_CMD=/sc/db2home/scbinst/bin/reload_scrpt2.sh
SCB_LOG=/sc/db2home/scbinst/log/reload_scrpt2.log

#---------------------------------------------------------------------------
# -- Execute the remote load script
#---------------------------------------------------------------------------

echo `date` "Executing $SCB_HOST:$SCB_CMD ..." 

ssh $SCB_HOST "$SCB_CMD | tee $SCB_LOG"
--------------------------------------------

대상 서버에서 4개의 스크립트를 모두 병렬로 트리거하는 방법이 있습니까?

답변1

&명령이 끝나면 작업이 백그라운드로 전환됩니다.

스크립트를 다시 작성하겠습니다.

커넥터.sh

#!/usr/bin/env bash

echo `date` "Executing $1:$2"
# 1 host, 2 cmd, 3 log
ssh $1 "$2 | tee $3"

Runner.sh 스크립트 추가

#!/usr/bin/env bash
connector.sh 127.0.0.1 /sc/db2home/scbinst/bin/reload_scrpt1.sh /var/log.log &

connector.sh 127.0.0.1 /sc/db2home/scbinst/bin/reload_scrpt2.sh /var/log.log &

connector.sh 127.0.0.1 /sc/db2home/scbinst/bin/reload_scrpt3.sh /var/log.log &

답변2

작업을 병렬로 시작할 수 있습니다. 이 명령은 명령줄에서 작동하고 개별적으로 실행한다고 가정합니다 ssh. 즉, 원격 대 로컬 m/c 문제에는 문제가 없습니다.

for i in `seq 1 4`; do
   SCB_CMD=/sc/db2home/scbinst/bin/reload_scrpt${i}.sh
   SCB_LOG=/sc/db2home/scbinst/log/reload_scrpt${i}.log

   echo `date` "Launching $SCB_HOST:$SCB_CMD ..."
   ssh "$SCB_HOST" "$SCB_CMD | tee $SCB_LOG" &

   sleep 1
done

관련 정보