LINUX.ORG.RU

upstart service


0

0

нужно завернуть самописный руби скрипт в upstart service.

пока что наткнулся на следующее: после запуска команда

start http-log-monitor

не возвращает управление, тоесть скрипт остается работать не уходя в «фон», а какбы дальше что-то «делая».

пробовал запускать скрипт через «exec» и через «script». Ничего не меняется.

Если в конце добавить «&», статус говорит stop/waiting, а процес запускается. что не есть хорошо.

главный loop скрипта основан на «file-tail» gem'e. если чо скрипт не хендлит SIGTERM.

Какие будут советы?

★★★★★

Ответ на: комментарий от Jetty

псто не читай&сразу отвечай

  • start-stop-daemon родом из sysvinit. а я про upstart (и сервисы написанные с помощью его нового синтаксиса)
  • мне не нужно его остановить. «stop http-log-monitor» отрабатывает отлично
  • мне нужно что бы запуск успешно отрабатывал

Как сейчас это все выглядит:

  • печатаю «start http-log-monitor»
  • переключаюсь в другой терминал. делаю «pgrep ruby». оно там уже есть
  • переключаюсь обратно. «start http-log-monitor» все еще выполняется. жму Ctrl+C.
  • переключаюсь снова в другой терминал. делаю «pgrep ruby». оно там еще есть :)
  • переключаюсь обратно. «status http-log-monitor» говорит running/waiting. Все ОК, скрипт работает
  • делаю «stop http-log-monitor». останавливается нормально (можна вводить другие комманды).
  • переключаюсь в другой терминал. делаю «pgrep ruby». его уже нет. как и должно

Какие сейчас будут идеи?

ZuBB ★★★★★
() автор топика
Ответ на: комментарий от Jetty

это я знаю. но стояла задача написать upstart service а не sysvinit

ZuBB ★★★★★
() автор топика
Ответ на: комментарий от ZuBB

>а что более правильно ииспользовать для запуска в моей ситуации: exec или script?

script если нужно несколько действий, exec для запуска чего-то одного.

AptGet ★★★
()
Ответ на: комментарий от AptGet

понял.

еще раз спасибо!

ZuBB ★★★★★
() автор топика
Ответ на: комментарий от Jetty

я тоже так думал. а как узнал что 6й РХ переехал на апстарт - перестал думать. что будет в продакшене то и будем юзать. тем более сейчас systemd шагает по планете

ZuBB ★★★★★
() автор топика
Ответ на: комментарий от AptGet

Ем... есть еще вопрос

Автоматом не стартует. Гуглеж сказал что никаких «rc-update add my_super_service default» не нужно. просто 'chmod +x'. в мане initctl ничего интересного нету

Ручной старт работает нормально

ZuBB ★★★★★
() автор топика
Ответ на: комментарий от ZuBB

Можно сделать «initctl log-priority debug», перезапустить апач и в системном логе посмотреть, какие ивенты генерируются.

AptGet ★★★
()

тоесть скрипт остается работать не уходя в «фон», а какбы дальше что-то «делая».

Скорее всего upstart ожидает, что твой скрипт сам форкнется и уйдёт «в фон».

Deleted
()
Ответ на: комментарий от Deleted

это уже решено. читаем. вьіше

ZuBB ★★★★★
() автор топика
Ответ на: комментарий от AptGet

спасибо за советы. завтра приду на работу и проверю

ZuBB ★★★★★
() автор топика
Ответ на: комментарий от AptGet

Да, стартует.

это может быть както связано с тем что апач сервис старого типа, а мой нового?

ZuBB ★★★★★
() автор топика
Ответ на: комментарий от AptGet

смотрел в /var/log/{syslog,boot*,kernel}. ничего..

или я не там смотрю, или оно не той файл пишет

ZuBB ★★★★★
() автор топика
Ответ на: комментарий от AptGet

в 11.10 такого нету

on newer Ubuntu systems such as Ubuntu Natty (11.04), the output will be in file /var/log/syslog.

ZuBB ★★★★★
() автор топика
Ответ на: комментарий от AptGet

root@vv-Latitude-E5520:/etc/init# initctl check-config http-log-monitor 
http-log-monitor
  start on: unknown job apache2
  stop on: unknown job apache2
root@vv-Latitude-E5520:/etc/init# 

думаю копать нуно сюда. менять apache2 на apache или httpd не помогает

ZuBB ★★★★★
() автор топика
Ответ на: комментарий от ZuBB

и в тоже время интересно почему если вьіполнить «initctl emit started JOB=apache2» то стартует..

ZuBB ★★★★★
() автор топика
Ответ на: комментарий от ZuBB

>думаю копать нуно сюда. менять apache2 на apache или httpd не помогает

Да, SysV скрипты не генерируют ивенты. можно использовать ивент который генерирует rc.conf: «start on started rc RUNLEVEL=[1234]» и/или использовать проверки в престарте. Это не очень удобно.

AptGet ★★★
()
Ответ на: комментарий от AptGet

да но это все костыли :)

есть идеи почему после запуска «initctl emit started JOB=apache2» мои сервисы стартуют?

кстати если вместо apache2 использовать apache тоже все ок

ZuBB ★★★★★
() автор топика
Ответ на: комментарий от ZuBB

>есть идеи почему после запуска «initctl emit started JOB=apache2» мои сервисы стартуют?

Ну это генерация ивента вручную:) апстартовские скрипты генерируют такие ивенты.

AptGet ★★★
()
Ответ на: комментарий от AptGet

кароче кина не будет с «start on started apache2». будем юзать start on started rc RUNLEVEL=[1234]

ZuBB ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.