나는 간단한 systemd.path를 가지고 있습니다 restart.path
:
[Unit]
Description=
[Path]
PathExists=/home/ubuntu/restart
Unit=restart.service
[Install]
WantedBy=multi-user.target
그리고 트리거된 restart.service
서비스는 다음과 같습니다.
[Unit]
Description=
[Service]
ExecStartPre=echo PREPARING TO RESTART...
ExecStart=true
ExecStopPost=echo OK
ExecStopPost=/bin/rm -f /home/ubuntu/restart
[Install]
WantedBy=multi-user.target
동작은 다음과 같습니다.
touch restart
PREPARING TO RESTART...
OK
실제로 restart
파일이 사라집니다. 하지만 파일을 다시 생성하려고 하면 아무 일도 일어나지 않습니다. 그러면 다음 과 같이 touch restart
됩니다 rm restart
.touch restart
restart.service
restart path
이에 대한 문서는 매우 모호하며 궁극적으로 왜 이런 일이 발생하고 어떻게 해결하는지 이해할 수 없습니다. 문서를 만들 때 restart.service
마다 실행 되기를 원합니다 .restart
답변1
당신의 restart.service
:
[Unit]
Description=
[Service]
Type=simple
ExecStartPre=echo PREPARING TO RESTART...
ExecStart=/bin/rm -f /home/ubuntu/restart
즉, 이 ExecStopPost=
라인을 사용하지 말고 해당 섹션도 사용하지 마십시오 [Install]
. 해당 restart.path
유닛만 활성화해야 하기 때문입니다.
restart.service
⚠️ 기기가 비활성화되어 있는지 확인하세요앞으로위와 같이 변경하십시오. 그렇지 않으면 systemd는 위와 같이 여전히 활성화되어 있다고 생각하고 변경 후에도 비활성화할 수 없습니다. (설치부분 누락으로 인해)