.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
理由は説明しませんが、ユニットファイルへのリンクを見つけるため、を使用して作成されたリンクと手動で生成されたリンクを区別できないと推測できます。
link
systemctlのオプションは、systemd検索パス以外のソースファイルへのシンボリックリンクを作成するときに使用する必要があります。また、同じマニュアルページから。
リンクファイル名...
ユニットファイル検索パスにないユニットファイルをユニットファイル検索パスに関連付けます。これには、ユニットファイルの絶対パスが必要です。この効果は無効にしてキャンセルできます。このコマンドの効果は、デバイスファイルがデバイス検索パスに直接インストールされるわけではありませんが、起動やその他のコマンドで使用できることです。