LINUX.ORG.RU

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

Спасибо попробуем, я пытался через cron, но не вышло

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

init сам будет мониторить и рестартовать процесс
надо добавить нечто вроде такого:
somelabel:2345:respawn:/path/to/script.sh

zolden ★★★★★
()

А чё за дистр? А то в Upstart легко. И чтобы перезапуск работал достаточно указать опцию respawn.

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

ubuntu server

Ну вот к примеру у меня конфиг upstart для jabber бота на питоне (/etc/init/talisman.conf):

description     "Talisman jabber bot"
author          "Firestarter"
 
start on (filesystem
          and net-device-up IFACE!=lo
          and runlevel [2])
         
stop on runlevel [!2]
 
respawn
respawn limit 5 10
 
umask 002
nice 19
chdir /media/G/data/Talisman
 
console none
 
exec /usr/bin/setuidgid bot /usr/bin/python ./pybot.py

Здесь оно будет респавниться, но если процесс падает чаще пяти раз за десять секунд, оно прекратит свою работу. Если задание требуется выполнять от рута, то достаточно оставить exec /usr/bin/python script.py

firestarter ★★★☆
()
Последнее исправление: firestarter (всего исправлений: 1)
Ответ на: комментарий от sol13

script.py может быть где угодно?

Да, только следует указывать полный путь к нему, если он не в PATH.
В моём случае я сперва перехожу в директорию, где находится скрипт (команда chdir), т.к. этого требует конкретно этот демон.

для respawn лимит обязателен?

Нет, дефолтные значения 10 5 (не чаще десяти раз за пять минут).

Кстати, umask и nice из моего конфига тоже не обязательно использовать. Первая для того чтобы создаваемые демоном файлы имели права доступа 664 (775 для каталогов), а вторая устанавливает низкий приоритет.

firestarter ★★★☆
()
Последнее исправление: firestarter (всего исправлений: 1)
Ответ на: комментарий от firestarter

спасибо, попробовал, получилось.

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

Хотя после перезагрузки нет больше процесса. Написал так:

description     "parser"
author          "sol13"
          
respawn

chdir /home/itehnologii/pydb
 
console none
 
exec /usr/bin/setuidgid parser /usr/bin/python ./parser_ver3.py

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

переписал так, но все равно не стартует:

description     "parser"
author          "sol13"
 
start on started mysql
stop on stopped mysql
 
respawn

chdir /home/itehnologii/pydb
 
console none
 
exec /usr/bin/setuidgid parser /usr/bin/python ./parser_ver3.py

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

удалось все же запустить правда только от рута =(

Может что то с правами?
Я правильно понял, не работает только при перезагрузке, а при ручном запуске (sudo start jobname) запускается? Или не от рута вообще не запускается? Может setuidgid отсутствует (пакет daemontools)? Вроде его не было по умолчанию у меня.

firestarter ★★★☆
()
Последнее исправление: firestarter (всего исправлений: 2)
Ответ на: комментарий от sol13

О, оказывается эта утилита больше не нужна, с версии Upstart 1.4 добавили команду setuid. В предыдущих убунтах этого ещё не было.
То есть теперь можно просто так:

setuid parser
exec /usr/bin/python ./parser_ver3.py

firestarter ★★★☆
()
7 июня 2013 г.
Ответ на: комментарий от firestarter

Спасибо за классный пример! По руководству не всегда понятно, а с нормальным примером - сразу всё ясно.

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