프로세스가 아직 완료되지 않은 경우 시스템 타이머 장치가 다음 실행을 건너뛰나요?

프로세스가 아직 완료되지 않은 경우 시스템 타이머 장치가 다음 실행을 건너뛰나요?

systemd를 사용하여 5분마다 명령을 실행하고 싶습니다. 그러나 작업 실행 시간이 때때로 5분을 초과할 위험이 있습니다. 그 시점에서 systemd는 명령의 두 번째 인스턴스를 시작합니까? 즉, 2개의 프로세스를 실행하게 됩니까?

첫 번째 프로세스가 아직 완료되지 않은 경우 systemd에게 두 번째 프로세스를 시작하지 않도록 지시할 수 있습니까? 그렇지 않다면 좋은 해결책은 무엇입니까?

참고: "이것은 기본 동작입니다. 문서화되지 않았습니다."라고 대답하고 싶습니다. 그렇다면 누군가 문서에 버그를 신고하는 방법을 알려줄 수 있습니까?

참고: Cron에도 비슷한 문제가 있습니다.https://unix.stackexchange.com/a/173928/11244. 나는 systemd와 동등한 것을 찾고 있습니다.

답변1

이것이 기본(유일한) 동작입니다. 명시적으로 문서화되지는 않았지만 systemd의 운영 논리에 의해 암시됩니다.

systemd.timer(5)내용은 다음과 같습니다.

각 타이머 파일에는 해당 단위를 설명하는 일치하는 단위 파일이 있어야 합니다.타이머가 만료되면 활성화.

시스템(1)차례로, 단위 상태의 개념과 그 사이의 전환이 설명됩니다.

장치는 "활성"(시작됨, 바인딩됨, 연결됨...을 의미, 장치 유형에 따라 아래 참조) 또는 "비활성"(중지됨, 바인딩 해제됨, 연결 해제됨...을 의미)일 수 있습니다.활성화 또는 비활성화 중에도, 즉 두 상태 사이(이러한 상태를 "활성화" 및 "비활성화"라고 함)입니다.

이는 타이머의 작동으로 인해 일치하는 장치가 "활성화"됩니다. 즉, "활성" 상태로 전환됩니다.

일치하는 단위가 "활성화"되었을 때 이미 "활성"인 경우(서비스 단위의 경우 이는 서비스 단위에 Type=oneshot및 가 없으면 "주 프로세스가 여전히 실행 중"임을 의미함 RemainAfterExit=true) 분명히 아무 조치도 취하지 않습니다.

답변2

방금 테스트해보니 장치가 부팅되는 것 같습니다.마지막 실행이 완료된 후 이전 실행이 아직 완료되지 않은 동안 장치가 시작되도록 예약된 경우. 나는 그 실행을 무시하고 다음 타이머 호출을 기다리기를 원합니다.

관련 정보