サービスが無効になるとリンクが削除されるのはなぜですか? (ファイルはありません)

サービスが無効になるとリンクが削除されるのはなぜですか? (ファイルはありません)

.serviceファイルをに入れてこれを実行したいと思います/etc/systemd/system。私のソース.serviceファイルは/opt/something.service

インストールには2つのオプションがあります。

  • cp /opt/something.service /etc/systemd/system
  • ln -s /opt/something.service /etc/systemd/system

startサービスを操作するenableと、両方の方法が機能します(サービスが正常に動作します)。

ただし、サービスを無効にすると、次の違いがあります。

  • コピーの場合、/etc/systemd/system/something.serviceまだ
  • リンクの場合は/etc/systemd/system/something.service削除されます。

これは意図的に設計されていますか?リンクを介して生成されたサービスを無効にした後は、これだけでは不十分なので、これは非常に迷惑です。enableサービスユニットも再生成する必要があります。

ベストアンサー1

はい、これは意図的に設計されています。

マニュアルページには次のようsystemctl disableに記載されています。

1 つ以上のデバイスを無効にします。これにより、デバイス設定ディレクトリから指定されたデバイスファイルへのすべてのシンボリックリンクが削除され、アクティブ化による変更がキャンセルされます。ただし、これは実際に生成されたシンボリックリンクのみをアクティブにするのではなく、ユニットファイルへのすべてのシンボリックリンク(つまり手動で追加されたシンボリックリンクを含む)を削除します。

これへのリンクは次のとおりです。https://www.freedesktop.org/software/systemd/man/systemctl.html#

systemctl enable理由は説明しませんが、ユニットファイルへのリンクを見つけるため、を使用して作成されたリンクと手動で生成されたリンクを区別できないと推測できます。

linksystemctlのオプションは、systemd検索パス以外のソースファイルへのシンボリックリンクを作成するときに使用する必要があります。また、同じマニュアルページから。

リンクファイル名...

ユニットファイル検索パスにないユニットファイルをユニットファイル検索パスに関連付けます。これには、ユニットファイルの絶対パスが必要です。この効果は無効にしてキャンセルできます。このコマンドの効果は、デバイスファイルがデバイス検索パスに直接インストールされるわけではありませんが、起動やその他のコマンドで使用できることです。

おすすめ記事