Cron 작업 대신 Systemd 타이머 사용
Linux 사용자라면 아마도 cron에 익숙할 것입니다. cron은 수년간 Unix 시간 기반 작업 스케줄러로 사용되어 왔습니다. 이제 많은 사용자가 cron의 우세를 대체하기 위해 Systemd 타이머를 사용하고 있습니다. 이 문서에서는 자신의 systemd 타이머를 설정하고 시스템에서 제대로 실행되는지 확인하는 기본 사항에 대해 설명합니다.
Cron 대신 Systemd 타이머를 사용하는 이유는 무엇입니까?
Systemd Timers의 가장 큰 판매 포인트 중 하나는 Systemd 생태계에 완전히 통합되어 있다는 것입니다. 즉, 다양한 Systemd 서비스 단위를 함께 예약하고 연결하기가 매우 쉬워 기존 cron 데몬에 비해 작업을 자동화하기가 더 쉽습니다.
Cron에 비해 Systemd Timers의 또 다른 장점은 예약된 작업을 트리거하는 방법에 대한 보다 자세한 제어를 제공한다는 것입니다. 예를 들어, Systemd Timers에는 OnBootSec
성공적인 부팅 후 특정 시간이 지날 때까지 서비스 단위를 지연시킬 수 있는 변수가 있습니다.
마지막으로 Systemd Timers는 표준 cron 데몬과 비교해도 매우 정확합니다. 기본적으로 변수를 사용하여 최대 마이크로초까지 작업을 추적하고 실행할 수 있습니다 AccuracySec
. 예약된 작업에 대한 정확한 타이밍이 필요한 컴퓨터를 실행하는 경우 매우 유용합니다.
Systemd 타이머 설치
타이머는 Systemd의 내장 기능입니다. 즉, Arch, Fedora, Ubuntu와 같은 인기 있는 Linux 배포판에서처럼 init 데몬으로 Systemd를 사용하는 경우, 귀하의 머신은 이미 일부 시스템 프로세스에서 이 기능을 활용하고 있습니다.
배포판에서 Systemd가 실행되고 있는지 확인하려면 다음 명령을 실행하세요.
이렇게 하면 현재 시스템에서 실행 중인 모든 Systemd 단위, 장치 및 타이머가 나열됩니다.
기존 타이머 나열
현재 사용자 계정에서 타이머가 실행 중인지 확인하는 가장 쉬운 방법은 다음 명령을 사용하는 것입니다.
또한 --all
플래그를 사용하여 비활성 타이머를 포함하여 시스템의 모든 타이머를 확인할 수 있습니다.
이렇게 하면 각 타이머가 작동하는 날짜와 시간, 해당 지점까지의 카운트다운, 마지막으로 실행된 이후로 경과한 시간, 타이머 자체의 장치 이름, 각 타이머 장치가 활성화하는 서비스가 인쇄됩니다.
새로운 서비스 및 타이머 생성
Systemd 타이머를 만드는 첫 번째 단계는 타이머를 연결할 서비스를 만들거나 기존 서비스를 찾는 것입니다. 모든 타이머는 부모 서비스 단위에 연결해야 하기 때문입니다. 이 섹션에서는 사용자 지정 Systemd 서비스에 대한 타이머를 만드는 과정을 안내합니다.
홈 디렉토리에 빈 “.service” 및 “.timer” 파일을 만들어 시작합니다.
좋아하는 텍스트 편집기를 사용하여 새 서비스 파일을 엽니다.
새 서비스 파일에 다음 템플릿을 붙여넣으세요.
“.service” 파일을 저장한 다음 같은 텍스트 편집기를 사용하여 빈 “.timer” 파일을 엽니다.
다음 코드 블록을 타이머 파일에 붙여넣습니다.
섹션 으로 이동 [Timer]
한 다음 변수 값을 OnCalendar
Systemd 단위를 실행하려는 날짜와 시간으로 바꾸세요. 제 경우에는 매일 오전 11시 43분에 정확히 프로그램이 실행되기를 원합니다.
모노토닉 타이머 만들기
특정 날짜에 실행되는 타이머를 설정하는 것 외에도 컴퓨터의 현재 가동 시간에 상대적으로 실행되는 단조 타이머를 만드는 것도 가능합니다. 이는 데스크톱이나 노트북과 같이 지속적으로 실행되지 않는 머신에서 작업을 예약하는 경우에 유용합니다.
시작하려면 “.timer” 파일을 열고 해당 섹션으로 스크롤하세요 [Timer]
.
OnCalendar
및 Persistent
변수를 모두 제거한 다음 , OnBootSec
단위 파일을 실행하려는 시간 간격을 추가합니다. 예를 들어, “1hr”로 설정하면 Systemd가 컴퓨터가 성공적으로 부팅된 후 1시간 후에 명령을 시작합니다.
OnUnitActiveSec
바로 아래에 변수 를 추가한 다음 OnBootSec
, 시스템이 부팅된 후 타이머가 계속 실행되기를 원하는 간격을 제공합니다. 제 경우에는 처음 실행한 후 30분마다 작업을 실행하고 싶기 때문에 “30분”으로 설정합니다.
과도 타이머 생성
Systemd Timer가 Systemd에 깊이 통합되는 이점 중 하나는 init 데몬의 다른 인접 프로그램을 활용할 수 있다는 것입니다. 예를 들어, Systemd-run과 함께 타이머를 사용하여 머신에서 일회성 일시적 작업을 생성할 수 있습니다.
간단한 임시 타이머를 만들려면 다음 코드 줄을 터미널 세션에 붙여넣은 다음, 변수 값을 --on-calendar
명령을 실행할 간격으로 바꾸세요.
실행하려는 명령을 줄의 끝에 추가한 후, 눌러서 Enter예약하세요.
--on-boot
또한 및 변수를 모두 사용하여 임시 단조 타이머를 생성할 수도 있습니다 --on-unit-active
.
다음 명령을 실행하여 임시 타이머가 Systemd의 작업 스케줄러에 대기열에 추가되었는지 확인하세요.
Systemd 타이머 실행
새로운 Systemd Timer를 실행하려면 현재 Systemd 세션에 제대로 로드되었는지 확인해야 합니다. 그러려면 사용자 지정 서비스와 타이머 파일을 모두 Systemd의 서비스 디렉터리에 복사합니다.
init 데몬의 현재 구성을 다시 로드합니다.
다음을 사용하여 생성한 서비스와 타이머를 모두 활성화합니다 systemctl
.
새 터미널 세션에서 다음을 실행하여 새 타이머를 제대로 로드했는지 확인하세요 sudo systemctl status my-new-timer.timer
. 이 경우, 내 타이머가 이제 예약되어 시스템이 실행될 준비가 되었음을 알 수 있습니다.
Systemd Timers를 사용하여 작업을 예약하는 방법을 배우는 것은 Linux 머신이 후드 아래에서 어떻게 작동하는지 이해하는 데 있어 일부에 불과합니다. Grub과 Systemd-boot에 대한 비교 기사를 살펴보면서 이 멋진 OS의 내부를 더 자세히 알아보세요.
이미지 출처: Alexandr Podvalny via Unsplash . 모든 변경 사항과 스크린샷은 Ramces Red가 제공했습니다.
답글 남기기