bash 스크립트에서는 긴 명령의 표준 출력을 한 줄씩 캡처하여 초기 명령이 계속 실행되는 동안 분석하고보고 할 수 있습니다. 이것이 내가 상상할 수있는 복잡한 방법입니다.
# Start long command in a separated process and redirect stdout to temp file
longcommand > /tmp/tmp$$.out &
#loop until process completes
ps cax | grep longcommand > /dev/null
while [ $? -eq 0 ]
do
#capture the last lines in temp file and determine if there is new content to analyse
tail /tmp/tmp$$.out
# ...
sleep 1 s # sleep in order not to clog cpu
ps cax | grep longcommand > /dev/null
done
더 간단한 방법이 있는지 알고 싶습니다.
편집하다:
내 질문을 명확히하기 위해 이것을 추가 할 것입니다. longcommand
초당 한 번 라인으로 표시 상태 라인. longcommand
완료 되기 전에 출력을 잡고 싶습니다 .
이렇게하면 longcommand
예상 한 결과를 제공하지 않으면 잠재적으로를 죽일 수 있습니다 .
나는 시도했다 :
longcommand |
while IFS= read -r line
do
whatever "$line"
done
그러나 whatever
(예 echo
:)는 longcommand
완료 후에 만 실행 됩니다.