私はOSMCからシステムサービスとしてTransmission-daemonを実行しています。再起動後にリモートコントロールWebインターフェイスを開くと、ほとんど常に「エラー:データが見つかりません!ドライブが接続されていることを確認してください[...]」というメッセージで、すべての転送が停止します。
/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.
ときに表示される結果です。次に再起動するまでミュートします。transmission
daemon-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]
ますが、ファイルの上書きには機能しないようです。)
次の2つのコマンドを使用して手動で生成します。
$ 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
この問題を解決する必要があります。
提案された質問テキストから転送ダウンロードを保存するためにのみ使用されるため、これら3つのマウントをリストした理由は不明です/media/Elements
。もしそうなら、他の2つを削除し、「要素への参照を維持することができます。」1。
(ノート:投稿する前にテストしたことはありませんが、これがうまくいくと確信しています。何らかの理由で問題が解決しない場合は、詳細をメッセージでお送りください。問題を解決するために最善を尽くしてください。 )