Привет, могу ли я использовать сценарии инициализации старого стиля под ub 12.04? я сыт по горло своими выскочившими сценариями, работающими периодически.
У меня есть процесс, основанный на монтировании cifs (определено в fstab). Я попробовал все обычные зависимости «ждать интерфейса» и «ждать локальной файловой системы» в моем выскочке, но, похоже, ничего не работает. Моя команда отлично работает в строке cmd.
Я думаю, что происходит то, что cifs не смонтировался в то время, когда скрипт upstart пытается запустить. Выскочка кажется мне сломанной.
start on (local-filesystems and net-device-up IFACE=eth0 and mounted MOUNTPOINT=/storage/server)
stop on shutdown
expect daemon
script
cd /storage/server/scripts/myprog
su -c "/home/gurpal2000/ruby-1.9.3-p0/bin/bundle exec /home/gurpal2000/ruby-1.9.3-p0/bin/ruby lib/main.rb > /storage/server/logs/myprog.txt 2>&1" gurpal2000
end script
Спасибо
Выскочка не повреждается. Смотрите на следующее:
http://upstart.ubuntu.com/cookbook/#mountall-examples (позволит Вам проверять свое 'смонтированное' событие),
http://upstart.ubuntu.com/cookbook/#setuid (позволит Вам упрощать свое задание и удалять'su -c
'который, вероятно, вызывает Ваши проблемы - su
ветвления между прочим).
Я думаю, что Вы можете упрощать Ваш'start on
'чтобы быть просто:
start on (filesystem and static-network-up)
Смотрите на upstart-events(7)
, или онлайн здесь:
http://upstart.ubuntu.com/cookbook/#ubuntu-well-known-events-ubuntu-specific
См. также:
Выскочка все еще поддерживает задания SysV, поэтому если Вы действительно хотите Вам, может создать /etc/init.d/foo
.
Я не пытался заменить Upstart старым добрым SysV-init, но это должно быть выполнимо; по крайней мере, обмен среди init
-замен в прошлом был довольно простым. Вам просто нужно быть уверенным, что вы заменяете как минимум следующие программы:
/sbin/halt
/sbin/init
/sbin/initctl
/sbin/poweroff
/sbin/reboot
/sbin/shutdown
/sbin/telinit
Менеджер пакетов попытается перезапустить init
при установке новой библиотеки C; надеюсь, это управляется через стандартный интерфейс telinit
, а не жестко запрограммировано специально для механизмов Upstart.
И я, конечно, не ожидаю запуска сценариев, управляемых событиями - для подключения USB-накопителей может потребоваться их монтирование самостоятельно. (Что, на мой взгляд, в любом случае является лучшим подходом.)
Прежде чем отказаться от своего файла конфигурации Upstart, вы пробовали:
start on mounted MOUNTPOINT=/path/to/mountpoint