systemd.path 단위의 DirectoryNotEmpty는 얼마나 자주 서비스를 트리거합니까?

systemd.path 단위의 DirectoryNotEmpty는 얼마나 자주 서비스를 트리거합니까?

내가 가지고 있었다면감시 장치대기줄지시어 가 포함된 DirectoryNotEmpty폴더서비스파일 처리 및 삭제대기줄. 경로 단위를 다음과 같이 시작하면대기줄10개의 파일이 포함되어 있습니다.폴더가 비워질 때까지 서비스를 트리거하시겠습니까? 그렇다면 얼마나 자주 서비스를 트리거하려고 시도합니까? (서비스가 내용을 변경하지 않으면 어떻게 되나요?대기줄? )

감사해요

답변1

지시어가 포함된 시스템 경로 단위는 DirectoryNotEmpty디렉터리에 변경 사항이 발생할 때만 해당 서비스를 트리거합니다. Systemd는 내부적으로 API를 사용하여 inotify디렉터리 변경 사항을 모니터링합니다. 실제로 시스템화됨아니요디렉터리가 비어 있는지 여부에 관계없이 타이머를 사용하여 주기적으로 서비스를 시작합니다. 이는 디렉터리가 비워질 때까지 서비스가 다시 트리거되지 않음을 의미합니다. 대신 서비스는 일반적으로 파일을 처리하고 삭제하거나 다른 디렉터리로 이동하여 디렉터리의 모든 파일을 처리해야 합니다. 예를 들어 서비스가 하나의 파일만 처리하고 그 이후 디렉터리에서 아무 일도 일어나지 않으면 서비스가 다시 호출되지 않습니다.

이 지시문에는 "DirectoryWentFromEmptyToNonEmpty"가 더 적합한 이름일 수 있습니다 DirectoryNotEmpty. 그러나 테스트 결과에 따르면 파일이 디렉터리에 추가될 때마다 서비스가 트리거되는 것으로 나타났습니다. (파일을 소비하는 프로세스에 오랜 시간이 걸리면 조정이 필요한 여러 프로세스가 병렬로 실행될 수 있기 때문에 상황이 약간 복잡해집니다.)

관련 정보