임베디드 Linux를 실행하는 장치를 부팅하는 데 문제가 있습니다. 내 시스템 서비스는 일부 파티션이 마운트되기 전에 실행되는데 이는 허용되지 않습니다.
설치 목록을 나열 systemctl list-units --type=mount
하고 .mount 파일을 살펴보았습니다.
내 시스템 서비스 파일에서 이제 해당 서비스가 설치될 때까지 기다리도록 수정했습니다. 예를 들어, 내 마운트는 opt-abc.mount
둘 다 사용하고 있으며 마운트되기를 기다리고 있습니다.opt-def.mount
After
Requires
그러나 이 목표를 달성하는 최선의 방법에 대해서는 다양한 의견이 있습니다. RequiresMountsFor=
, 자동 설치가 아니기 때문에 이 옵션을 사용하지 않는 것이 좋습니다.
이에 대한 도움이나 경험이 있으면 크게 감사하겠습니다.
내 서비스 파일의 단위 섹션은 이제 다음과 같습니다.
[Unit]
Description=My service
After=opt-abc.mount
After=opt-def.mount
Requires=opt-abc.mount
Requires=opt-def.mount
답변1
먼저 After= 및 Requires= 모두 공백으로 구분된 셀 목록을 가져옵니다. 따라서 여러 작업이 필요하지 않습니다(더욱 그러하며 의도하지 않은 결과가 발생할 수 있다고 생각합니다).
다음으로 After=와 Requires=의 차이점입니다. 확인 해봐https://www.freedesktop.org/software/systemd/man/systemd.unit.html수동. 간단히 말해서, Requires=는 종속성을 구축하는 데 사용됩니다. After=는 실행 순서입니다.
나는 After=만 필요하다고 생각합니다. 탑재 대상은 fstab 또는 다른 것에 의해 생성되었을 수 있다는 점을 명심하세요. Requires=에서 생성된 단위를 사용하는 것은 나쁜 습관인 것 같습니다.