Назад | Перейти на главную страницу

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

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

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

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

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

А в содержимом rc.local есть строка:

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

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

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

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

Если сценарий запуска teamcity LSB-совместимый сценарий инициализации (то есть, если он обеспечивает Начало, стоп и другие аргументы), вы можете просто скопировать скрипт в /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 (возможно, скрипту что-то нужно, но он не знает, где это).

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

echo $PATH

Чтобы проверить, является ли причина того, что скрипт не запускается, является ПУТЬ, попробуйте:

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

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

в команде Fedora 17

# chkconfig --add teamcity-server

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

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

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

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

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

Defaults:teamcity !requiretty