리눅스에서 systemd timers는 주기적이거나 특정 시간에 시스템 작업을 자동으로 실행하는 데 사용됩니다. 이는 cron과 유사하지만, systemd 기반의 타이머는 더 강력하고 유연한 기능을 제공합니다. systemd timers는 systemd 서비스를 일정 시간 간격 또는 특정 시간에 실행하도록 예약할 수 있습니다.
타이머는 기본적으로 두 가지 유형으로 구분됩니다:
- OnCalendar: 지정된 시간에 타이머가 동작합니다.
- 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의 장점
- 정확성: cron보다 더 세밀하게 작업 실행 시간을 제어할 수 있습니다.
- 로그 관리: journalctl 명령어로 타이머의 실행 기록을 쉽게 확인할 수 있습니다.
- 유연성: 타이머는 시스템이 꺼진 상태에서의 경과 시간도 기억하며, 부팅 시 바로 실행할 수 있습니다.
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
이 예시는 타이머를 활성화하고 나서 다음 실행 시간까지 남은 시간을 보여줍니다.
참고사이트
'Linux' 카테고리의 다른 글
[리눅스] journalctl 명령어 완벽 가이드 사용법(systemd 로그 확인) (0) | 2024.10.23 |
---|---|
[리눅스] rsyslog 명령어 완벽 가이드 사용법(시스템 로그 관리) (0) | 2024.10.23 |
[리눅스] tee 명령어 완벽 가이드 사용법(파일저장 & 화면출력) (0) | 2024.10.22 |
[리눅스] xargs 명령어 완벽 가이드 사용법(명령어 인수 전달) (0) | 2024.10.22 |
[리눅스] at 명령어 완벽 가이드 사용법(한 번 실행되는 작업 예약) (0) | 2024.10.21 |
[리눅스] cron 명령어 완벽 가이드 사용법(스케줄링) (0) | 2024.10.21 |
[리눅스] groupmod 명령어 완벽 가이드 사용법(그룹 정보 수정) (0) | 2024.10.21 |
[리눅스] resize2fs 명령어 완벽 가이드 사용법(파일 시스템 크기 변경) (0) | 2024.10.21 |