задание 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
задан 06.05.2020, 19:50

4 ответа

По моему опыту, вам не нужно ничего «включать», просто поместите .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).

3
ответ дан 06.05.2020, 19:51
  • 1
    Спасибо! проблема была в start on. I' ve взятый от mysql.conf с явным runlevel вместо networking и это работает. – FrustratedWithFormsDesigner 06.05.2020, 19:51

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

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

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

0
ответ дан 06.05.2020, 19:50
  • 1
    /etc/init.d/для sysvinit совместимости, фактические задания находятся в/etc/init/ – ewomack 06.05.2020, 19:51
  • 2
    Действительно; и эти service команда, что используемый вопрос требует, чтобы эта sysvinit совместимость существовала для задания, которое он создал. Если Вы хотите посмотреть, you' ll находят, что все другие обеспеченные системой новомодные задания имеют тот. – annakata 06.05.2020, 19:51

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

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

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

env ENV_VAR=value

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

setgid <groupname>

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

setuid <username>

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

chdir <directory>
0
ответ дан 06.05.2020, 19:52

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

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

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

env ENV_VAR=value

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

setgid <groupname>

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

setuid <username>

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

chdir <directory>
0
ответ дан 06.05.2020, 19:52

Теги

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