Як налагодити початкову роботу?


10

У мене є така робота в /etc/init/collector:

start on runlevel [2345]
stop on runlevel [!2345]

expect daemon

exec /usr/bin/twistd -y /path/to/my/tac/file

Коли я починаю роботу sudo service collector start, вона зависає. Якщо я ctrl-cбіжу initctl list, я бачу це:

collector start/killed, process 616

Я не бачу примірника twistdдемона в ps, і HTTP-сервер, який він повинен надавати, не існує.

Я навіть спробував це без "очікувати демон" і з простим викликом однолінійного сценарію bash за допомогою scriptстрофи, і це все ще не працює. Я думаю, що роблю щось дуже неправильно. Що це може бути?


Немає відповіді, але я борюся з подібним питанням. Це може бути навіть помилка в Upstart: bugs.launchpad.net/ubuntu/+source/upstart/+bug/438313 Я не знаю, як вийти з цього висячого стану, крім перезавантаження. Також я вважаю, що це пов'язано з expect daemonлінією.
шкода

Відповіді:


14

Ви можете перенаправляти stdoutта stderrцілу оболонку, використовуючи scriptпрагму (замість exec) разом із exec >FILE 2>&1таким чином:

script
    exec >/path/to/some_log_file 2>&1
    exec your_command_here
end script

Це, сподіваємось, може краще зрозуміти, що відбувається. Я вважаю це корисним для вирішення всіляких проблем у своїх початкових сценаріях. Ви можете передавати stdout/ stderrбезпосередньо свою команду , але ви пропустите помилки, що виникають у оболонці (як синтаксичні помилки).

З іншого боку, якщо serviceвисить, це може навіть не вдарити по вашому сценарію, і в цьому випадку, звичайно, нічого з цього не допоможе.


Дякую, це поставило мене на правильний шлях. Врешті-решт я проклав вихід logger, щоб я міг просто хвостиком /var/log/syslog.
Цера

Крім того, помилки в самому файлі conf відображаються в dmesg. Я дізнався це після того, як я не отримав жодного результату при використанні вищевказаного. Я вводив помилку в директиву про chdir.
кодуванняFoo

Куди ви кладете цей код?
кев

2

Тут також є console logдекларативний, як визначено тут: http://upstart.ubuntu.com/cookbook/#console-log

Я не знаю достатньо про початковий старт, щоб знати, чи він увімкнено за замовчуванням, але ви можете ввімкнути його на основі завдання на початку роботи, воно за замовчуванням буде /var/log/upstart/<job>.log


0

Перевірте існування директора для запуску та додайте журнал консолі до фази сценарію. (у версії upstart верхня, ніж 1.4, це за замовчуванням)

консольний журнал

сценарій exec> / шлях / до / some_log_file 2> & 1 exec your_command_here end script

Для отримання додаткової інформації перевірити посилання: /ubuntu/207143/how-to-diagnose-upstart-errors/932155#932155

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.