pcap 파일을 json 파일로 변환하기 위해 쉘 스크립트(및 tshark)를 사용하고 싶습니다. 새 pcap 파일이 폴더에 복사되면 tshark 명령을 실행하고 결과 json 데이터를 다른 파일에 다른 순서로 저장해야 합니다. 변환이 완료되면 pacap 파일을 즉시 삭제해야 합니다.
아이디어는 다음과 같습니다.
while(true){
wait_for_IN_folder_changed
tshark -T ek -x -r \in\in.pcap > \out\out.json
rm \in\in.pcap
}
병렬성과 처리량을 높이려면 다중 스레드 방식으로 tshark 프로세스를 시작하는 것이 가장 좋습니다. 하지만 서로 다른 스레드가 서로 방해가 될 수 있습니까?
답변1
당신은 다음을 찾고 있을 수 있습니다:https://www.gnu.org/software/parallel/man.html#예: -GNU-Parallel-as-dir-processor
예: dir 처리기로서의 GNU Parallel
사용자가 처리가 필요한 파일을 넣을 수 있는 디렉터리가 있는 경우 GNU/Linux에서 이 작업을 수행할 수 있습니다(다른 플랫폼에서 inotifywait를 호출하는 것을 알고 있는 경우 버그 보고서를 제출하세요).
inotifywait -qmre MOVED_TO -e CLOSE_WRITE --format %w%f my_dir |\ parallel -u echo
그러면 my_dir 또는 my_dir의 하위 디렉터리에 있는 모든 파일에 대해 echo 명령이 실행됩니다.
물론 -S를 사용하여 원격 시스템에 작업을 배포할 수 있습니다.
inotifywait -qmre MOVED_TO -e CLOSE_WRITE --format %w%f my_dir |\ parallel -S .. -u echo
처리할 파일이 tar 파일에 있는 경우 먼저 모든 파일을 압축 해제하는 것보다 하나의 파일을 압축 해제하고 즉시 처리하는 것이 더 빠를 수 있습니다. 위와 같이 dir 핸들러를 설정하고 dir로 추출합니다.
GNU Parallel을 dir 프로세서로 사용하는 것은 GNU Parallel을 큐 시스템/배치 관리자로 사용하는 것과 동일한 제한 사항이 있습니다.