我正在嘗試在 Ubuntu Server 18.04 中啟動時載入腳本。我的.service
腳本安裝在 中/etc/systemd/system
,我可以運行:
service my-service start
和:
service my-service stop
但是當我嘗試在啟動時運行(根據網路我應該這樣做):
service my-service enable
系統響應:
my-service: unrecognised service
搜尋網路只告訴我如何在舊版本的 Ubuntu 中執行此操作,不適用於 18.04,我無法確定正確的術語來找到答案。
劇本:
# filename: /etc/systemd/system/my-service.service
[Unit]
Description=My Service
After=network.target
After=mysqld.service
[Service]
User=the-user
WorkingDirectory=/home/the-user/path-to-script
ExecStart=/home/the-user/path-to-script/start.sh
SuccessExitStatus=0
TimeoutStopSec=10
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
我的問題是:我做錯了什麼?我怎麼能在開機時啟動這個服務?
答案1
使用真正的命令,它systemd
是:
sudo systemctl enable my-service
作為參考,如果您希望單元檔案為普通使用者(例如您自己的使用者)執行,則不必使用單元檔案的主系統目錄。您可以在目錄中建立它,例如:
~/.config/systemd/user/
然後你可以這樣做:
systemctl --user enable my-service
這避免了需要sudo
正如您在評論中指出的那樣,在運行systemd
該User
指令的每個用戶實例時應該不存在
答案2
筆記:
在其他情況下,您會遇到相同的錯誤:
該service
命令將目的第一的 !
service foo start
這systemctl
指令執行相反的操作:
systemctl start foo
另外,在service中,你不能加上“.service”,而如果你使用systemctl則可以。