Как автоматически запустить скрипт при запуске системы в 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
Если он не запускается при инициализации, но запускается вручную без проблем, вы должны проверить:
- разрешения (возможно, программа не может быть запущена от имени пользователя root. Попробуйте войти в систему от имени пользователя root и запустить ее), и;
- ваш путь (может быть, сценарию нужно что-то, но он не знает, где он находится).
Чтобы напечатать содержимое вашего 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