cron vs systemd 더 안정적인 것은?? (feat. 세계관 최강자의 대결)

2025. 11. 11. 12:56·OS/Linux

세계관 최강자 둘의 대결;;;

지난번 포스팅 때, 자동화 스크립트를 cron과 systemd 둘 중 어디에 등록할지 고민하다가 systemd를 선택했다고 적어뒀었다

https://ratatou2.tistory.com/288

 

SSH 22번 포트 자동 복구 시스템 구축하기 (feat. 서버 잃고 뇌 약간 고치기 ㅠ)

열어줘잉...하... 나의 사랑스런 홈서버들과 10km 떨어진 카페에서 k8s 구축을 하고 있었다근데 자꾸 삽질 드릅게 많이하고 안돼서 킹받던 도중 iptable 다 닫아버리는 명령어를 위화감 없이 실행해

ratatou2.tistory.com

오늘은 간단하게 그 둘을 비교해보고 왜 systemd를 선택했는지 적어보겠다


1. cron이랑 systemd가 뭔데?

쉽게 풀이해서 한줄요약하면 아래와 같다

cron 정해둔 시간마다 자동으로 명령을 실행해주는 알람 타이머 같은 도구
systemd 부팅부터 백그라운드 서비스까지 모든 걸 자동으로 켜고, 죽으면 살리고, 로그까지 관리해주는 관리자

- crontab은 이제 cron daemon(크론 데몬)’이 주기적으로 실행할 작업 목록을 저장하는 테이블이다


2. 각각의 장단점은?

구분 Crontab
(cron, crontab -e 로 확인 가능)
Systemd 서비스
(/etc/systemd/system/*.service 들을 의미함)
주요 용도 주기적인 작업(스케줄러) 지속 실행 또는 이벤트 기반 서비스 관리
트리거 방식 시간 기반 (분/시/일/월/요일 단위) 시간/이벤트 기반 (타이머, 파일 변경, 네트워크 등)
주기 설정 */5 * * * * 형식으로 간단 .timer 유닛으로 세밀한 설정 가능 (OnBootSec, OnUnitActiveSec)
에러 처리 실패 로그만 남기고 재시도 없음 Restart=on-failure, RestartSec, StartLimitInterval 등 자동 재시도 지원
로그 관리 기본 /var/log/syslog로 섞임 journalctl -u 서비스명 으로 단독 관리 가능
의존성 관리 불가능 (네트워크/파일시스템 등 상태 몰라요) After=network-online.target, Requires=mysql.service 등 가능
보안 격리 없음 (root 환경 그대로 실행) User=, Group=, ProtectSystem=yes, PrivateTmp=yes 등 격리 가능
실행 시점 예약 시간에만 부팅 시 자동, 수동 시작, 타이머 기반 등 다양
장점 요약 빠르게 설정, 간단한 반복작업에 적합 안정적, 자동복구, 로그 관리 우수, 보안 서비스에 적합
단점 요약 의존성·복구·로그 관리 부족 설정 구조가 복잡, 파일 작성 및 등록 필요

- 둘의 결정적인 차이는 '이벤트' 기반 동작 가능성 유무!!

- 예를들어 특정 서비스나 PID가 갑자기 종료되거나, I/O 문제가 생겼다고 가정해보자

- 이때, crontab은 다음 주기가 다가오기 전까지 아무것도 할 수 없다

- 반면에 systemd는 이벤트 발생으로 인식해서, 그 즉시 등록된 스크립트를 실행하거나 하는 식으로 대응할 수 있는 것이다

- 추가 예시로 systemd는 파일이 변경되거나, 네트워크가 연결되거나, 서비스가 죽으면 자동 재시작하도록 세팅할 수 있다 (서비스 관리자로 불리는 이유;;)

- 물론 그만큼 crontab은 굉장히 다루기 쉽다는 장점이 있다

- 아래처럼 한줄 등록하면 끝!

# crontab 등록 예시
*/5 * * * * /usr/local/bin/check.sh

- systemd는 설정해줘야할 것이 좀 더 많은 편 (서비스 만들고, timer 등록하고, systemd에 등록하고...)

# systemd 등록 시 필요한 단계들
*.service, *.timer, systemctl daemon-reload, enable

3. 그래서 나는 왜 systemd를 골랐는가?

- ssh 포트나 ufw가 닫히면 즉각적으로 대응하기 위해!

- 물론 타이머로 감시하는 체제니까 crontab에 등록했어도 될터였다

- 그래도 뭔가 생명주기를 관리하는데 이걸 시간 주기로만 세팅한다? 그건 좀 별로였음

- 나중에 개선하면 ufw가 닫히거나 하면 즉각적으로 동작시키는 옵션을 추가해도 되고 무튼 systemd가 맥락에서 더 설득적이라 골랐다!

반응형

'OS > Linux' 카테고리의 다른 글

Ubuntu 파일, 디렉토리 권한 변경 (feat. 일반 계정으로 권한 변경)  (0) 2026.02.11
저사양 PC에 Chrome OS 설치하기 (feat. 노트북에 크롬 OS 설치 방법)  (0) 2026.01.31
우분투 22.04 VNC 원격 접속하기 (feat. HDMI 더미 인식시키기)  (0) 2025.10.17
명령어 한줄로 내부망 PC끼리 파일 전송하기 (feat. scp 명령어)  (1) 2025.08.12
맥북에 npm 설치 시 권한 없음 해결 방법 (feat. macOS에 npm 설치 방법)  (0) 2025.08.12
'OS/Linux' 카테고리의 다른 글
  • Ubuntu 파일, 디렉토리 권한 변경 (feat. 일반 계정으로 권한 변경)
  • 저사양 PC에 Chrome OS 설치하기 (feat. 노트북에 크롬 OS 설치 방법)
  • 우분투 22.04 VNC 원격 접속하기 (feat. HDMI 더미 인식시키기)
  • 명령어 한줄로 내부망 PC끼리 파일 전송하기 (feat. scp 명령어)
Ratatou2
Ratatou2
온갖 정보들을 기록해두는 메모보드 블로그
  • Ratatou2
    nak-z
    · Ratatou2 ·
  • 전체
    오늘
    어제
  • 공지사항

    • 블로그 이전 진행 중 (24.11.25 ~)
    • 분류 전체보기 (325) N
      • OS (97) N
        • Linux (41) N
        • Window (24)
        • Mac (27) N
        • Android (5)
      • Infra (88)
        • DevOps (38)
        • Docker (14)
        • Jenkins (12)
        • n8n (14)
        • Nextcloud (8)
        • Rasberry Pi (2)
      • Dev (23)
        • App (3)
        • JAVA (7)
        • Python (1)
        • DB (3)
        • Vue (2)
        • AI (6)
        • Git (1)
      • Tools (14)
      • Study (69)
        • Algorithm (66)
        • CS (3)
      • Game (10)
        • Project Zomboid (9)
        • Don't Starve Together (1)
      • etc (23)
        • Temp (0)
      • 개발 외 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 인기 글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
Ratatou2
cron vs systemd 더 안정적인 것은?? (feat. 세계관 최강자의 대결)
상단으로

티스토리툴바