정리 스크립트를 사용하여 긴 시스템 원샷 서비스 처리

정리 스크립트를 사용하여 긴 시스템 원샷 서비스 처리

완료하는 데 오랜 시간(예: 몇 시간)이 걸리거나 짧은 시간이 걸릴 수 있는 스크립트를 실행하는 systemd.service가 있고 스크립트가 완료되면 정리 스크립트를 호출해야 합니다. 내 systemd.service 파일은 Type=oneshot.

사용자는 언제든지 서비스를 중지할 수 있지만 그런 다음 정리 스크립트를 호출해야 합니다.

시작 스크립트가 실행되는 동안 서비스가 활성 상태로 간주되기를 원합니다.

현재 정리 스크립트를 넣었는데 ExecStop작동하는 것 같습니다. 그러나 때때로 서비스가 실패하는 것을 볼 수 있으며 시작 스크립트의 지속 시간이 길어서 그럴 수 있다고 생각합니다.

누군가 systemd를 사용하여 이를 달성하는 방법을 이해하도록 도와줄 수 있습니까?

답변1

다음에 지정된 명령에 유의하십시오.실행이 중지됨 =서비스가 처음으로 성공적으로 시작된 경우에만 실행됩니다. 서비스가 전혀 시작된 적이 없거나 시작에 실패한 경우(예: ExecStart=, ExecStartPre= 또는 ExecStartPost=에 지정된 명령이 실패했기 때문에) 호출되지 않습니다("-" 접두사가 붙지 않았습니다. 위 참조). ) 또는 시간이 초과되었습니다.서비스가 올바르게 시작되지 않고 다시 종료되면 ExecStopPost=와 함께 명령이 호출됩니다.

실행이 중지된 후=

서비스가 중지된 후 실행할 추가 명령입니다. [...] 이 설정은 서비스가 올바르게 시작되지 않는 경우에도 수행해야 하는 정리 작업에 권장됩니다.

내 생각엔 당신이 그것을 사용하고 싶어하는 것 같아요 ExecStopPost=.

관련 정보