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

8

Я успешно установил 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

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

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

atp03
источник
1
Вам нужно будет описать, что вы подразумеваете под «ни одна из которых не работает». Потому что без этого все догадаются. Может быть, опишите более подробно, что вы сделали и какие сообщения, события или события произошли?
EightBitTony
это правильное место, так что кажется, что что-то не кошерно с записью /etc/rc.d/rc.local или с самим сценарием. Вы можете опубликовать содержимое скрипта и rc.local? Также запускается ли скрипт оболочки teamcity-server.sh, когда вы делаете это вручную?
Куинн Мерфи
Да, teamcity-server работает нормально вручную. Но это не практично делать каждый раз, когда сервер перезагружается ...
atp03
Запуск его вручную, но не через rc.local, подразумевает различия в окружающей среде. Какой у тебя ПУТЬ? Любые другие переменные env?
CJC
@cjc Не уверен, что вы подразумеваете под 'PATH' - Однако, если я запускаю /etc/rc.d/rc.local вручную, сервер teamcity также может нормально запускаться. Это все еще имеет значение?
atp03

Ответы:

15

Если сценарий запуска 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 = и оставшейся частью команды).

Диего Кейроз
источник
6

в Fedora 17 команда

# chkconfig --add teamcity-server

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

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

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

burtsevyg
источник
2
И убедитесь, что ваш сценарий находится в /etc/init.d/:-)
Барт Де Вос
2

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

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

Defaults:teamcity !requiretty
kupolua
источник