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


27

Я добавил новый скрипт для /etc/init/named, 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работают нормально с запуском, остановкой и перезапуском.

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



Это может быть глупый вопрос, но ... не должен быть ваш сценарий /etc/init.d/?
Вулфер

@ спасибо, но я уже прочитал это, и у меня все еще есть проблема.
Jasarien

@Wolfer, согласно руководству по началу работы с upstart, гласит: «Когда все будет хорошо, поместите файлы, /etc/initи теперь вы готовы к перезагрузке и использованию upstart».
Jasarien

Я пытался воспроизвести проблему, но безуспешно. Я скопировал, вставил ваш код в /etc/init/minecraft.conf и выдал sudo start minecraftбез проблем. Вот содержимое файла журнала. ~$ sudo cat /var/log/upstart/minecraft.log minecraft started /proc/self/fd/9: 3: exec: /root/minecraft/start.sh: not found minecraft startedМожете ли вы предоставить более подробную информацию о используемой версии Ubuntu и любую полезную информацию из системного журнала?
Горан Мискович

Ответы:


12

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


11

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

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

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


9

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

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

post-start script
   echo "minecraft started"

должно было

post-start script
   echo "minecraft started"
end script

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


2
Потому что я добавил конец скриптового раздела. Встроенное (интеллектуальное) автоматическое завершение кода. :(
Горан Мискович

Я столкнулся с той же проблемой, но яростно ничего не появляется в / var / log и initctl reload-configuration --verbose молчит.
Нил МакГилл

4

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

author ""

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

# initctl reload-configuration

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


3

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

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.