

シェルスクリプトAで別のシェルスクリプトB,Cを違うディレクトリ上で同時に動かしたいです。シェルスクリプトB,C内には同じプログラム群を実行する内容が記述されています。

[code]

    mkdir test1
    cd test1
    sh B.sh &
    cd ..
    
    mkdir test2
    cd test2
    sh C.sh &
    cd ..
    
[/code]

のようにシェルスクリプトAに記述し実行すると、シェルスクリプトB内に記述されてたプログラム群が実行されますが、それが終了するまでシェルスクリプトCの内容が動きません。

test1 と test2 上で同時に動かすことで時間を短縮することが目的なのですが、有効な方法などをご教授いただきたいです。


CC BY-SA 4.0
2020-09-01T18:03:47.983
70058
2020-09-02T04:15:37.103
2020-09-02T04:15:37.103
3060
40283
question
shellscript
シェルスクリプトから複数プロセスをバックグラウンドで実行させたい


`sh B.sh &` と `sh C.sh &` をしているのでこれらはバックグラウンドで同時に動きます。もし C.sh
の実行がブロックされているのであれば、C.sh の内容に問題がありそうです。

B.sh と C.sh
では同じプログラムを実行しているとのことですが、その実行しているプログラムが同時起動を許していなかったり、他にも何かしら他方をロックする形になっていたりしませんか？


CC BY-SA 4.0
2020-09-02T00:08:33.350
70061
2020-09-02T00:08:33.350
19110
70058
answer


子プロセスを含めて、`sh A.sh`のシステムコールトレースを取れば、どこで時間がかかっているのか分かるかもしれません。  
※ macの環境がないので、実際に動かしたわけではありません。

[code]

    dtruss -e -f sh A.sh
    
[/code]


CC BY-SA 4.0
2020-09-02T02:10:54.660
70068
2020-09-02T02:10:54.660
35558
70058
answer