저는 파일이 존재하는 위치를 모니터링한 다음 스크립트를 실행하는 매우 간단한 서비스를 만드는 작업을 해왔습니다. 나는 .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