특정 시간에 systemd.service 시작/중지

특정 시간에 systemd.service 시작/중지

특정 시간에 systemd.service를 시작하고 중지하고 싶습니다. 아마도 나는 이것을 시작하기 위해 .timer 단위를 사용할 것이지만,내장된 메소드가 있나요?멈추다특정 기간 동안 또는 특정 시간 이후에 작업아니면 실행하려면 두 번째 .timer 단위를 만들어야 합니까 stop?

감사해요

답변1

타이머를 사용하여 서비스 A를 중지하려면 oneshot해당 유형의 서비스 B를 생성하면 됩니다.갈등, 타이머를 사용하여 서비스 B를 시작합니다.

한 유닛이 다른 유닛에 충돌=을 설정한 경우 전자를 시작하면 후자는 중지되고 그 반대의 경우도 마찬가지입니다. (원천)

서비스:

[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

답변2

사용할 수 있는 크론 작업은 여러 가지가 있습니다.

# ┌──────────── 분 (0 - 59)
 # │ ┌──────────── 시간(0 - 23)
 # │ │ ┌───────────────일(1~31)
 # │ │ │ ┌──────────────월(1~12)
 # │ │ │ │ ┌──────────────── 요일(0 - 6)
 # │ │ │ │ │
 # │ │ │ │ │
   * * * * * systemctl start $SERVICE.service
   * * * * * systemctl stop $SERVICE.service

크론에 대한 추가 정보:https://en.wikipedia.org/wiki/Cron,https://wiki.archlinux.org/index.php/Cron

답변3

실제로 파일에서 특정 런타임을 구성한 후 서비스를 중지하는 또 다른 방법이 있습니다 .service.

RuntimeMaxSec=...

서비스가 실패한 것으로 간주된다는 사실이 마음에 들지 않을 수도 있지만 이는 장기 실행 서비스를 종료하는 논리적 결과입니다.

더 나은 답변을 얻으려면 이 특이한 기능을 사용하는 이유를 설명하고 싶을 수도 있습니다. 서비스는 일반적으로 고정된 시간 동안이 아니라 영원히 실행되거나 명시적으로 중지될 때까지 실행됩니다.

관련 정보