반복 작업 설정을 위한 systemd 타이머 구성
이 단계에서는 Linux 시스템에서 작업을 예약하기 위한 cron의 현대적인 대안인 systemd 타이머에 대해 배우게 됩니다. systemd 타이머는 더 많은 유연성을 제공하며 systemd 생태계와 더 나은 통합을 제공합니다. systemctl 명령은 일반적으로 systemd 유닛을 관리하는 데 사용되지만, Docker 컨테이너 환경으로 인해 타이머 및 서비스 유닛 파일을 직접 생성하고 확인하는 데 집중할 것입니다.
systemd 타이머는 systemd 서비스 유닛과 함께 작동합니다. 타이머 유닛 (.timer 파일) 은 작업을 언제 실행해야 하는지 정의하고, 서비스 유닛 (.service 파일) 은 어떤 작업을 실행해야 하는지 정의합니다.
systemd 타이머 구성을 탐색하기 위해 로컬 시스템에서 계속 작업합니다.
시스템 디렉토리에 systemd 유닛 파일을 생성하려면 root 권한이 필요합니다. labex 사용자는 sudo 액세스 권한이 있으므로 필요한 명령에 sudo를 사용할 수 있습니다.
파일에 메시지를 기록하는 간단한 서비스를 만들어 보겠습니다. 이 서비스 유닛 파일은 사용자 지정 서비스 유닛이 일반적으로 저장되는 /etc/systemd/system/에 배치합니다.
서비스 유닛 파일 /etc/systemd/system/my-custom-task.service를 생성합니다.
sudo nano /etc/systemd/system/my-custom-task.service
파일에 다음 내용을 추가합니다.
[Unit]
Description=My Custom Scheduled Task
[Service]
Type=oneshot
ExecStart=/bin/bash -c 'echo "My custom task executed at $(date)" >> /var/log/my-custom-task.log'
편집기를 저장하고 종료합니다 (nano에서 Ctrl+o, Enter, Ctrl+x).
다음으로, 타이머 유닛 파일 /etc/systemd/system/my-custom-task.timer를 생성합니다. 이 타이머는 5 분마다 서비스를 활성화합니다.
sudo nano /etc/systemd/system/my-custom-task.timer
파일에 다음 내용을 추가합니다.
[Unit]
Description=Run My Custom Scheduled Task every 5 minutes
[Timer]
OnCalendar=*:0/5
Persistent=true
[Install]
WantedBy=timers.target
저장하고 편집기를 종료합니다.
OnCalendar 설명:
*:0/5는 "5 분마다"를 의미합니다.
*는 연도, 월, 일, 시 (모든 값) 를 의미합니다.
0/5는 분을 의미하며, 0 분부터 시작하여 5 분마다 (0, 5, 10, ..., 55) 를 의미합니다.
일반적인 systemd 환경에서는 이제 systemctl daemon-reload를 실행하여 systemd가 새 유닛 파일을 인식하도록 한 다음, systemctl enable --now my-custom-task.timer를 실행하여 타이머를 시작합니다. 그러나 Docker 컨테이너 제한으로 인해 systemctl은 완전히 작동하지 않습니다.
대신, 파일 생성을 수동으로 확인합니다. 컨테이너 내부의 systemd 데몬이 결국 이러한 파일을 가져올 수 있지만, 이 랩 설정에서는 타이머 실행을 직접 제어하거나 관찰할 수 없습니다. 여기의 주요 목표는 이러한 파일을 구성하는 방법을 이해하는 것입니다.
생성된 파일의 존재를 확인해 보겠습니다.
ls -l /etc/systemd/system/my-custom-task.service
ls -l /etc/systemd/system/my-custom-task.timer
두 파일이 모두 존재함을 나타내는 출력이 표시되어야 합니다.
서비스 실행을 시뮬레이션하려면 ExecStart에 정의된 명령을 수동으로 실행할 수 있습니다.
sudo /bin/bash -c 'echo "My custom task executed at $(date)" >> /var/log/my-custom-task.log'
이제 로그 파일을 확인하여 출력을 확인합니다.
sudo cat /var/log/my-custom-task.log
방금 기록한 메시지가 표시되어야 합니다.
My custom task executed at Tue Jun 10 06:54:40 UTC 2025
이것으로 systemd 타이머 구성 단계를 완료했습니다. 서비스 및 타이머 유닛 파일은 참조용으로 유지됩니다.