.timer 단위를 사용하여 systemd .service를 다시 시작하십시오.

.timer 단위를 사용하여 systemd .service를 다시 시작하십시오.

스크립트를 실행하는 다음과 같은 시스템 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작동합니다.

관련 정보