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


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.