[Unit]
Description=run test service
[Timer]
OnCalendar=Sat *-*-* 00:00:01
Unit=test.service
Persistent=true
[Install]
WantedBy=timers.target
위의 예에서는 모든 것이 잘 작동합니다. 하지만 아침 10시 이전에 Linux OS 시스템을 부팅해야 합니다.
내 목표는: 매주 토요일 언제든지 Debian 10을 부팅하고 부팅하는 동안 스크립트를 실행하고 싶습니다. 토요일(같은 날)에 Linux 컴퓨터를 두세 번 재부팅하면 스크립트를 다시 실행하지 않고 한 번만 실행하고 싶습니다. systemd로 그렇게 할 수 있습니까?
내 Gnu-Linux OS는Debian GNU/Linux 10(버스터)systemctl --version은 다음과 같습니다.시스템 241 (241)
답변1
"Linux os"는 너무 일반적입니다.특정 시스템을 진단할 수 있습니다. 다음 네 가지 명령을 실행하고 결과를 보고하십시오(명령을 사용할 수 없는 경우 오류 포함). 보고서는 어떤 종류의 "linux os"가 설치되어 있고 어떤 버전의 systemd가 실행되고 있는지 알려줍니다.
lsb_release -a
systemctl --version
/sbin/init --version
busctl --system get-property org.freedesktop.systemd1 \
/org/freedesktop/systemd1 \
org.freedesktop.systemd1.Manager \
Version
현재(2019년 8월 기준) 버전의 systemd
토요일에 언제든지 작동하도록 실시간 타이머를 설정하세요
OnCalendar=Sat *-*-* 00:00:01
그리고 모놀리틱 타이머를 제거하세요.
OnBootSec=2
효과
Persistent=true
시스템은 매주 토요일 00:00:01 이후에 매주 한 번씩 스크립트 실행을 시도한다는 것입니다. 스크립트는 매주 토요일에 한 번만 실행되며 일반적으로 처음 부팅될 때 실행됩니다. 토요일에 시스템이 켜져 있지 않으면 다른 요일에 실행되고, 금요일에 밤새 시스템이 켜져 있으면 00:00:01에 실행됩니다.
- http://manpages.ubuntu.com/manpages/xenial/man5/systemd.timer.5.html
- https://jlk.fjfi.cvut.cz/arch/manpages/man/systemd.timer.5
지속=
부울 인수를 사용합니다. true인 경우 서비스 단위가 마지막으로 트리거된 시간이 디스크에 저장됩니다. 타이머가 활성화되면 서비스 장치는 타이머가 비활성화된 시간 동안 적어도 한 번 트리거된 경우 즉시 트리거됩니다. 이는 컴퓨터가 꺼져 있을 때 놓친 서비스 실행을 확인하는 데 유용합니다. 이 설정은 OnCalendar=로 구성된 타이머에만 영향을 미칩니다. 기본값은 거짓입니다.