asciidoctor
확장명을 가진 파일 형식이 포함된 여러 하위 폴더가 있는 폴더가 있습니다 .adoc
.
파일을 변경할 때마다(자주 발생함) 다음을 실행해야 합니다.
asciidoctor -q filename.adoc
HTML 형식으로 컴파일합니다.
이 프로세스를 자동화하려고 합니다. 지금까지 나는 이것을 사용했다입력하다:
ls *.adoc | entr asciidoctor -q *.adoc
하지만 하위 폴더가 아닌 기존 폴더에서만 작동합니다. 이 변형을 시도했지만 작동하지 않습니다.
find . -name '*.adoc' | entr asciidoctor -q *.adoc
모든 하위 폴더에 대해 이 프로세스를 자동화할 수 있는 방법에 대한 아이디어가 있습니까?
답변1
변경을 시작하기 전에 다음과 같은 타임스탬프를 만드는 것이 좋습니다.
touch time.stamp.file
편집 후 다음을 통해 변경된 모든 파일을 찾을 수 있습니다.
find . -name '*.adoc' -newer time.stamp.file -exec asciidoctor -q {} +
답변2
- "*.adoc" 파일 검색
- filename.adoc가 filename.html보다 최신인지 테스트합니다.
그렇다면 asciidoctor를 실행하세요.
find . -name '*.adoc' | while read FILE; do [ "${FILE}" -nt "${FILE%adoc}html" ] && asciidoctor -q "${FILE}" ; done
아니면 스크립트를 넣으세요:
#! /bin/bash
find . -name '*.adoc' | while read FILE; do
if [ "${FILE}" -nt "${FILE%adoc}html" ]; then
asciidoctor -q "${FILE}"
fi
done
crontab에서 1분마다 한 줄 또는 스크립트를 실행할 수 있습니다.
crontab -e
행 추가
* * * * * /home/joe/update_adoc.bash
답변3
이는 오픈 소스 도구를 사용하여 수행할 수 있습니다 monit
!
다음을 추가해 보겠습니다 /etc/monit.conf
.
check file test with path /path/tp/test
if changed checksum then exec "/bin/bash /path/to/script.sh" as uid a_user_id and gid a_group_id
a_user_id
as를 가진 사용자에게 파일 id
에 대한 충분한 권한이 있는지 확인하고 루트로 변경할 때 읽기 및 실행 권한이 있는지 확인해야 합니다 ./path/to/test
/path/to/script.sh
monit.conf
monit reload
변경사항 가져오기monit daemon
watch monit status
monit
이벤트가 트리거되면 보고서의 변경 사항이 표시될 수 있습니다.
예를 들어, 이 예에서는
파일의 내용을 변경할 때 /path/to/test
/path/to/script.sh 스크립트가 호출됩니다 .
기본적으로 monit
30초마다 깨어나 구성된 검사를 수행합니다.
새 파일이 디렉터리에 추가되었는지 또는 디렉터리의 파일이 변경되었는지 확인하려면 다음을 수행하세요.
check directory test2 with path /path/to<br/>
if changed timestamp then exec "/bin/bash /path/to/script.sh" as uid a_user_id and gid a_group_id
이 구성은 귀하의 애플리케이션 요구 사항에 맞게 쉽게 업데이트될 수 있다고 확신합니다!