단일 쉘 스크립트에서 여러 쉘 스크립트를 시작하는 효율적인 방법

단일 쉘 스크립트에서 여러 쉘 스크립트를 시작하는 효율적인 방법

이것이 내 코드의 모습입니다

master_script.sh

#!/bin/bash
chmod +x *
declare -A test=(
    ["echo1"]="sh `pwd`/echo1.sh"
    ["echo2"]="sh `pwd`/echo2.sh"
    ["echo3"]="sh `pwd`/echo3.sh")

log="$base_path"
for var in ${!test[@]}
do
    `${test[$var]} >> $var.log`
    echo "$var Started! :-)"
done

echoX.sh스크립트는 다음과 같습니다

#!/bin/bash
while true;do
    echo "This is from Test1"
    #some Code
    echo "Eching the Output"
    #some other code!
    sleep 60
done

아이디어는 훌륭하지만 아시다시피 컨트롤이 기다리고 있습니다 ${test[$var]} >> $var.log. 각각은 루프이므로 제어가 완료되기를 기다리고 있습니다 echoX.sh! while. 모든 스크립트를 시작하고 싶습니다

이 문제를 어떻게 해결할 수 있나요? 참고: 향후 계획된 기능에는 단일 스크립트 실행이 포함됩니다.

./master_script.sh start echo1, --> echo1만 시작합니다.

./master_script.sh stop echo1---> echo1만 중지합니다.

./master_script.sh start all--> 모든 스크립트를 시작합니다

그래서 위의 절차를 따랐습니다.

같은 다른 아이디어가 있습니다. (누가 하기 싫겠어요!)

echox.sh

#!/bin/bash
echo "This is from Test1"
#some Code
echo "Eching the Output"
#some other code!

nohup_echoX.sh

#!bin/bash
while true;do
  ./echoX.sh >> test.log 2>&1 &
done

그런 다음 in 루프를 mater_script.sh추가합니다 ../nohup_echoX.shfor

그래서 이것을 달성할 수 있는 방법이 있습니까? 더 중요한 것은 ( ps aux | grep <NAME>) 동일한 프로세스의 여러 인스턴스가 실행되고 있다는 것입니다. 그렇다면 이것을 어떻게 제어할 수 있나요?

답변1

Gnu 병렬쉘 스크립트에서 여러 프로세스를 병렬로 실행하고 완료될 때까지 기다릴 수 있습니다.

답변2

줄 바꾸기

`${test[$var]} >> $var.log`

도착하다

"${test[$var]}" >> "$var.log" &

답변3

내가 찾은감독정말 멋지네요. 손쉬운 시작, 손쉬운 구성, 손쉬운 관리! 확인 해봐블로그사용 및 구성 방법을 알아보세요 :-)

관련 정보