systemd.timer는 systemd에 포함되어 있는 job scheduler입니다.
여러분들이 가장 잘 알고 있을 job scheduler는 cron입니다. cron은 전통적으로 *nix 시스템에서 가장 많이 사용된 job scheduler이죠. systemd.timer는 cron을 완벽하게 대체하는 새로운 job scheduler입니다!
그럼 systemd timer는 cron과 다르게 어떠한 장점들이 있는 걸까요? 아래 간단하게 정리해보았습니다.
Job을은 Timer와 독립적으로 시작할 수 있습니다. 이렇게 하면 디버깅이 간단해집니다.
Job을 특정 환경(user, boot, H/W state 변화 등등의 이벤트)에서 실행되도록 설정할 수 있습니다.
cgroup에 attach할 수 있습니다. 즉 Job은 다른 시스템 units에 dependency를 가지도록 설정가능합니다.
쉬운 debugging을 위해 systemd journal에 로그를 기록합니다.
Timer는 Monotinic timer와 Realtime timer로 구분할 수 있습니다.
1. Monotonic timer
- job이 시작시간을 기준으로 설정한 시간 간격으로 실행됩니다. 예를들어 시작을 booting 후 10분 후 라고 하고, 간격을 3시간으로 설정하면, Booting 후 10분 후에 job이 최초 실행되고, 그 이후 3시간 간격으로 실행됩니다.
2. Realtime timer
- cronjobs와 동일하게 Calendar event로 job이 실행됩니다. 년/월/일/요일/시/분의 단위로 설정이 가능합니다.
전체 Timer list를 확인하는 명령어는 아래와 같습니다.
$systemctl list-timers
timer를 등록하기 위해서는 .timer와 .service 파일을 작성하고 /etc/systemd/system/ 디렉토리 아래 위치시키면 됩니다.
그럼 .timer와 동일의 이름을 가진 .service 파일을 실행하게 되죠. 아래 각각 Monotonic와 Realtime timer의 예시입니다.
Monotonic timer |
Realtime timer |
|
Monotonic timer의 예시는 부팅 후 10분 뒤 최초 실행하고, 그 이후는 1주일에 한번씩 실행되게 합니다. 만약 OnUnitActiveSec=1w가 1h였다면 1시간 간격으로 실행되 될 것입니다. Realtime timer는 active된 시점에 실행되고 그 이후 1주일 간격으로 실행됩니다.
그럼 아래 exam.timer가 있으면 동일한 이름의 service 파일이 있어야 한다고 했습니다. 위 timer 파일의 이름이 exam이니 exam.service 파일이 있어야 겠죠. 아래에서 ExecStart에 작성한 부분이 여러분이 실행하고자 하는 스크립트 등의 경로를 작성하는 곳입니다!
이렇게 만든 파일을 /etc/systemd/system/ 아래 위치 시키고 enable 시키시면 됩니다.
어렵지 않으니, 따라하시면 쉽게! 하실 수 있을 겁니다. 날짜 설정등에 필요한 내용이나 더욱 상세한 내용은 아래와 같이 Manual을 이용하시면 됩니다!
$man systemd.timer
지금까지 부족한 글 읽어주셔서 감사합니다.
'Linux > Command & Tool' 카테고리의 다른 글
man page에 color 입히기 (0) | 2018.03.26 |
---|---|
OpenGrok 설치하기 (How to install OpenGrok) (4) | 2018.03.18 |
[apt] /etc/apt/source.list 내용 살펴보기 (0) | 2018.03.08 |
[Cross compiler] arm-linux-gnueabi- / aarch64-linux-gnu- 설치 (0) | 2018.01.02 |
[gcc] option & example (0) | 2017.12.30 |