systemd에 timer 등록하기

Damian·2022년 2월 8일

Centos

목록 보기
1/7

1. 왜? 이 방법을 찾게 되었는가.

  • fedora core os를 사용하여 crontab 등록이 안된다.
  • systemd에 데몬을 등록하는데 일정 시간에 작동되게 하고 싶다.

2.스크립트 만들기

2-1 daemon에 등록할 스크립트

  • 각 worker node에 쌓이는 이미지를 지울 prune 명령어를 스크립트로 만듬
  • crictl rmi --prune 은 사용하지 않는 이미지를 삭제하는 명령어
$ vi /root/image-remove.sh

#!/bin/bash
crictl rmi --prune 

3. service 만들기

  • 스크립트를 daemon으로 등록하기 위해 service를 만들어준다.
  • 만들어주는 위치는 /etc/systemd/system/ 하위 이다.(반드시)
    $ cd /etc/systemd/system/
    $ vi image_remove.service
    서비스 이름은 자유롭게 지어주면 되며 맨뒤에 xxx.service를 반드시 넣어준다.
[Unit]
Description=영어로 설명을 적어주시면됩니다.

[Service]
Type=oneshot
ExecStart=/root/image-remove.sh  스크립트 위치 적어준다.

[Install]
WantedBy=multi-user.target   systemd enabled 하기 위해서 

4. timer 만들기

  • cron 처럼 system daemon을 타임 설정하여 실행 시킬수 있다.
  • 만들어주는 위치는 /etc/systemd/system/ 하위 이다.(반드시)
  • timer 설정해주고 싶은 service와 같은 이름으로 만들어야한다(반드시)

$ cd /etc/systemd/system/
$ vi image_remove.timer
서비스 이름과 반드시 같게 만들어줘야하며 xxx.timer 형식으로 만들어준다

[Unit]
Description=영어로 설명을 적어주세요

[Timer]
OnCalendar=*-*-* 10:00:00   년-월-일 시:분:초 형식으로 진행
AccuracySec=1s  timer 실행 하는 시간이 맞는지 확인하는 주기이다 기본 1분이며 초단위로 확인은 1s로 해준다.

[Install]
WantedBy=timer.target

5. system daemon 등록

  • 서비스를 실행시키는 것이 아니라 타이머를 실행시키는 작업이다.
    타이머를 enabled 해주면 시간에 맞추어 service를 실행시켜준다.

systemctl enable image_remove.timer --now
systemctl status image_remove.timer

6. 마무리

  • cron이 안되면 위 방법은 아주 나이스하다.
    단 무작위 증가는 시스템에 영향을 줄수 있으니 리소스를 잘 분배한다.
  • 거의 리소스에 영향을 주지는 않지만 .... 괜히 loop문 이나 실수 하면 부팅때 문제 줄수도 있으니까...
profile
oepenpen

0개의 댓글