셸에 대해 각 stdout-line을 처리하려고 할 때 생성됩니다. test.sh
(긴 과정)의 결과를 얻고 싶습니다. 꼬리 -f이 여전히 실행되고piped 프로세스를 죽이는 좋은 방법?
./test.sh >tmp.txt &
PID=$!
tail -f tmp.txt | while read line; do
echo $line
ps ${PID} > /dev/null
if [ $? -ne 0 ]; then
echo "exiting.."
fi
done;
그러나 불행하게도,이, 대기 한 후 "종료"인쇄합니다 : 내 현재의 접근 방식이있다. 나는 모두 시도했다 break
과 exit
나는 이것을 FreeBSD에서 돌린다. 그래서 나는 약간의 리눅스 꼬리의 --pid=
옵션을 사용할 수 없다.
나는 ps
과 grep
을 사용하여 꼬리의 PID를 가져 와서 죽일 수 있지만 그게 나에게는 매우 못 생깁니다.
힌트가 있습니까?
첫 번째 해결 방법이 분명히 작동하므로 저는 지금 매우 어리 석습니다. 나는 쉘 스크립팅에 비교적 익숙하지 않다. 그리고 언급 한 첫 번째 해결책이 차단되지 않는다는 사실을 깨닫지 못했다. 고마워! – RobAu