Почему мой systemd сервис сразу закрывается после выполнения?

Я создал простой сценарий для выполнения четырех других команд. Мне определили местоположение его в/usr/local/bin/lbrystartup.sh, и это содержит следующее:

#!/bin/bash

#Start web scripts

screen -dmS main /var/www/html/main.sh
screen -dmS loop2 /var/www/html/loop2.sh
screen -dmS blocks /var/www/html/blocks.sh
screen -dmS lbry /var/stratum/run.sh lbry

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

Затем, я создал сервис для systemd для работы запуска.

coinscripts.service похож на это:

[Unit]

Description = Coinscripts daemon
After network.target = auditd.service

[Service]

type=Simple
ExecStart =/usr/local/bin/lbrystartup.sh

[Install]

WantedBy = multi-user.target

Я включил сервис, и это успешно при этом. Однако, когда я работаю, сервис с "sudo systemctl запускают coinscripts", экранные экземпляры не открываются. Но, когда я использую systemctl состояние coinscripts, я получаю следующее:

● coinscripts.service - Загруженный демон Coinscripts: загруженный (/etc/systemd/system/coinscripts.service; включенный; президент поставщика
Активный: неактивные (мертвые) с тех пор пятница 30.06.2017 21:59:10 PDT; 1 минута 3 с назад Процесс: 1 050 ExecStart =/usr/local/bin/lbrystartup.sh (code=exited, status=0/S Основной PID: 1050 (code=exited, status=0/SUCCESS)

30 июня 21:59:10 ubuntu systemd [1]: Запущенный демон Coinscripts.

То же происходит, когда я перезапускаю машину.

Что я делаю неправильно с сервисным сценарием? Я использую Ubuntu 16.04

1
задан 1 July 2017 в 08:03

1 ответ

У Вас все еще есть эта проблема? Это - больше комментария, чем ответ, но у меня, по-видимому, нет достаточного количества точек или безотносительно прокомментировать...

У меня есть несколько связанная проблема о 18,04. Вы находитесь на 16,04?

Я замечаю, что у Вас есть ошибка в Вашем После = раздел. должен быть:

After=network.target auditd.service

Не уверенный Вам действительно нужен auditd.service там, но я думаю, что он должен быть в порядке. Кроме того, Вы имеете:

type=Simple

которым я верю потребностям быть:

Type=simple

Строка ExecStart может также иметь проблему с, равняется знаку (попытайтесь удалить предыдущее пространство), но я не уверен, как systemd обрабатывает пробелы, так, чтобы мог быть прекрасным.

Наконец, я думаю, что можно хотеть, чтобы это было Type=forking, так как Вы называете дочерний процесс на экране, который не выйдет после завершения.

Править:

Я также просто понял, что Вы не используете полные пути в своем сценарии (т.е./usr/bin/program вместо просто программы). Попробуйте это также.

Я также хотел бы добавить предложение для использования tmux вместо экрана. По моему опыту, экран не очень устойчив и часто отказывает, и tmux является намного лучшей реализацией того же сервиса. Команды отличаются хотя, таким образом читайте на тех, если Вы действительно решаете попробовать его.

0
ответ дан 8 December 2019 в 04:50

Другие вопросы по тегам:

Похожие вопросы: