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

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работают нормально с запуском, остановкой и перезапуском.

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

Jasarien
источник
Это может быть глупый вопрос, но ... не должен быть ваш сценарий /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. Если есть синтаксическая ошибка, она появится там. Именно поэтому вы не можете использовать новую конфигурацию выскочки.

rcomblen
источник
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, хотя ...

Jasarien
источник
2
Потому что я добавил конец скриптового раздела. Встроенное (интеллектуальное) автоматическое завершение кода. :(
Горан Мискович
Я столкнулся с той же проблемой, но яростно ничего не появляется в / var / log и initctl reload-configuration --verbose молчит.
Нил МакГилл
4

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

author ""

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

# initctl reload-configuration

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

int_ua
источник
3

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

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

Kristi
источник