폴더를 모니터링하는 시스템 서비스

폴더를 모니터링하는 시스템 서비스

임베디드 Linux 이미지를 개발 중입니다. 현재 udevUSB 연결/분리 이벤트를 모니터링하는 규칙이 있습니다. USB가 연결되면 장치에서 스크립트를 검색하는 스크립트가 실행됩니다 upgrade.sh.

이제 시스템의 폴더를 모니터링하도록 확장하고 싶습니다. 이 폴더에 파일이 추가되면 쉘 스크립트를 실행하고 싶습니다.

어디서부터 시작해야 할지 모르겠습니다. 이것이 또 다른 udev규칙인가요?

답변1

설정하고 싶은 것은시스템 path장치및 관련 서비스. 두 개의 유닛 파일은 다음과 같습니다.

  1. 경로 지정 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
    
  2. 스크립트를 호출하는 서비스는 동일한 이름을 가져야 합니다(확장자 제외).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

관련 정보