각 파일 루프가 병렬로 발생합니까?

각 파일 루프가 병렬로 발생합니까?

일부 로그 파일을 지속적으로 모니터링하고 싶습니다. tail -Ffor를 전환하면 아래에 있는 내용이 작동합니다 cat $log_file. 첫 번째 로그 파일을 사용하면 -tail -F작동하지만 프로세스가 완료되지 않아 상단 while루프가 차단됩니다.

while read log_file각 로그 파일에 대해 외부에서 하나의 프로세스가 시작 되도록 각 프로세스를 백그라운드에서 실행하려면 어떻게 해야 합니까 ?(또한 &여기저기서 내부 while 루프의 배경을 추가해 보았습니다)

ls /var/log/myApp-*.log | while read log_file ; do
  tail -F $log_file while read log ; do
    echo send $log to external tracker for $log_file if X
  done
done

답변1

이 솔루션은 awktail의 출력을 구문 분석하고 system()이벤트가 감지되면 명령을 호출합니다.

또는 구문 분석된 출력을 피하고 ls대신 globbing을 사용할 수도 있습니다.

for log_file in /var/log/myApp-*.log; do 
    tail -F $log_file | awk '{l=gensub(/.+\"level\": ([0-9]+).+/,"\\1","g",$0); if(l>50 && l!= $0){system("echo command")}}' &
done

관련 정보