Я добавил новый скрипт в /etc/init/
под названием minecraft.conf
, который содержит скрипт:
start on startup
stop on shutdown
respawn
respawn limit 20 5
script
export HOME="/root"
exec /root/minecraft/start.sh 2>&1 >> /var/log/minecraft.log
end script
post-start script
echo "minecraft started"
Когда я пытаюсь start minecraft
, я получаю ошибку: start: Unknown job: minecraft
initctl list
, и моя работа в Minecraft не указана. Я попытался запустить initctl reload-configuration
, и это не имеет никакого значения.
Другие задания, перечисленные в initctl list
, отлично работают с запуском, остановкой и перезапуском.
Почему выскочка не увидит мой новый сценарий?
Проверьте журналы выгрузки (в /var/log/syslog
) при перезагрузке конфигурации с помощью initctl reload-configuration
. Если есть синтаксическая ошибка, она появится там. Именно поэтому вы не можете использовать новую конфигурацию выскочки.
Простой способ проверить синтаксис скрипта с помощью следующей команды:
init-checkconf -d /etc/init/service_name.conf
Я обнаружил, что даже с действительным файлом Upstart, если файл не существовал, когда сервер загружался в последний раз Я должен перезагрузить сервер для Upstart, чтобы увидеть файл.
Я чувствую себя немного глупо ... Но вот оно:
Я пропустил строфу "конец сценария" с самого конца сценария выскочки ...
post-start script
echo "minecraft started"
должно было быть
post-start script
echo "minecraft started"
end script
Я не уверен, почему это работало для @schkovich без end script
, хотя ...
Возможно, это не относится конкретно, но стоит упомянуть: если вы редактируете файл конфигурации Upstart для работающей службы, запуск restart
НЕ перезагружает конфигурацию. Вы должны запустить stop
и start
, чтобы новые изменения вступили в силу.
В моем случае это было пустое поле author
, например:
author ""
Это сработало только после добавления чего-то в кавычки.
# initctl reload-configuration
также выдавал /etc/init/servicename.conf:2: Expected token
в системный журнал вместо stdout . Слишком занят, чтобы подать отчет об ошибке для умирающего пакета.
Альтернативная команда для новых версий Ubuntu (работает на 18):
systemctl daemon-reload