추가 읽기

추가 읽기

특정 디렉터리에 지속적으로 다운로드되는 파일을 처리하기 위해 스크립트 기반 도구를 어떻게 실행할 수 있습니까? 나는 지연을 최소화하고 싶고(~1초 정도가 적당함) 스크립트는 자체 무한 루프를 가질 수 있습니다.

나는 다음과 같은 몇 가지 방법을 알고 있습니다.

  • 내 스크립트를 사용 .bashrc하거나 호출하여 자동으로 사용자 로그인.profile
  • cron에서 스크립트를 포크하고 이미 실행 중인 경우 무시합니다.
  • 어떻게든 초기화 스크립트를 사용하세요(배포판마다 다른 것 같아요)

어떤 방법이 가장 효과적인가요?

답변1

어떻게든 초기화 스크립트를 사용하세요(배포판마다 다른 것 같아요)

물론. 다음은 System 5 rc스크립트를 전혀 포함하지 않는 체계적인 방식입니다 . 이것은 두 개의 단위입니다. 캡슐화되지 않은 비시스템 단위이기 때문에 삽입됩니다 /etc/systemd/system. 첫 번째는서비스 단위프로그램을 데몬으로 실행하는 방법을 설명합니다.

# /etc/systemd/system/example-spooler.service

[단위]
설명=/var/spool/example/에 있는 프로세스 파일
문서=http://unix.stackexchange.com/questions/203637/

[제공하다]
ExecStart=/usr/local/bin/example-spooler /var/spool/example/

이 서비스를 명시적으로 시작하거나 중지할 필요는 없습니다. 이것은경로 활성화. 이것경로 단위systemd 모니터 경로와 찾는 두 번째 단위 파일을 설명합니다.

# /etc/systemd/system/example-spooler.path

[단위]
Description=/var/spool/example/을 모니터링하고 example-spooler.service를 활성화합니다.
문서=http://unix.stackexchange.com/questions/203637/

[작은 길]
DirectoryNotEmpty=/var/spool/example/

[설치하다]
WantedBy=다중 사용자.대상

부팅 시 자동으로 시작하려면 를 실행하세요 systemctl preset example-spooler.path. 즉시 시작하려면 를 실행하세요 systemctl start example-spooler.path.

추가 읽기

  • 레나트 페틀링(2013-10-07). systemd.path. 시스템 매뉴얼 페이지. freedesktop.org.

답변2

스크립트가 Linux에서 실행되고 있다고 가정하면 다음을 사용할 수 있습니다.inotify기다려초기화 스크립트에서. 전체 다운로드 트리를 통해 재귀 검색을 수행해야 할 수도 있습니다(옵션 -r). 모니터링할 각 노드를 기억하세요.최대 1kB의 커널 메모리를 차지할 수 있습니다..

주요 이점inotify이는 비용이 많이 드는 폴링 루프를 방지하기 위한 것입니다. 모니터링되는 디렉터리 트리에서 파일 작업이 발생할 때마다 이벤트를 트리거합니다. 그렇지 않으면 CPU 리소스를 거의 소모하지 않습니다.

관련 정보