私はまだsystemdに慣れていて、何かに遭遇しました。それはそれほど問題ではありませんが、私はこれがどのようにあるかについてもっと知りたいです。他の場所でこれへの参照を見つけることができませんでした。
まず、サービスのカスタムユニットファイルをに入れる必要があることを理解しています/etc/systemd/system
。ただし、ユニットファイルを他の場所に置くことができれば、サーバーの管理には便利です。
ドキュメントでは、ユニットファイルを次のように「リンク」できることがわかりました。
systemctl link /path/to/servicename.service
これにより、上の上記へのリンクが作成され/etc/systemd/system
ます。これで、このサービスを開始/停止できます。表面的には、これはサービスを管理するための良い方法のように思えました。
ただし、このような「リンクされた」ユニットファイルを有効にしようとすると、失敗します。
root@test1:/etc/systemd/system# systemctl link /root/myservice.service
Created symlink from /etc/systemd/system/myservice.service to /root/myservice.service.
root@test1:/etc/systemd/system# systemctl status myservice.service
* myservice.service - My Test Service
Loaded: loaded (/root/myservice.service; linked; vendor preset: enabled)
root@test1:/etc/systemd/system# systemctl enable myservice.service
Failed to execute operation: No such file or directory
まったく同じユニットファイルを使用しますが、/etc/systemd/system
リンクではなくにコピーすると、次のようになります。
root@test1:/etc/systemd/system# cp -p /root/myservice.service .
root@test1:/etc/systemd/system# systemctl daemon-reload
root@test1:/etc/systemd/system# systemctl status myservice.service
* myservice.service - My Test Service
Loaded: loaded (/etc/systemd/system/myservice.service; disabled; vendor preset: enabled)
root@test1:/etc/systemd/system# systemctl enable myservice.service
Created symlink from /etc/systemd/system/multi-user.target.wants/myservice.service to /etc/systemd/system/myservice.service.
このことから、リンクされたユニットファイルをシステムの起動時に呼び出せるようにすることはできないようです。
これが事実である場合、「リンク」機能のポイントは何ですか?ドキュメントから、それは言う:
ファイル名をリンク
ユニットファイル検索パスにないユニットファイルをユニットファイル検索パスにリンクします。これには、ユニットファイルへの絶対パスが必要です。この効果は、無効にすると元に戻すことができます。このコマンドの効果は、ユニット検索パスに直接インストールされていなくても、ユニットファイルを起動およびその他のコマンドで使用できることです。
systemctl enable
も実行systemctl link
するので、2つのコマンドを入力する必要がないことに注意してください;-)