一部のタスクを処理するためにsystemdを使用しており、有効にすると正しく動作するサービスファイルがあります。システム制御。
それでは、最初の起動時に自動的に有効にしたいと思います。
代替ファイルを挿入すると、/etc/systemd/system/
ファイルの動作が同じ名前で置き換えられることがわかります/lib/systemd/system/
。
サービスファイルをいくつかのディレクトリに配置して自動的に有効にする方法はありますか?
答え1
重要なヒント:以下はUbuntuの状況に適用されます。 Debian のように動作するはずです。 RPMベースの展開防ぐデフォルトでは自動的に起動しますが、まだ目標に近づくことがあります。
ほとんどの場合インストールするmulti-user.target
取り付け部分では、次のように使用されます。
[Install]
WantedBy=multi-user.target
これはyour-package.postinst
スクリプトが自動的にデーモンを起動することを意味します。
独自のスクリプトがある場合は、your-package.postinst
次のようにDebianヘルパーを含める必要があります。
#!/bin/sh
#DEBHELPER#
...your own script here...
この#DEBHELPER#
モードがないと、パッケージャはデフォルトのコードを追加しないため、デーモンは自動的にアクティブ化および起動されません。追加されたコードはサービスを有効にして開始します。
systemctl enable <service-name>
systemctl start <service-name>
上記のセクションstatic
がないサービスではない場合。[Install]
静的提供を使用するには、特別なコマンドラインを有効にする必要があり、デフォルトでは使用できません。
systemctl add-wants multi-user.target <service-name>
ご覧のとおり、コマンドにセクションがないとmulti-user.target
デフォルト値(実際にはsystemd)が知らない内容が含まれています。#DEBHELPER#
[Install]
修正する:最新バージョンでは、systemd拡張がインストールメカニズムの一部であり、以下はもう必要ありません。 Ubuntuの場合は22.04、おそらく21.10から始まったようです。
また、パッケージは拡張機能を使用してビルドする必要がありますsystemd
。これはdebian/rules
、ファイルに次のコンテンツが含まれていることを意味します。
%:
dh $@ --with systemd --parallel
これはあなたを準備する必要があります。
もし欲しいならいいえ新しくインストールされたサービスを起動したら、次を追加して実際にこれを回避できます。
override_dh_installsystemd:
dh_installsystemd --no-start --no-disable
システム要件に応じて混合して一致させます。
答え2
sudo systemctl enable <service-name>
サービスは起動時にアクティブになります。
http://www.dynacont.net/documentation/linux/Useful_SystemD_commands/便利なコマンドのリストがあります。そして常にとman systemctl
ありますman systemd
。
答え3
使用できるシステムデフォルトデフォルトで有効になっているデバイスの場合。
Systems.presetを使用すると、一連のデバイスを有効/無効にできます。
vendor preset
ではsystemctl status unit
これを指す。
このリンクの使用方法の詳細については、リンクのマニュアルページを参照してください。