PathExists가 포함된 시스템 경로 단위

PathExists가 포함된 시스템 경로 단위

저는 파일이 존재하는 위치를 모니터링한 다음 스크립트를 실행하는 매우 간단한 서비스를 만드는 작업을 해왔습니다. 나는 .path 단위와 .service 단위를 갖는 시스템 레이아웃을 이해하고 이를 작동시킬 수 있었습니다. 그러나 저는 PathExists가 정말 이상하다고 생각합니다. 테스트에서 본 것은 파일을 생성하면 장치가 실행된다는 것입니다. 그런 다음 내 스크립트가 파일을 삭제합니다. 파일을 다시 생성하면 장치가 실행되지 않는 것 같습니다. 그런 다음 파일을 수동으로 삭제하고 다시 생성하면 장치가 실행됩니다. 나는 이것을 반복해서 해왔고 이 패턴을 따르는 것 같습니다. 대신 PathModified를 사용했으며 파일이 생성될 때마다 파일을 캡처합니다. 하지만 파일이 삭제된 경우에도 실행된다는 것은 확실합니다.

서비스 파일입니다

경로 파일

[Unit]
Description=My app
Wants=myapp.service

[Path]
PathExists=/tmp/pathtofile/file

[Install]
WantedBy=multi-user.target

서비스 파일입니다

[Unit]
Description=My App service file

[Service]
Type=simple
ExecStart=-/path/to/my/script/script.sh param1

어떤 아이디어가 있나요?

답변1

귀하의 파일에는 제가 작업 중인 것과 다른 내용이 있지만 파일의 어느 줄에 문제가 있는지 잘 모르겠습니다.

[root@localhost]~# cat run
#!/bin/sh
date +%s >> /root/run.log
[root@localhost]~# chmod +x run
[root@localhost]~# cat /etc/systemd/system/foo.service
[Unit]
Description=My App service file

[Service]
ExecStart=/root/run
[root@localhost]~# cat /etc/systemd/system/foo.path
[Unit]
Description=My app

[Path]
PathExists=/root/trigger
Unit=foo.service

[Install]
WantedBy=multi-user.target
[root@localhost]~# systemctl start foo.path
[root@localhost]~# rm run.log
[root@localhost]~# touch trigger
[root@localhost]~# rm trigger
[root@localhost]~# touch trigger
[root@localhost]~# cat run.log
1658387828
1658387829

관련 정보