![.timer 단위를 사용하여 systemd .service를 다시 시작하십시오.](https://linux55.com/image/162253/.timer%20%EB%8B%A8%EC%9C%84%EB%A5%BC%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%20systemd%20.service%EB%A5%BC%20%EB%8B%A4%EC%8B%9C%20%EC%8B%9C%EC%9E%91%ED%95%98%EC%8B%AD%EC%8B%9C%EC%98%A4..png)
스크립트를 실행하는 다음과 같은 시스템 myscript.service 단위가 있습니다.
[Unit]
Description=MyScript
Wants=time-sync.target
[Service]
Type=oneshot
RemainAfterExit=true
ExecStart=/usr/local/bin/test.sh -a
ExecStop=/usr/local/bin/test.sh -b
[Install]
WantedBy=multi-user.target
다음 Systemd myscript.timer 장치를 사용하여 매분마다 다시 시작하고 싶습니다.
[Unit]
Description=Schedule script execution
[Timer]
OnCalendar=*:0/1
[Install]
WantedBy=timers.target
처음에만 작동하며 그 이후에는 n/a 상태로 유지됩니다.
# systemctl list-timers
NEXT LEFT LAST PASSED UNIT ACTIVATES
n/a n/a Tue 2019-10-15 14:50:01 EDT 3ms ago myscript.timer myscript.service
~
답변1
.service 단위가 .timer 단위에서 실행되는 경우 RemainAfterExit=true
.this를 가질 수 없습니다.시스템 문서말하는:
타이머가 만료될 때 활성화할 장치가 이미 활성화된 경우 장치는 다시 시작되지 않고 계속 실행됩니다. 이 경우 새 서비스 인스턴스를 생성한다는 개념이 없습니다. 따라서 RemainAfterExit=가 설정된 서비스(서비스의 기본 프로세스가 종료된 후에도 지속됨)는 일반적으로 반복 타이머를 통한 활성화에 적합하지 않습니다. 한 번만 활성화된 다음 영원히 지속되기 때문입니다.
따라서 제거하면 RemainAfterExit=true
작동합니다.