我正在尝试在 Ubuntu Server 18.04 中启动时加载脚本。我的.service
脚本安装在 中/etc/systemd/system
,我可以运行:
service my-service start
和:
service my-service stop
但是当我尝试在启动时运行(根据网络我应该这样做)时:
service my-service enable
系统响应:
my-service: unrecognised service
在网上搜索只能告诉我如何在不适用于 18.04 的旧版本的 Ubuntu 中执行此操作,而且我无法确定正确的术语来找到答案。
剧本:
# 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”,但如果您使用 systemctl 则可以。