Linux

[리눅스] systemd timers 명령어 완벽 가이드 사용법(systemd 스케줄링)

인생아 2024. 10. 22. 11:06
반응형

리눅스에서 systemd timers는 주기적이거나 특정 시간에 시스템 작업을 자동으로 실행하는 데 사용됩니다. 이는 cron과 유사하지만, systemd 기반의 타이머는 더 강력하고 유연한 기능을 제공합니다. systemd timerssystemd 서비스를 일정 시간 간격 또는 특정 시간에 실행하도록 예약할 수 있습니다.

타이머는 기본적으로 두 가지 유형으로 구분됩니다:

  1. OnCalendar: 지정된 시간에 타이머가 동작합니다.
  2. OnActiveSec, OnBootSec, OnUnitActiveSec: 특정 이벤트 후 일정 시간이 경과한 후에 타이머가 동작합니다.

systemd timers 사용법

타이머를 설정하기 위해서는 타이머 유닛 파일(.timer)서비스 유닛 파일(.service) 두 개의 파일을 만들어야 합니다. 타이머 유닛은 언제 실행할지를 정의하고, 서비스 유닛은 실행할 작업을 정의합니다.

타이머 유닛 파일 생성

타이머 유닛 파일은 /etc/systemd/system/ 경로에 생성할 수 있습니다. 예를 들어, 매일 자정에 로그를 삭제하는 작업을 예약하려면 다음과 같이 타이머 파일을 만듭니다:

sudo nano /etc/systemd/system/cleanup.timer

다음 내용을 추가합니다:

[Unit]
Description=Daily Cleanup Timer

[Timer]
OnCalendar=daily
Persistent=true

[Install]
WantedBy=timers.target

OnCalendar=daily는 매일 자정에 타이머를 동작시킵니다.

서비스 유닛 파일 생성

이제 타이머가 실행할 서비스 유닛을 생성합니다. 같은 경로에 cleanup.service 파일을 만들어 줍니다:

sudo nano /etc/systemd/system/cleanup.service

다음과 같은 내용을 추가합니다:

[Unit]
Description=Daily Cleanup Service

[Service]
Type=oneshot
ExecStart=/usr/bin/rm -rf /tmp/*

ExecStart 항목에 /tmp/ 디렉토리 내의 파일을 삭제하는 명령을 정의했습니다.

타이머 활성화 및 시작

타이머를 생성한 후에는 이를 활성화하고 시작해야 합니다. 다음 명령어로 타이머를 활성화합니다:

sudo systemctl enable cleanup.timer

타이머를 즉시 시작하려면 다음 명령어를 실행합니다:

sudo systemctl start cleanup.timer

타이머 상태 확인

타이머가 정상적으로 작동하는지 확인하려면 다음 명령어로 상태를 확인할 수 있습니다:

user@linux:~$ systemctl list-timers

출력 예시는 다음과 같습니다:

NEXT                         LEFT       LAST                         PASSED       UNIT             ACTIVATES
Thu 2024-10-19 00:00:00 UTC  5h 25min   Wed 2024-10-18 00:00:00 UTC  18h ago      cleanup.timer    cleanup.service

이 명령어는 시스템에 활성화된 모든 타이머를 보여주며, 다음 실행 시간과 마지막 실행 시간을 확인할 수 있습니다.

systemd timers의 장점

  1. 정확성: cron보다 더 세밀하게 작업 실행 시간을 제어할 수 있습니다.
  2. 로그 관리: journalctl 명령어로 타이머의 실행 기록을 쉽게 확인할 수 있습니다.
  3. 유연성: 타이머는 시스템이 꺼진 상태에서의 경과 시간도 기억하며, 부팅 시 바로 실행할 수 있습니다.
user@linux:~$ sudo systemctl start cleanup.timer
user@linux:~$ systemctl list-timers
NEXT                         LEFT       LAST                         PASSED       UNIT             ACTIVATES
Thu 2024-10-19 00:00:00 UTC  23h 55min  never                        n/a          cleanup.timer    cleanup.service

이 예시는 타이머를 활성화하고 나서 다음 실행 시간까지 남은 시간을 보여줍니다.

참고사이트

반응형