Я пытаюсь загрузить скрипт при загрузке в 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
Thesystemctl
команда делает обратное:
systemctl start foo
Кроме того, в service нельзя добавить «.service», хотя можно, если использовать systemctl.