Выскочка не видит мой новый скрипт

Я добавил новый скрипт в /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

[ 1110] Я попытался запустить initctl list, и моя работа в Minecraft не указана. Я попытался запустить initctl reload-configuration, и это не имеет никакого значения.

Другие задания, перечисленные в initctl list, отлично работают с запуском, остановкой и перезапуском.

Почему выскочка не увидит мой новый сценарий?

27
задан 24 January 2013 в 19:20

6 ответов

Проверьте журналы выгрузки (в /var/log/syslog) при перезагрузке конфигурации с помощью initctl reload-configuration. Если есть синтаксическая ошибка, она появится там. Именно поэтому вы не можете использовать новую конфигурацию выскочки.

0
ответ дан 24 January 2013 в 19:20

Простой способ проверить синтаксис скрипта с помощью следующей команды:

init-checkconf -d /etc/init/service_name.conf

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

0
ответ дан 24 January 2013 в 19:20

Я чувствую себя немного глупо ... Но вот оно:

Я пропустил строфу "конец сценария" с самого конца сценария выскочки ...

post-start script
   echo "minecraft started"

должно было быть

post-start script
   echo "minecraft started"
end script

Я не уверен, почему это работало для @schkovich без end script, хотя ...

0
ответ дан 24 January 2013 в 19:20

Возможно, это не относится конкретно, но стоит упомянуть: если вы редактируете файл конфигурации Upstart для работающей службы, запуск restart НЕ перезагружает конфигурацию. Вы должны запустить stop и start, чтобы новые изменения вступили в силу.

http://upstart.ubuntu.com/cookbook/#restart

0
ответ дан 24 January 2013 в 19:20

В моем случае это было пустое поле author, например:

author ""

Это сработало только после добавления чего-то в кавычки.

# initctl reload-configuration

также выдавал /etc/init/servicename.conf:2: Expected token в системный журнал вместо stdout . Слишком занят, чтобы подать отчет об ошибке для умирающего пакета.

0
ответ дан 24 January 2013 в 19:20

Альтернативная команда для новых версий Ubuntu (работает на 18):

systemctl daemon-reload
1
ответ дан 16 December 2019 в 09:17

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

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