전송 데몬을 시작하기 전에 USB 드라이브가 마운트될 때까지 기다리시겠습니까?

전송 데몬을 시작하기 전에 USB 드라이브가 마운트될 때까지 기다리시겠습니까?

저는 OSMC에서 시스템 서비스로 Transmission-daemon을 실행하고 있습니다. 재부팅 후 원격 제어 웹 인터페이스를 열면 거의 항상 "오류: 데이터를 찾을 수 없습니다! 드라이브가 연결되어 있는지 확인하세요 [...]"라는 메시지와 함께 모든 전송이 중지됩니다.

/media/Elements/[...]나는 다운로드 경로가 존재하기 전에 전송이 시작되기 때문이라고 가정합니다. 이 경우에는 수동 구성 없이 시스템에 의해 자동으로 마운트되는 USB 드라이브입니다 . 나는 그것을 편집하지 않았습니다 fstab.

뒤쪽에이 답변을 시도해 보세요성공하지 못한 채 이 문제를 해결할 수 있는 다른 방법이 있는지 궁금합니다. 그 답변을 바탕으로 내가 한 일은 다음을 추가하는 것입니다 override.conf.

cat /etc/systemd/system/transmission.service.d/override.conf

[Unit]
After=media-Elements.mount
After=media-Vault\x2013.mount
After=media-Black\x20Mesa.mount

서비스 파일:

$ cat /lib/systemd/system/transmission.service

[Unit]
Description=Transmission BitTorrent Daemon
After=udisks-glue.service

[Service]
User=osmc
Group=osmc
Type=notify
ExecStartPre=/bin/sleep 10
ExecStart=/usr/bin/transmission-daemon -f --log-error --allowed *.*.*.*

[Install]
WantedBy=multi-user.target

시스템 상태:

$ systemctl status transmission

● transmission.service - Transmission BitTorrent Daemon
   Loaded: loaded (/lib/systemd/system/transmission.service; enabled; vendor preset: enabled)
  Drop-In: /etc/systemd/system/transmission.service.d
           └─override.conf
[...]

이야기할 가치가 있는재부팅할 때마다 상태를 확인할 Warning: transmission.service changed on disk. Run 'systemctl daemon-reload' to reload units.때 나타나는 결과입니다. 다음에 재부팅할 때까지 음소거합니다.transmissiondaemon-reload

이 문제관련이 있지만 fstab 마운트와 관련이 있습니다. USB 드라이브를 영구 연결로 취급하고 싶지 않기 때문에 가능하면 fstab 없이 이 문제를 해결하고 싶습니다.


원래 답변을 시도한 후:

$ systemctl cat --no-pager transmission.service
# Warning: transmission.service changed on disk, the version systemd has loaded is outdated.
# This output shows the current version of the unit's original fragment and drop-in files.
# If fragments or drop-ins were added or removed, they are not properly reflected in this output.
# Run 'systemctl daemon-reload' to reload units.
# /lib/systemd/system/transmission.service
[Unit]
Description=Transmission BitTorrent Daemon
After=udisks-glue.service

[Service]
User=osmc
Group=osmc
Type=notify
ExecStartPre=/bin/sleep 10
ExecStart=/usr/bin/transmission-daemon -f --log-error --allowed *.*.*.*

[Install]
WantedBy=multi-user.target

# /etc/systemd/system/transmission.service.d/override.conf

[Unit]
RequiresMountsFor=/media/Elements

[Install]
WantedBy=media-Elements.mount

답변1

편집하다: 첫 번째 방법으로는 예상한 결과를 얻지 못한 것으로 나타났습니다. 파일 덮어쓰기에 관한 부분은 [Install]실제로 작동하지 않고, RequiresMountsFor=fstab에 선언된 마운트에만 적용되는 것 같습니다. 그래서 동일한 효과를 달성하지만 다른 지침을 사용하는 대안을 생각해냈습니다.

/media/Elements볼륨이 마운트되지 않은 상태에서 장치가 부팅되지 않도록 하려면 다음을 사용하십시오.ConditionPathIsMountPoint=지시문은 디렉토리가 마운트되지 않은 경우 장치가 시작되지 않도록 확인하고 방지합니다.

# /etc/systemd/system/transmission.service.d/override.conf

[Unit]
ConditionPathIsMountPoint=/media/Elements

(참고: 이 systemctl edit transmission.service명령을 사용하여 이 오버레이 파일에 대한 편집기를 열 수 있습니다.)

USB가 마운트될 때 부팅을 시작 하려면 장치가 마운트된 디렉토리 transmission.service에 심볼릭 링크를 추가해야 합니다 . .wants/(이상적으로는 섹션에서 처리 [Install]하지만 파일 덮어쓰기에는 작동하지 않는 것 같습니다.)

다음 두 명령을 사용하여 수동으로 생성하십시오.

$ sudo mkdir -p /etc/systemd/system/media-Elements.mount.wants/
$ sudo ln -sf /lib/systemd/system/transmission.service /etc/systemd/system/media-Elements.mount.wants/

일단 설치 /media/Elements하고 전송이 시작되는 것을 지켜보십시오...


원래 답변은 다음과 같습니다.

그래서After=지침은 순서에만 영향을 미칩니다. 두 장치가 모두 시작 대기열에 있는 경우 다른 장치가 완료된 후에 이 장치가 시작되지만 다른 장치의 시작을 트리거하지는 않습니다. 당신은해야합니다Requires=그런 이유로.

하지만 마운트의 경우 좋은 지름길이 있습니다.RequiresMountsFor=, 마운트를 경로로 사용할 수 있습니다.

USB 드라이브가 마운트되면 장치가 부팅되도록 설정할 수도 있습니다. 다음을 사용하여 트리거할 수 있습니다.WantedBy=(자료 섹션) [Install]여기에서 해당 단원을 인용하세요. .mount이를 설정하고 이를 사용하여 systemctl enable"원하는" 관계를 생성한 후 USB 드라이브가 마운트될 때 장치 부팅도 트리거됩니다(부팅 중이 아닌 나중에 수행되는 경우).

함께 넣어보세요:

# /etc/systemd/system/transmission.service.d/override.conf

[Unit]
RequiresMountsFor=/media/Elements "/media/Vault 13" "/media/Black Mesa"

[Install]
WantedBy=media-Elements.mount
WantedBy=media-Vault\x2013.mount
WantedBy=media-Black\x20Mesa.mount

그런 다음 이 장치를 활성화하면 *.mount.wants/디렉토리 아래에 심볼릭 링크가 생성됩니다(정확한 심볼릭 링크 이름이 systemctl enable출력에 인쇄됩니다).

# systemctl enable transmission.service

이 문제를 해결해야 합니다.

제안된 질문 텍스트에서 전송 다운로드를 저장하는 데만 사용되기 때문에 이 세 가지 마운트를 나열한 이유가 명확하지 않습니다 /media/Elements. 그렇다면 다른 두 개를 제거하고 "요소에 대한 참조를 유지할 수 있습니다. " 하나 .

(노트: 게시하기 전에 테스트해 본 적은 없지만 이것이 효과가 있을 것이라고 확신합니다. 어떤 이유로든 문제가 해결되지 않는 경우 자세한 내용을 메시지로 보내주시면 문제 해결을 위해 최선을 다해 도와드리겠습니다. )

관련 정보