특정 시간에 시스템 서비스 시작 / 중지


14

특정 시간에 systemd.service를 시작하고 중지하고 싶습니다. 아마도 .timer 단위를 사용하여 작업을 시작하지만 특정 기간 또는 특정 시간 후에 작업 중지 하는 방법stop있습니까? 또는 .timer 단위를 실행하는 두 번째 .timer 단위를 만들어야 합니까?

감사

답변:


6

타이머를 사용하여 서비스 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

2

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

RuntimeMaxSec=...

서비스가 실패한 것으로 여겨지는 것은 좋지 않지만 장기 실행 서비스를 종료하면 다소 논리적으로 발생합니다.

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


1
: 예, 우리는 메일 링리스트에와 한계를 논의 lists.freedesktop.org/archives/systemd-devel/2016-April/...
제이미 킷슨

1
특이하지 않습니다. 서버에서 트래픽이 가장 적은 밤에만 리소스 필요 서비스 (SETI)를 실행하는 것은 어떻습니까? 또한 내가 일하는 곳에 서버에 예외가있을 때 전화를 통해 지원 팀을 깨우도록 설계된 경보 데몬이 ​​있습니다. 우리는 실제로 사용하는 동안 성가신 일이 실행되는 것을 원하지 않습니다.
James M. Lay

1

몇 가지 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


8
.timerOP가 이미 알고있는 시스템 단위에 비해 크론 작업이 어떻게 개선 됩니까?
Pavel Šimerda 7

예, 가능하지만 내 질문은 실제로 systemd로 올바르게 수행하는 방법입니다. 특정 시간 또는 특정 기간 후에 작업을 중지하는 표준 방법이 있어야한다고 가정합니다.
Jamie Kitson

@JamieKitson 솔직히 말하면 실제로 cron 및 systemd timer 이상의 기능이 필요 하다고 생각하지 않습니다 . 대부분의 시스템 설치는 그러한 기능을 사용하지 않으며 systemctlcron, 시스템 타이머 및 원하는 것을 사용하여 실행 하는 데 아무런 문제가 없습니다 . 내 의견으로는이 답변은 다른 답변만큼 유효합니다.
Pavel Šimerda 8

예를 들어 www.data에서 systemctl start & stop을 실행하려면 어떻게해야합니까?
alvaropgl

@alvaropgl 귀하의 의견은 사용자 (www-data)와 관련이 없으며 프로세스 (runctl)를 실행 / 비 실행해야 할 수있는 제한적인 액세스 권한은 주제입니다. 새로운 주제를 시작하십시오. 힌트 : www-data 사용자에게 더 많은 책임과 범위를 설정하는 현재 접근 방식이 아니라 원하는 작업을 수행하기 위해 API를 만드는 것이 좋습니다.
Scott Prive
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.