Задание 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>