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つの方法で起動時にサービスを開始してみました。
- からファイルへの
/usr/lib/systemd/systemd
ソフトリンクを作成し/etc/systemd/system/multi-user.target.wants
(手動でまたはsystemctl enable
コマンドを使用して)、システムを再起動しました。testfile
起動時にサービスが正常に開始されました。 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