Systemd
systemd:如何從第一次啟動時自動啟用服務?
我正在使用 systemd 來處理一些任務,並且我有一個服務文件,一旦啟用systemctl就可以正常工作。
現在,我想從第一次啟動時自動啟用它。
我知道將替換文件放入會將
/etc/systemd/system/
具有相同名稱的文件的行為替換為/lib/systemd/system/
.有一種方法可以自動啟用服務文件,只需將其放在某個目錄中?
**重要提示:**以下適用於我在 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
預設#DEBHELPER#
(systemd,真的)沒有線索,除非你有一個[Install]
部分。該包還必須使用
systemd
擴展建構。這意味著在您的debian/rules
文件中包含以下內容:%: dh $@ --with systemd --parallel
那應該讓你做好準備。