답변:
타이머를 사용하여 서비스 A를 중지하려면 충돌oneshot
할 서비스 유형 B를 생성 한 다음 타이머를 사용하여 서비스 B를 시작할 수 있습니다.
유닛이 다른 유닛에 Conflicts = 설정을 가지고 있다면, 전자를 시작하면 후자가 중지되고 그 반대도 마찬가지입니다. ( 소스 )
서비스:
[Unit]
Conflicts=B.service
...
B. 서비스 :
[Unit]
Description=B service description
[Service]
Type=oneshot
ExecStart=/bin/echo ''
B. 타이머 :
[Timer]
AccuracySec=1
OnActiveSec=10
[Install]
WantedBy=timers.target
다음은 10 초 후에 서비스 A를 중지합니다.
systemctl start A.service
systemctl start B.timer
실제로 .service
파일 에 특정 런타임이 구성된 후 서비스를 중지하는 다른 방법이 있습니다.
RuntimeMaxSec=...
서비스가 실패한 것으로 여겨지는 것은 좋지 않지만 장기 실행 서비스를 종료하면 다소 논리적으로 발생합니다.
더 나은 답변을 얻으려면 이러한 특이한 기능을 사용하는 이유를 설명 할 수 있습니다. 서비스는 일반적으로 고정 된 시간이 아니라 영구적으로 또는 명시 적으로 중지 될 때까지 실행됩니다.
몇 가지 cron 작업을 사용할 수 있습니다.
# ┌───────────── 분 (0-59) # │ ┌────────────── 시간 (0-23) # │ │ ┌─────────────── 요일 (1 ~ 31) # │ │ │ ┌──────────────── 달 (1-12) # │ │ │ │ ┌───────────────── 요일 (0-6) # │ │ │ │ │ # │ │ │ │ │ * * * * * systemctl start $ SERVICE.service * * * * * systemctl stop $ SERVICE.service
cron에 대한 추가 정보 : https://en.wikipedia.org/wiki/Cron , https://wiki.archlinux.org/index.php/Cron
.timer
OP가 이미 알고있는 시스템 단위에 비해 크론 작업이 어떻게 개선 됩니까?
systemctl
cron, 시스템 타이머 및 원하는 것을 사용하여 실행 하는 데 아무런 문제가 없습니다 . 내 의견으로는이 답변은 다른 답변만큼 유효합니다.