Написать systemd-unit для сервиса
Конфигурация службы · Среднее · 30 мин · 170 баллов
Написать systemd-unit для сервиса
На сервере есть готовый демон — скрипт /usr/local/bin/myapp (работает на переднем
плане и слушает порт 9000). Сейчас его приходится запускать руками. Нужно оформить его
как полноценную службу systemd: с автозапуском и перезапуском при падении.
Задача
Создай unit так, чтобы:
- появилась служба
myapp(systemctl status myappеё видит); - служба запускала
/usr/local/bin/myapp, была активна и слушала порт9000; - служба была включена в автозапуск (
enabled) и перезапускалась при падении (Restart=); - демон работал не от root, а от отдельного пользователя (например
myapp).
Подсказки по подходу
- Unit-файлы служб лежат в
/etc/systemd/system/<имя>.service. Минимум секций:[Unit],[Service](ExecStart=,User=,Restart=),[Install](WantedBy=multi-user.target). - После создания/правки unit обязательно
systemctl daemon-reload. ExecStart— абсолютный путь; команда должна работать на переднем плане (systemd сам «демонизирует»).- Проверяй результат по кнопке «Проверить».
Всё нужное уже установлено. Интернет на машине отсутствует — и не понадобится.
Подсказки
Подсказка 1
Создай файл /etc/systemd/system/myapp.service. Структура — три секции: [Unit],
[Service], [Install].
Подсказка 2
Каркас:
[Unit]
Description=My App
After=network.target
[Service]
ExecStart=/usr/local/bin/myapp
User=myapp
Restart=on-failure
[Install]
WantedBy=multi-user.target
ExecStart — абсолютный путь, команда работает на переднем плане.
Подсказка 3
Применить: sudo systemctl daemon-reload, затем sudo systemctl enable --now myapp.
Проверь systemctl status myapp (active), systemctl is-enabled myapp (enabled) и
ss -ltnp | grep :9000.
Поднимет вашу личную эфемерную Linux-ВМ для задания — обычно пара секунд. После работы её можно остановить.