задание 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
задан 24 January 2014 в 14:09

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).

0
ответ дан 24 January 2014 в 14:09

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

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

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

0
ответ дан 24 January 2014 в 14:09

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

Из справочника Upstart: http://upstart.ubuntu.com/cookbook/

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

env ENV_VAR=value

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

setgid <groupname>

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

setuid <username>

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

chdir <directory>
0
ответ дан 24 January 2014 в 14:09
  • 1
    Нет. Говорит, что никакие файлы не были добавлены или обновлены так, я предполагаю, что означает, что это уже установлено. – zeonite 15 July 2015 в 19:00

Другие вопросы по тегам:

Похожие вопросы: