GNU 병렬 출력과 결합된 /usr/bin/time이 명령 출력 이후가 아닌 이전에 결과를 생성하는 이유는 무엇입니까?

GNU 병렬 출력과 결합된 /usr/bin/time이 명령 출력 이후가 아닌 이전에 결과를 생성하는 이유는 무엇입니까?

상상하다:

$ cat libs.txt
lib.a
lib1.a

$ cat t1a.sh
f1()
{
        local lib=$1
        stdbuf -o0 printf "job for $lib started\n"
        sleep 2
        stdbuf -o0 printf "job for $lib done\n"
}
export -f f1
/usr/bin/time -f "elapsed time %e" cat libs.txt | SHELL=$(type -p bash) parallel --line-buffer --jobs 2 f1

$ bash t1a.sh
elapsed time 0.00
job for lib.a started
job for lib1.a started
job for lib.a done
job for lib1.a done

elapsed time 0.00여기 외관이 보입니다앞으로명령의 출력입니다. 왜?

elapsed time 0.00나타나게 하는 방법뒤쪽에명령의 출력?

답변1

노력하다:

cat libs.txt | SHELL=$(type -p bash) /usr/bin/time -f "elapsed time %e" parallel --line-buffer --jobs 2 f1

관련 정보