
systemd
.service
開始する必要があるスクリプトを作成しています。後ろに/etc/fstab
CIFSネットワークの場所は/mnt/
起動時にマウントされます。
スクリプトはOpenVPN依存関係スクリプトが最初に起動するのを待ちますが、インストールが完了するのを待ちます。
/etc/systemd/system/my-daemon.service:
[Unit]
Description=Launch My Daemon
After=network.target vpn-launch.service
Requires=vpn-launch.service
systemd.mount
行に追加しようとしましたが、After=network.target vpn-launch.service systemd.mount
目的の結果が得られませんでした。
答え1
/etc/fstab
CIFSネットワークの場所は/mnt/
起動時にマウントされます。
まったくそうではありません。これを正しくすれば、残りは所定の位置になります。
マウントはsystemdによって処理されます(生成されます)。設置単位次の名前が付けられますmnt-wibble.mount
。次のコマンドの出力で実際の名前を表示できます。
systemctl list-units --type=mount
他のユニットと同様に詳細を見ることができます。
systemctl status
とても簡単です。インストールデバイスの起動後にデバイスを起動するように指示する必要があります。
After=network.target vpn-launch.service mnt-wibble.mount
追加読書
答え2
どちらの答えも正確ですが、ディスカッションを見つけるときに進む方法に関するいくつかのガイドラインと例がありません。ディスカッションに2セントを追加したかったのです。
- ファイルシステムの追加
/etc/fstab
mount -a
fstabに記載されているすべてのファイルシステムタイプをマウントします。- 生成されたシステムユニットの検索:(
systemctl list-units | grep '/path/to/mount' | awk '{ print $1 }'
で終わる項目を返す必要があります.mount
) - 見つかったマウントユニットをファイル
After=
のステートメントに追加します。*.service
以下は、起動時にサービスを開始する例ですmy-daemon
。ネットワークの準備ができたら、CIFS共有がマウントされ、/mnt/cifs
サービスvpn-launch
が開始されます。
/etc/fstab
//servername/sharename /mnt/cifs cifs defaults,some,other,options 0 0
注:fstabオプションに追加する必要がありますnofail
(たとえば、外付けドライブを使用している場合)。それ以外の場合、デバイスが接続されていないとマシンは起動しません。バラよりArchWikiのfstab記事
/etc/systemd/system/my-daemon.service
[Unit]
Description=Launch My Daemon
Requires=vpn-launch.service mnt-cifs.mount
After=network.target vpn-launch.service mnt-cifs.mount
[Service]
ExecStart=/path/to/my-daemon
[Install]
WantedBy=multi-user.target
起動時にサービスが開始されるようにサービスを有効にすることを忘れないでください。systemctl enable my-daemon
これは他のファイルシステム(NFS、HDDなど)にも当てはまります。
すでに述べたように、両方の答えは正しいので、誰もが読んでください。しかし、私の場合は、いくつかの例で時間を節約できます。
アップデート(2019-06-25):
- 外部ドライブを使用するときのブートロックを防ぐために、fstabオプションに関する注意事項が追加されました。
- 正常にマウントされなかった場合、cifsマウントが開始されない原因リストに
mnt-cifs.mount
追加されました。Requires=
my-daemon.service
答え3
申し訳ありません。まだコメントできません。
JdeBPが述べたように、ファイルシステムのマウントをソートする必要があります。インストールされているデバイスの名前を予測するか(ユニットセクションで)、次を使用できます。
RequiresMountsFor=/absolute/path/of/installation
このオプションは、サービスを開始する前にパスにアクセスできるように、適切な* .mountユニットへの依存関係を作成します。すべてのシステムバージョンで動作するわけではありませんが、過去6ヶ月間CentOS 7システムで使用されてきました。
答え4
@bm-bergmotte: ご指導ありがとうございます。多くの助けになりました。私には私が置く必要があります。
After=network.target vpn-launch.service mnt-cifs.mount
Requires=vpn-launch.service mnt-cifs.mount
「mnt-cifs.mount」を「必要」に対応する順序で入れないと、再起動/起動されますが、デバイスがマウントされていない場合、サービスは引き続き開始されます。デバイスがインストールされていない場合は、さらに「必須」に設定すると、サービスの開始前にデバイスがインストールされます。