Как автоматически запустить скрипт при запуске системы в centos

Я успешно установил TeamCity ib CentOS 6.2 Minimal. Я застрял при попытке запустить скрипт автоматически при запуске системы:

/opt/TeamCity/bin/teamcity-server.sh start

Я гуглил и пробовал различные методы, которые, похоже, потерпели неудачу. Большинство методов указывают на добавление сценария запуска в один из файлов rc.local:

/etc/rc.d/rc.local
/etc/rc.local

И содержимое rc.local содержит строку:

/opt/TeamCity/bin/teamcity-server.sh start

Ни один из которых не запустит сервер teamcity

Нет проблем, если я запускаю скрипт вручную.

Кажется простым, но как мне получить скрипт оболочки для автоматического запуска?

3 ответа

Если стартовый скрипт teamcity является LSB-совместимым скриптом инициализации (то есть, если он предоставляет start, stop и другие аргументы), вы можете просто скопировать скрипт в /etc/init.d папку и запустить (как root):

# chkconfig --add <script_name>
# chkconfig <script_name> on

Символическая ссылка на файл тоже должна быть в порядке. Так что попробуйте (как root):

# ln -s /opt/TeamCity/bin/teamcity-server.sh /etc/init.d/teamcity-server
# chkconfig --add teamcity-server
# chkconfig teamcity-server on

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

  1. разрешения (возможно, программа не может быть запущена от имени пользователя root. Попробуйте войти в систему от имени пользователя root и запустить ее), и;
  2. ваш путь (может быть, сценарию нужно что-то, но он не знает, где он находится).

Чтобы напечатать содержимое вашего PATH, просто запустите:

echo $PATH

Чтобы проверить, не является ли причиной запуска сценария PATH, попробуйте:

$ cd /
$ PATH= /opt/TeamCity/bin/teamcity-server.sh

Эта команда временно очистит ваш путь и выполнит команду. Если команде требуется какая-то конкретная информация о PATH, она не будет выполнена (будьте осторожны, чтобы выполнить точно так, как указано выше, ЕСТЬ пробел между PATH = и оставшейся частью команды).

В Fedora 17 команда

# chkconfig --add teamcity-server

скажем: сервис teamcity-server не поддерживает chkconfig, вы должны добавить заголовок как:

#! /bin/bash
# chkconfig: - 10 90

только после этого запускается первая команда.

Когда скрипт запускается вручную, он работает правильно. Но при автоматическом запуске это не работает.

Я нашел виновника: TeamCity работает под пользователем teamcity, Он должен присутствовать в /etc/sudoers файл, и вы должны добавить, используя visudo такая строка:

Defaults:teamcity !requiretty
Другие вопросы по тегам