Задание upstart работает только с ручным пуском / остановкой

У меня очень маленькая выскочка в /etc/init/tsm.conf запустить резервный клиент после запуска сети. Это работает просто нормально, если я запускаю / останавливаю его вручную через service tsm start|stop|status, Но service tsm enable говорит tsm: unrecognized service, Таким образом, он не запускается при загрузке автоматически. sudo service --status-all также не отображается в списке известных вакансий.

Вот:

start on started networking
stop on stopped networking

respawn

script
#!/bin/bash
dsmc schedule > /dev/null
end script

Я запускаю Ubuntu 12.04.4. Версия Upstart 1.5-0ubuntu7.2. Кто-нибудь может мне помочь?:)

ОБНОВИТЬ

С помощью initctl list и другие команды initctl показывают мою работу.

3 ответа

Решение

По моему опыту, вам не нужно ничего "включать", просто поместите.conf в / etc / init и наслаждайтесь.

Вы можете убедиться, что скрипт действительно выполняется, добавив в скрипт следующую строку:

echo "alive" > /alive_and_well

Это создаст файл "alive_and_well" в корневой директории, если скрипт запустится.

Если этого не произойдет, проблема, скорее всего, в разделе "начать". Вот что я использую для таких вещей (известный как работа):

start on (local-filesystems and net-device-up IFACE!=lo)
stop on runlevel [!2345]

Также шебанги в сценариях Upstart не поддерживаются, поэтому "#!/ Bin/bash" бесполезен (AFAIK).

Взгляните на другие выскочки работы, перечисленные в /etc/init.d/, В моей системе все они являются символическими ссылками на /lib/init/upstart-job, что делает service командная работа (я бегу Saucy).

Попробуйте создать такую ​​же символическую ссылку, если вы хотите service Команда на работу.

В противном случае используйте start, stop а также restart непосредственно.

Похоже, служба запущена, но вы не видите ожидаемого от нее поведения. Если он должен работать от имени определенного пользователя или с установленными переменными среды, то вам может потребоваться указать их. Убедитесь, что команда dsmc находится в вашей переменной PATH, или перейдите в каталог, в котором она находится.

Из поваренной книги Upstart: http://upstart.ubuntu.com/cookbook/

Переменные среды: Upstart позволяет вам устанавливать переменные среды, которые будут доступны для заданий, в файлах конфигурации заданий которых они определены. Переменные среды задаются с помощью ключевого слова env.

env ENV_VAR=value

Установить идентификатор группы: изменения в группе перед запуском процесса задания.

setgid <groupname>

Установить идентификатор пользователя: изменения пользователя перед запуском процесса задания.

setuid <username>

Изменить каталог: Запускает процессы задания с рабочим каталогом в указанном каталоге, а не в корне файловой системы.

chdir <directory>
Другие вопросы по тегам