systemd timer

markyang92·2021년 7월 23일
0

systemd

목록 보기
4/7
post-thumbnail

Owner別 파일 위치

  • Owner:root service/timer
    • /etc/systemd/system/<name>.<timer | service>로 파일을 만든다.
  • Owner: $USER service/timer
    • $HOME/.config/systemd/user/<name>.<timer | service>로 파일 만든다.

Timer

  • timer - 일정 시간 지난 이후에 작업을 수행하도록 하는 기록
    • tip)cron - 예전 Linux에서는 cron 프로그램으로 crontab 설정파일을 통해 일정 시간마다 프로그램을 실행 시켰음
  • timer는 .timer 확장자를 가진다.
  • 요일
    • monday(Mon)
    • tuesday(Tus)
    • wednesday(Wed)
    • thursday(Thu)
    • friday(Fri)
    • saturday(Sat)
    • sunday(Sun)

dependencies

  • Implicit Dedendency
    • Timer units은 타이머가 실행할 서비스에 대한 Before= 디펜던시를 갖는다
      • Before=타이머가 실행할 서비스
  • Default Dependency
    • DefaultDependencies=noset 하지 않는 한, 다음의 dependencies가 추가된다.

[Unit]설명/의존성

  • [Unit] 섹션: 설명/의존성 정리
    • /etc/systemd/system/timers.target.wants/apt-daily.timer/etc/systemd/system/timers.target.wants/apt-daily-upgrade.timer를 보며 timer 보자
  1. apt-daily.timer
  2. apt-daily-upgrade.timer

Description

  • [Unit]
    • Descrption : "유닛에 대한 상세 설명"

After

  • [Unit]
    • After: 지금 현재 Unit이 실행 이전에 pre executed Unit/환경/service/timer 순서 목록
  • 즉, 여기서 명시한 것 이후로 지금의 Unit을 실행하세요
    • apt-daily-upgrade.timer의 경우 apt-daily.timer가 실행되어야한다.

이외는 service때와 같음


[Timer]

  • chromium.service를 실행하는 timer

  • 서비스와 다르게, 타이머는 [Timer]섹션을 가진다.
  1. apt-daily-upgrade.timer의 [Timer] 섹션
  1. apt-daily.timer의 [Timer] 섹션

OnCalendar

  • [Timer]
    • OnCalendar: 타이머를 실행 시킬 time을 지정
  • OnCalendar=[요일] Year-Month-Day Hour:Min:Sec [Timezone]
    • [요일], [Timezone]은 생략 가능
      • Timezone 생략 시, 시스템 locale time에 맞춘다.
사용 법OnCalendar 값Descriontion
Tus..Thu..범위
화~목
6,18,특정 값 지정
6시와 18시만 지정
**-*-*Don't care
regex에서 아스테리스크(*)와 같다
minutely, hourly, daily, monthly,
weekly, yearly, quarterly, semiannually
-위에꺼 사용하기 귀찮으면 이것도 지정가능

예제OnCalendar=
(Tus || Thu) && (10일 <= today <= 20일) && 2 PMOnClendar=Tus,Thu *-*-10..20 14:*

RandomizedDelaySec

  • [Timer]
    • RandomizedDelaySec : 셋팅 값에 따라 랜덤하게 타이머를 딜레이 시킨다.
valueDescription
RandomizedDelaySec=정수 값- '0 ~ 정수 값' 사이에서 랜덤하게 타이머를 딜레이 시킨다. (default: 0)
- 0으로 설정 시 딜레이되지 않는다.
  • 이 셋팅은 특정 time interval에 걸쳐 넘어 비슷하게 설정된 타이머 이벤트의 유연한 디스패칭에 유용하다.
    • 같은 타임에 많은 것이 발생되는 것에 의해 정체되는 것을 방지하기 위해서

Persistent

  • [Timer]
    • Persistent : bool 아규먼트를 가진다.
      • Persistent=true: 서비스 유닛이 마지막에 트리거된 시간이 디스크에 저장된다.
        타이머가 activate될 때, timer가 inactive되는 시간 동안 적어도 한번은 트리거된 경우에, 서비스 유닛은 즉시 트리거된다. 이러한 트리거링은 그럼에도 불구하고 'RamdomizedDelaySec='에 의해 강제되는 딜레이에 영향을 받는다. 이는 시스템 파워 오프에 의해 miss run을 catch up하는데 유용하다. 이 셋팅은 timer에 설정된 OnCalendar=에만 영향 있음을 유의하라. (Default to false)

타이머에$ sudo systemctl clean --waht=state ...를 사용하여 디스크에서 이 옵션에 의해 관리되는 timestamp file을 제거 한다.


AccuracySec

  • [Timer]
    • AccuracySec : 타이머를 돌릴 때, 확인하는 주기
  • 이 값을 설정 안해도 default로 1분, 1분마다 확인하여 이벤트가 발생할 시간이 맞다면 서비스 실행
  • 1초 단위로 확인하고 싶다면 1s 대입 대입


Unit

Unit섹션이 아님

  • [Timer]
    • Unit : 실행 시킬 서비스 지정

더많은 옵션과 사용법을 알고 싶다면 $ man systemd.timer 를 읽자


[Install]

  • [Install] 섹션: 타이머 소속 Target Unit 설정 및 부팅 시 Unit이 enable, disable 을 위한 섹션
    • $ sudo systemctl enable, $ sudo systemctl disable과 관련
    • 타이머가 실행될 Unit파일의 Target이 설정되어 있다.
  • apt-daily-upgrade.timer의 경우

WantedBy

profile
pllpokko@alumni.kaist.ac.kr

0개의 댓글