LINUX.ORG.RU

Systemd unit не запускается автоматически при загрузке системы

 


0

1

Установил TorrServer. Он в процессе установки создаёт юнит следующего содержания:

[Unit]
Description = TorrServer - stream torrent to http
Wants = network-online.target
After = network.target

[Service]
User = torrserver
Group = torrserver
Type = simple
NonBlocking = true
EnvironmentFile = /opt/torrserver/torrserver.config
ExecStart = /opt/torrserver/TorrServer-linux-amd64 $DAEMON_OPTIONS
ExecReload = /bin/kill -HUP ${MAINPID}
ExecStop = /bin/kill -INT ${MAINPID}
TimeoutSec = 30
#WorkingDirectory = /opt/torrserver
Restart = on-failure
RestartSec = 5s
#LimitNOFILE = 4096

[Install]
WantedBy = multi-user.target

После перезагрузки служба автоматически не стартует:

systemctl status torrserver
○ torrserver.service - TorrServer - stream torrent to http
     Loaded: loaded (/etc/systemd/system/torrserver.service; enabled; preset: disabled)
     Active: inactive (dead)

И в журнал выдаёт torrserver.service: Failed to open /etc/systemd/system/torrserver.service: No such file or directory

По команде systemctl start torrserver запускается штатно.

Как сделать чтобы юнит стартовал автоматически при запуске системы?

Перемещено Dimez из talks



Последнее исправление: iKido (всего исправлений: 2)
Ответ на: комментарий от Zlogene

Хм. В журнал выдаёт torrserver.service: Failed to open /etc/systemd/system/torrserver.service: No such file or directory

При этом cat /etc/systemd/system/torrserver.service

[Unit]
Description = TorrServer - stream torrent to http
Wants = network-online.target
After = network.target

[Service]
User = torrserver
Group = torrserver
Type = simple
NonBlocking = true
EnvironmentFile = /opt/torrserver/torrserver.config
ExecStart = /opt/torrserver/TorrServer-linux-amd64 $DAEMON_OPTIONS
ExecReload = /bin/kill -HUP ${MAINPID}
ExecStop = /bin/kill -INT ${MAINPID}
TimeoutSec = 30
#WorkingDirectory = /opt/torrserver
Restart = on-failure
RestartSec = 5s
#LimitNOFILE = 4096

[Install]
WantedBy = multi-user.target
iKido
() автор топика
Ответ на: комментарий от iKido

Так ты выполнил команду `systemctl start torrserver` или нет?
И ещё, Talks это не место для технических вопросов. Надо было в General тему открывать. В толксах тебе сейчас в панамку насуют и будешь потом на форум обижаться, что тут одни тролли и не помогают.

imul ★★★★★
()
Последнее исправление: imul (всего исправлений: 2)

Классический ЛОР.

Афтар:

torrserver.service; enabled; preset:

Первый же эгсперд:

systemctl enable torrserver?

АФФТАР:

Написал же, что вручную запускается. systemctl start torrserver выполнил. Перезагружаешься и сама служба не стартует, хотя enabled

Ну вроде очевидно, в чем проблема? Сервис стартует в неподходящих условиях, которые магически становятся подходящими позже, после загрузки системы. Сервис сетевой. И чего бы такого ему могло не хватать при старте системы?

ОТВЕТ ЛОР:

Ну вот не исключено что selinux.

В принципе, даже не подкопаешься. Не исключено!

А поближе к реальности ничего нет?

usermod
()
Ответ на: комментарий от usermod

Я в этом systemd не очень понимаю, но вроде как вот этот блок отвечает за то, чтобы стартовало вовремя, после поднятия сетевых служб

Wants = network-online.target
After = network.target
iKido
() автор топика
Ответ на: комментарий от iKido

Хороший вопрос, с пониманием.

Нет. Подъем сети процесс долгий и многофакторный, поэтому сервис будет стартовать сразу после старта хоть чего-то сетевого, например, локалхоста. А сервис может требовать конкретный интерфейс с конкретным адресом или вообще работоспособную сеть с роутингом и файрволом, если он сам подключается к внешнему серверу.

usermod
()

Вангую, он пытается стартовать, когда network-online вроде как уже есть, а реально подключения не к локалке, а к интернету ещё нет. Чисто для теста попробуй ему перед стартом поставить ожидание секунд в 10. Если поможет, чини network-online, или пингуй какой-нибудь там ya.ru для проверки подключения «наверняка»

А ещё меня вот это смущает немного: ExecStart = /opt/torrserver/TorrServer-linux-amd64 $DAEMON_OPTIONS

Вот это DAEMON_OPTIONS где задаётся?

CrX ★★★★★
()
Последнее исправление: CrX (всего исправлений: 1)
Ответ на: комментарий от xgatron

/opt замонтирован как сабвольюм. сузя сама разбила системный диск как ей захотелось (btrfs), я ей не мешал.

iKido
() автор топика
Последнее исправление: iKido (всего исправлений: 1)
Ответ на: комментарий от iKido

тогда

  1. симлинк /etc/systemd/system/torrserver.service удалить
  2. /opt/torrserver/torrserver.service копировать в /etc/systemd/system/torrserver.service
  3. в новый /etc/systemd/system/torrserver.service в [Install] дописать что-то типа Requires=opt.mount и After=opt.mount
  4. сделать daemon-reload и еще раз enable на torrserver

Насчет opt.mount не уверен, но по идее юнит должен называться так

Или убрать сабвольюм с /opt, чтобы все лежало на корневом.
Или возможно там где-то есть настройка, где можно указать какие сабвольюмы должны быть смонтированы до запуска всех сервисов

xgatron
()
Последнее исправление: xgatron (всего исправлений: 1)
Ответ на: комментарий от xgatron

симлинк /etc/systemd/system/torrserver.service удалить

/opt/torrserver/torrserver.service копировать в /etc/systemd/system/torrserver.service

А вот это помогло, спасибо. Что-то с этим симлинком было не так. Сомневаюсь, что /opt на момент старта ещё не был замонтирован.Судя по выхлопу systemd-analyze blame 23ms opt.mount

iKido
() автор топика
Последнее исправление: iKido (всего исправлений: 1)
Ответ на: комментарий от iKido

Было такое.

Одно время любил собирать все файлы в опт и в том числе оттуда делать симлинк в /etc/systemd/system

Но в какой то момент увидел странную ошибку от systemd что то типа too many recursive links и оставил эту практику.

usermod
()
Ответ на: комментарий от iKido

Судя по выхлопу systemd-analyze blame

тогда уж systemd-analyze plot. Насколько помню, blame не показывает порядок запуска.
Вероятно systemd начинает вычитывать юниты когда вообще смонтирован только /, а запуск начинает уже после local-fs.target, тогда зависимость от маунта не нужна, но и симлинки на другие разделы работать не будут

xgatron
()
Ответ на: комментарий от PeleWin

Ну там-то ошибок не было.

Я пропустил сообщение

Failed to open /etc/systemd/system/torrserver.service: No such file or directory

Подумал, что он единичное. Да и не могло его быть в журнале конкретного сервиса, как написано.

usermod
()
Ответ на: комментарий от pfg

Оно того не стоит. :)

Я просто писал-налаживал очередную программу и хотел, чтобы в репе были самые последние версии всего - кода, конфигов, юнит-файлов и пр. И постоянно приходилось копировать актуальные файлы конфигов обратно в директорию с программой т естественно нет нет да и забудешь.

usermod
()