주어진 디렉토리의 내용이 변경 될 때 쉘 스크립트를 자동으로 시작하는 방법


5

일부 라이브러리를 사용하여 웹 프로젝트를 개발 중이므로 파일을 수정할 때마다 쉘 명령을 실행하여 일부 파일을 컴파일해야합니다.

이 작업은 분명히 성가 시며 처리 할 스크립트를 찾고 있습니다 (OSX에 있습니다).

주어진 디렉토리 (+ subdirs)의 내용이 변경 될 때 쉘 스크립트를 자동으로 시작하는 방법이 있습니까?


3
운영 체제에 따라 다릅니다. Linux에서는 사용 inotifywait하십시오 (예 : superuser.com/questions/181517/… ).
Gilles

답변:


5

Mac OSX에는 kqueueFSEvents 라는 두 가지 파일 시스템 알림 API가 있습니다. 프로그래밍없이 액세스 할 수있는 명령에 대해 모르겠습니다. FSEvents에 대한 파이썬 바인딩 이 있습니다 .

Mac OS X에서 실시간으로 파일 시스템 액세스보기를 참조하십시오 .

컴파일 된 파일을 사용하여 (요청 될 때 다시 컴파일이 아닌 소스 파일이 수정되었을 때 재 컴파일을 트리거, 트리거 : 당신이 뭘하려는 건지, 다른 접근 방법을 시도 할 수도 감안할 때 make아무것도 실제로 경우 컴파일되지 않도록, 소스 파일은 변경되지 않았습니다). 그러나 웹 사이트에 대한 모든 요청에 ​​대해이 작업을 수행해야하는 경우 비용이 너무 많이들 수 있습니다. 알아낼 벤치 마크.


1
FSEvents에 Python 바인딩을 사용했으며 감사합니다 ( gist.github.com/558970 ).
systempuntoout

1

kqueie 기반 의 BSD 명령 wait_on 은 MacPorts 에서 사용할 수 있으며 필요한 것을 제공합니다.

wait_on 명령을 사용하면 쉘 스크립트가 kqueue (3)에서 제공하는 기능에 액세스 할 수 있습니다. 이를 통해 스크립트는 디렉토리에 추가되는 파일, 파일에 추가 된 데이터 및 기타 여러 가지 사항을 폴링없이 감지 할 수 있습니다.

리눅스에서는 incron , INotify Cron을 사용합니다.


1

Guard- 파일을 추가, 수정 또는 삭제할 때마다 디렉토리 (파일뿐만 아니라)를보고 명령을 실행하기위한 플랫폼 간 강력한 도구입니다.

그것은 처리 대량 시청 파일 관련 문제를 문제를보고 파일 / 디렉토리 OSX 별 및 일반 모두.

또한 설정 및 실행이 간단하며 파일을 감상하기 위해 Listen 라이브러리를 사용 합니다.


0

실제로는 아니지만 가까이 갈 수 있습니다. 디렉토리의 파일이 변경되었는지 확인하고 (어딘가에서 파일과 비교하여 확인한 경우) 확인하는 스크립트를 작성할 수 있습니다.

그런 다음 10 분 마다이 스크립트를 실행하도록 cron을 설정할 수 있으므로 물건이 10 분을 넘지 않아야합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.