単一のシェルスクリプトから複数のシェルスクリプトを起動する効率的な方法

単一のシェルスクリプトから複数のシェルスクリプトを起動する効率的な方法

これが私のコードの外観です

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.shwhile。すべてのスクリプトを起動したい

この問題をどのように解決できますか?注:将来の計画機能には、単一のスクリプト実行が含まれます。

./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

私が見つけた監督本当に素敵ですね。簡単なスタート、簡単な構成、簡単な管理!確認してみてくださいブログ使用方法と設定方法を学びます:-)

関連情報