systemd

systemd는 Linux init system으로 timer도 제공하며, Next Generation Cron이라 일컫는다.

  • systems는 initd를 대체하는 init 시스템이었지만 최근에는 로깅, 네트워크 구성, 네트워크 시간 동기화와 같은 기능을 포함하는 강력한 관리자다. (모던 리눅스 교과서)
  • systemd와 상호 작용해 서비스를 관리하기 위해 사용하는 도구가 systemctl 이다.

기본 명령

타이머 조회:

$ systemctl list-timers
NEXT                        LEFT           LAST                        PASSED       UNIT                         ACTIVATES
Fri 2022-07-29 12:00:00 KST 8min left      Fri 2022-07-29 11:41:15 KST 9min ago     logrotate.timer              logrotate.service
Fri 2022-07-29 15:05:44 KST 3h 14min left  Fri 2022-07-29 03:46:38 KST 8h ago       ua-messaging.timer           ua-messaging.service
Fri 2022-07-29 17:05:27 KST 5h 14min left  Fri 2022-07-29 09:53:08 KST 1h 58min ago motd-news.timer              motd-news.service
...

타이머와 서비스는 우분투 기준 /lib/systemd/system에 있다. 예를 들어 logrotate.timerlogrotate.service의 경우.

logrotate를 daily → hourly 변경할 때:

$ cat logrotate.timer
...
[Timer]
# run on the hour of every hour of every day
OnCalendar=*-*-* *:00:00
# OnCalendar=daily

설정 변경 후에는 다음과 같이 적용:

$ sudo systemctl daemon-reload

최종 실행 상태 확인

$ cat /var/lib/logrotate/status 

crontab

하지만 service가 아닌 간단한 script는 여전히 crontab이 유용하다.

$ * * * * * TZ=Asia/Seoul /home/sangpark/check-ollama.sh >> /home/sangpark/check-ollama.logs 2>&1

2>&1는 stderr도 stdout으로 redirect하라는 의미

Last Modified: 2024/06/29 01:20:28

is a collection of Papers I have written.
© 2000 - Sang Park Except where otherwise noted, content on this site is licensed under a CC BY 4.0.
This site design was brought from Distill.