systemd 타이머 시작하기: cron 작업의 현대적인 대안

systemd 타이머란?

systemd 타이머 는 systemd 서비스 유닛을 예약하고 트리거하도록 설계된, 기존 cron 작업을 대체하는 현대적이고 강력한 도구입니다. 기존 cron 시스템보다 향상된 유연성, 로깅, 종속성 처리를 제공해 Linux 자동화를 단순화합니다.

cron 대신 systemd 타이머를 사용해야 하는 이유

systemd 타이머는 cron보다 여러 가지 장점이 있어 Linux 환경에서 작업 자동화를 위한 선호 선택지가 됩니다.

  • 통합 관리: 다른 systemd 유닛과 함께 타이머를 관리합니다(시작, 중지, 활성화, 비활성화).
  • 향상된 로깅: journalctl 을 사용한 자세한 로깅 및 상태 모니터링.
  • 유연한 예약: 달력 기반 구문과 단조(상대) 타이머를 모두 지원합니다.
  • 놓친 이벤트 처리: 재부팅 후 놓친 이벤트를 자동으로 따라잡습니다.

빠른 예제: 매일 자정에 스크립트 실행하기

매일 자정에 스크립트를 실행하는 systemd 타이머를 만드는 단계별 가이드입니다.

1. 서비스 유닛 만들기

서비스 유닛은 수행할 동작을 정의합니다. 이 경우 스크립트를 실행하는 동작입니다.

파일을 만듭니다 /etc/systemd/system/daily-script.service:

[Unit]
Description=Run my daily script

[Service]
Type=oneshot
ExecStart=/usr/local/bin/myscript.sh

2. 타이머 유닛 만들기

타이머 유닛은 서비스를 실행할 시점을 예약합니다.

파일을 만듭니다 /etc/systemd/system/daily-script.timer:

[Unit]
Description=Run my daily script every day at midnight

[Timer]
OnCalendar=*-*-* 00:00:00
# The format is: YYYY-MM-DD HH:MM:SS
# The above line schedules the task to run once per day at midnight.

Persistent=true

[Install]
WantedBy=timers.target

3. 타이머 활성화 및 시작

다음 명령을 실행해 systemd를 다시 로드하고, 타이머를 활성화한 뒤 즉시 시작합니다.

sudo systemctl daemon-reload
sudo systemctl enable --now daily-script.timer

상태와 로그를 확인하는 방법

타이머를 설정한 뒤에는 다음 명령으로 상태와 로그를 모니터링할 수 있습니다.

  • 활성 타이머 확인:
systemctl list-timers
  • 타이머 세부 정보 보기:
systemctl status daily-script.timer
  • 스크립트 실행 로그 확인:
journalctl -u daily-script.service

참고 자료

  1. systemd 공식 문서:
    https://www.freedesktop.org/software/systemd/man/systemd.timer.html
    구문, 옵션, 예제를 자세히 설명하는 systemd 타이머 공식 문서입니다.
  2. systemd 타이머에 대한 Arch Wiki:
    https://wiki.archlinux.org/title/Systemd/Timers
    실용적인 예제와 문제 해결 팁을 담은 커뮤니티 주도 가이드입니다.
  3. systemd 타이머에 대한 Red Hat 문서:
    https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/system_administrators_guide/chap-managing_services_with_systemd#sect-Managing_Timers
    기업용 systemd 타이머에 대한 자세한 설명입니다.
  4. Ubuntu 커뮤니티 도움말 위키:
    https://help.ubuntu.com/community/systemd
    이 페이지에서는 systemd에 대한 개요와 타이머에 대한 정보를 제공합니다.

요약

systemd 타이머는 Linux에서 작업을 자동화하기 위한 견고하고 현대적인 솔루션입니다. cron 작업보다 뛰어난 안정성, 제어력, systemd와의 통합을 제공합니다. 간단한 서비스 유닛과 타이머 유닛을 만들기만 하면 백업, 동기화, 정리 작업 등의 작업을 자동화할 수 있습니다. 개인 서버를 관리하든 기업 인프라를 관리하든, systemd 타이머는 효율적인 Linux 자동화를 위한 필수 도구입니다.

댓글 남기기