incrond
들어오는 파일을 모니터링 하는 데 사용하는 디렉터리입니다. 각 파일이 디렉터리에 도달한 후 이를 처리하기 위해 Python 스크립트가 호출됩니다.
파일이 처리할 수 있는 것보다 빨리 들어오면 문제가 발생합니다. 이 경우 시스템이 과부하되어 결과를 예측할 수 없게 됩니다.
incrond
시작할 수 있는 최대 프로세스 수를 설정하는 방법이 있습니까? 제어된 방식으로 파일이 처리될 수 있도록 다른 도구를 사용하여 파일 처리를 대기열에 넣을 수 있습니까?
답변1
incrond
예를 들어 CPU 또는 메모리 수로 인해 병렬로 실행하는 것이 합리적인 수준을 초과하는 처리 프로세스를 시작해서는 안 됩니다 . 아래에 언급된 숫자 N이 바로 이것이다.
처리 프로세스는 "in" 디렉터리에 있는 파일에 의해서만 시작될 수 있으며 incrond
아무것도 남지 않을 때까지 "in" 디렉터리에 있는 파일을 계속 처리합니다. 여러 프로세스가 실행 중인 경우 두 프로세스가 동일한 작업을 처리하지 않도록 일부 조정이 필요합니다.
Python 스크립트를 인수로 파일을 사용해서만 실행할 수 있는 경우 incrond
처리할 새 파일이 있는 한 원래 Python 스크립트를 계속 생성하는 래퍼 스크립트를 시작하십시오. 그렇지 않으면 파일이 존재하게 됩니다. icrond
이 래퍼 스크립트는 동시에 실행 중인 N개 미만이 있는 경우 시작됩니다. 래퍼 스크립트는 파일 수신 속도가 높은 한 계속해서 처리하지만 너무 많은 병렬 스크립트를 실행하여 아무것도 놓치지 않거나 시스템 속도를 불필요하게 저하시키지 않습니다. 수신 속도가 처리 속도 아래로 떨어지면 여전히 처리해야 하는 파일 수가 결국 0으로 줄어들고 모든 래퍼 스크립트가 종료됩니다.
방금 도착한 파일과 처리된 파일을 쉽게 구별할 수 없는 경우, incrond
할일 파일이 처리되는 디렉터리에 일부 할일 작업 파일을 작성할 수 있습니다.
답변2
작업 스풀러를 사용하여 Python 스크립트 명령을 보내면 대기열에 추가되어 순서대로 처리됩니다. https://www.ostechnix.com/add-linux-commands-queue-execute-one-one/