&
20개 이상의 하위 프로세스( 백그라운드에서 시작된 기능)를 시작하는 bash 스크립트가 있고 이미 실행 중인 하위 프로세스 수를 사용자에게 알려주는 진행률 표시기를 포함하려고 합니다.
문제는 이러한 하위 프로세스를 시작하는 데 꽤 오랜 시간이 걸린다는 것입니다(네트워크에 따라 약 20초). 성공적으로 시작된 하위 프로세스 수를 계산하는 방법이 있습니까?
bash 함수에 어떤 코드든 넣을 수 있으며 하위 프로세스가 준비되면 함수가 실행됩니다. 그런데 준비된 작업의 수를 담는 전역 변수를 늘리는 좋은 방법을 모르겠습니다.
답변1
외부 파일을 전역 변수로 사용할 수 있습니다. 여기에 예가 있습니다.
file="$(mktemp)"
f() { sleep 3; echo x; sleep 3; }
for i in {1..10} ; do
>>"$file" f &
done
switch=true
while $switch; do
sleep 1
cnt=$(wc -l "$file")
cnt="${cnt%%${file}}" #this is needed to remove the file name
#from the output of wc -l
echo "$cnt"
[ "$cnt" -ge 5 ] && switch=false
done
rm "$file"
저장 example
하고 소싱하면 다음이 제공됩니다.
$ . example
0
0
10
일단 액세스 권한을 얻으면
cnt=$(wc -l "$file")
cnt="${cnt%%${file}}"
이 코드를 진행률 표시줄로 수정하는 것은 쉽습니다.
[ "$cnt" -ge 5 ] && switch=false
상황에 맞게 영원주기 차단기를 조정하는 것을 잊지 마십시오 .