시스템 타이머 장치를 비활성화하는 올바른 방법은 무엇입니까?


18

cron 작업 중 일부를 systemd로 마이그레이션했습니다. 나는 몇 가지 지침을 따르고 3 개의 파일을 만드는 표준 접근 방식을 취했습니다.

myjob.timer - systemd timer unit
myjob.service - systemd service unit
myjob.sh

짐작할 수 있듯이 특정 시간에 myjob.timer가 트리거되면 myjob.service가 실행되어 myjob.sh가 실행됩니다.

나는 모든 타이머에 대해 동일한 설정을 가지고 있으며 모든 것이 올바르게 작동하는 것을 보았으므로 테스터 인 myjob.timer를 비활성화하고 싶습니다.

방금합니까 :

systemctl --user disable myjob.timer

또는 나는 또한해야합니까?

systemctl --user disable myjob.service

올바른 일이 무엇입니까? 나는 체계적으로 익숙하지 않아서 올바른 방법으로 물건을 만드는 법을 배우고 싶습니다. 초과 수하물이 없도록 시스템을 유지하기 위해 두 장치를 모두 비활성화하는 것이 옳습니다.

답변:


18

경우 myjob.service에는 포함되지 않은 [Install]블록을, 다음은 타이머를 해제하기에 충분하다. 타이머는 .service파일을 시작하는 유일한 방법 이므로 .timer비활성화하면 .service파일 이 시작되지 않습니다 .

또한 실행하는 것을 잊지 마십시오 systemctl --user stop myjob.timer. 타이머를 비활성화 하면 다음 부팅시 타이머가 시작되지 않지만 현재 실행중인 타이머 는 중지 되지 않습니다 .


각 타이머 장치에 [Install] 블록이 있습니다. 'WantedBy = default.target'이라는 하나의 항목이 있습니다. 내가 따르는 가이드에서 이것을 얻었습니다. [Install] 블록을 모두 제거 할 수 있습니까?
bitofagoob

1
확인. [Install] 섹션에 대해 읽었으며 WantedBy = default.target은 활성화 된 경우 정상적인 부팅 세션 (다중 사용자 또는 그래픽) 동안 장치가 활성화되도록하기위한 것입니다. Mark Stosberg의 조언을 받아 타이머 장치 만 비활성화합니다. 또한 그의 대답을 해결책으로 표시 할 것입니다. 건배 마크!
bitofagoob

2
부팅시 시작되도록 타이머 장치의 [설치] 섹션을 원합니다. 일반적으로 WantedBy=timers.target. 부팅 할 때 서비스 를 시작 [Install]하려면 서비스 섹션 만 필요합니다 .이 경우 원하지 않는 것처럼 들립니다 .
Mark Stosberg

1
감사. 서비스 유닛에서 [Install] 섹션을 제거하고 타이머의 [Install] 섹션을 WantedBy = timers.target으로 변경했습니다.
bitofagoob
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.