ファイルからループを読み取るときに複数のスレッドを実行する

ファイルからループを読み取るときに複数のスレッドを実行する

スレッドを使用しないbashスクリプトを作成しました。私はあなたの助けを借りてそれを実現したいと思います。

実行中とは、Threadripper 3990X多くのスレッドを実行できることを意味します。

今私のbashスクリプトは次のようになります。

#!/bin/bash
#!/usr/bin/env python3

while true; do # Start
while read -r line; do  # 1
python3 script1.py -d $line --output file.txt # 2
done < domain && while read -r line; do  # 3
./script2 -d $line # 4
done < domain && while read -r line; do # 5
go run main.go -d $line -o file2.txt # 6
done < domain && mv *.txt /mnt/c/savehere && # 7
dos2unix savehere/*.txt && sort savehere/*.txt | uniq | tr -d '<>,' > results-$(date +%d-%m-%Y_%H_%p).txt && python3 discord-notify.py # 8
done # End

domainファイルには500-1500ドメインのリストが含まれており、bash, python, golangスクリプトに1行ずつ渡されます。完了したら、.txtファイルを"root"フォルダに出力し、フォルダ/mnt/c/savehereに移動して1つの.txtファイルにマージします。完了すると、自動的にフッ化を知らせ、自動的に通知します。 Bash スクリプトを再起動します。

実際にはそれほど遅くはありませんが、強力なCPUを実行しているので、このスクリプトをより速く実行し、多くの時間を節約する方法があるかもしれません。

ベストアンサー1

適切なインデントは実際には明確さを高めることができます。変数を引用することを忘れないでください。

while true; do
    while IFS= read -r line; do 
        python3 script1.py -d "$line" --output file.txt
    done < domain && 
    while IFS= read -r line; do 
        ./script2 -d "$line"
    done < domain && 
    while IFS= read -r line; do
        go run main.go -d "$line" -o file2.txt
    done < domain && 
    mv *.txt /mnt/c/savehere &&
    dos2unix savehere/*.txt && 
    sort savehere/*.txt | uniq | tr -d '<>,' > results-$(date +%d-%m-%Y_%H_%p).txt && 
    python3 discord-notify.py
done

xargs読みながらシェルループのように動作し、おそらくはるかに高速です。

while true; do
    xargs -d '\n' -I LINE python3 script1.py -d LINE --output file.txt < domain &&
    xargs -d '\n' -I LINE ./script2 -d LINE                            < domain && 
    xargs -d '\n' -I LINE go run main.go -d LINE -o file2.txt          < domain && 
    mv *.txt /mnt/c/savehere                                                    &&
    dos2unix savehere/*.txt                                                     && 
    sort savehere/*.txt | uniq | tr -d '<>,' > results-$(date +%d-%m-%Y_%H_%p).txt && 
    python3 discord-notify.py
done

おすすめ記事