임베디드 Linux 이미지를 개발 중입니다. 현재 udev
USB 연결/분리 이벤트를 모니터링하는 규칙이 있습니다. USB가 연결되면 장치에서 스크립트를 검색하는 스크립트가 실행됩니다 upgrade.sh
.
이제 시스템의 폴더를 모니터링하도록 확장하고 싶습니다. 이 폴더에 파일이 추가되면 쉘 스크립트를 실행하고 싶습니다.
어디서부터 시작해야 할지 모르겠습니다. 이것이 또 다른 udev
규칙인가요?
답변1
설정하고 싶은 것은시스템 path
장치및 관련 서비스. 두 개의 유닛 파일은 다음과 같습니다.
경로 지정
watch-folder.path
. 이 예에서는PathChanged
지시문을 사용하여 경로에 대한 쓰기가 완료되었는지 확인합니다(필요한 경우 이 지시문을 사용하여 특정 파일을 모니터링할 수도 있습니다).[Unit] Description=Systemd unit to watch a folder for new files [Path] PathChanged=/path/to/folder/you/want/to/monitor/ [Install] WantedBy=multi-user.target
스크립트를 호출하는 서비스는 동일한 이름을 가져야 합니다(확장자 제외).
watch-folder.service
[Unit] Description=Systemd service to process changes to a watched folder [Service] Type=oneshot ExecStart=/path/to/shellscript.sh
셸 스크립트는 매개 변수를 받지 않으므로 모니터링되는 폴더 자체(하드코드)에 대한 경로를 알아야 합니다.
파일을 적절한 디렉터리(예 /etc/systemd/system
: )에 복사하고 활성화합니다.길(서비스가 아닙니다!) 패스
systemctl enable watch-folder.path
그런 다음 다음을 통해 경로 모니터링을 시작하십시오.
systemctl start watch-folder.path