systemdでサービスを開始する

systemdでサービスを開始する

systemdサービスファイルをに配置しましたusr/lib/systemd/system/testfile.service。サービスファイルは次のとおりです。

[Unit]
Description=Test service

[Service]
Type=notify

ExecStart=/bin/dd.sh

ExecReload=/bin/kill -HUP $MAINPID

KillMode=process

Restart=on-failure

RestartSec=30s

[Install]

WantedBy=multi-user.target

2つの方法で起動時にサービスを開始してみました。

  1. からファイルへの/usr/lib/systemd/systemdソフトリンクを作成し/etc/systemd/system/multi-user.target.wants(手動でまたはsystemctl enableコマンドを使用して)、システムを再起動しました。testfile起動時にサービスが正常に開始されました。
  2. After=testfile.serviceなどの既存の実行サービスファイルに依存関係を作成してからシステムをWants=testfile.service再起動すると、testfileサービスは正常に起動します。

ところで、上記の1、2回の方法を使わずにファイルを配置すると/usr/lib/systemd/systemサービスは開始されません。サービスファイルを配置するだけで、/usr/lib/systemd/system/Wantsディレクトリへのソフトリンクを作成したり、他のサービスとの依存関係を作成したりすることなく、すべてのサービスが自動的に起動できると思います。

上記の方法1または2を使用せずに、起動時に/usr/lib/systemd/systemディレクトリ内のサービスをどのように起動できますか?

また、一部のサービスを無効にして有効にするプリセットファイルを作成しましたが、usr/lib/systemd/system-preset/これらのプリセットファイルは実行されていないようです。プリセットファイルで無効にしたサービスは、起動後も引き続き有効になります。この問題をデバッグする方法を教えてください。

答え1

ユニットファイルを配置するときに/usr/lib/systemd/system簡単に追加するだけです。図書館システムで使用できるデバイスの数。しかし、システムに実行を指示しませんでした。

一般的にsystemctl enable myservice。これにより、手動で作成されたシンボリックリンクが効果的に生成されます。

起動時に起動するデバイスを起動プロセスに通知するのがこのリンクです。

以前の形式に慣れている場合は、initそれにファイルを入れるのと同じと考えることができます/etc/init.d/etc/rc3.d/S##myserviceリンクを追加しないと、起動時に開始されません。

場合によっては、他のサービスがサービスに依存する可能性があり、これが開始を引き起こしますが、サービスに依存するサービスがない場合systemctl enable

答え2

保存する必要がありますカスタム単位ファイルはにあります。ファイルを作成したら、必要なシンボリックリンクを作成することで/etc/systemd/system/有効にする必要があります。systemctl enable name

関連情報