Cómo ejecutar un script automáticamente al iniciar el sistema en centos

8

Instalé con éxito TeamCity ib CentOS 6.2 Minimal. Estoy atascado en tratar de ejecutar un script automáticamente al iniciar el sistema:

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

Busqué en Google y probé varios métodos, todos los cuales parecen fallar. La mayoría de los métodos apuntan a agregar el script de inicio a uno de los archivos rc.local:

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

Y el contenido de rc.local contiene la línea:

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

Ninguno de los cuales iniciará el servidor teamcity

No hay problemas si ejecuto el script manualmente.

Parece simple, pero ¿cómo obtengo un script de shell para que se ejecute automáticamente?

atp03
fuente
1
Tendrá que describir lo que quiere decir con "ninguno de los cuales funciona". Porque sin eso, todos están adivinando. ¿Quizás describa con más detalle lo que ha hecho y qué mensajes o eventos de salida o falla ocurrieron?
EightBitTony
ese es el lugar correcto para ponerlo, por lo que parece que algo no es kosher con la entrada /etc/rc.d/rc.local o con el script en sí. ¿Puede publicar el contenido del script y el rc.local? Además, ¿se ejecuta el script de shell teamcity-server.sh cuando lo hace manualmente?
Quinn Murphy
Sí, el servidor de teamcity funciona bien manualmente. Pero no es práctico hacer esto cada vez que se reinicia el servidor ...
atp03
Hacer que se ejecute manualmente pero no a través de rc.local implica diferencias ambientales. ¿Cuál es tu camino? ¿Alguna otra variable env?
cjc
@cjc No estoy seguro de lo que quiere decir con 'RUTA'. Sin embargo, si ejecuto /etc/rc.d/rc.local manualmente, el servidor de teamcity también puede comenzar bien. ¿Esto todavía hace la diferencia?
atp03

Respuestas:

15

Si el script de inicio de teamcity es un script de inicio compatible con LSB (es decir, si proporciona inicio , detención y otros argumentos ), puede copiar el script en la /etc/init.dcarpeta y ejecutarlo (como root):

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

Un enlace simbólico para el archivo también debería estar bien. Entonces intente (como root):

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

Si no comienza en la inicialización, pero comienza manualmente sin problemas, debe verificar:

  1. permisos (quizás el programa no se pueda ejecutar como root. Intente iniciar sesión como root y ejecutarlo), y;
  2. su RUTA (tal vez el script necesita algo pero no sabe dónde está).

Para imprimir el contenido de su RUTA simplemente ejecute:

echo $PATH

Para verificar si la razón para que el script no se inicie es la RUTA, intente:

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

Este comando borrará temporalmente su RUTA y ejecutará el comando. Si el comando necesita información específica sobre la RUTA, fallará (tenga cuidado de ejecutar exactamente como se indicó anteriormente, HAY un espacio entre RUTA = y el resto del comando).

Diego Queiroz
fuente
6

en el comando Fedora 17

# chkconfig --add teamcity-server

diga: el servicio teamcity-server no admite chkconfig, debe agregar un encabezado como:

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

solo después de eso ejecuta el primer comando.

burtsevyg
fuente
2
Y asegúrese de que su script esté ubicado en /etc/init.d/:-)
Bart De Vos
2

Cuando el script se ejecuta manualmente, funciona correctamente. Pero, cuando se ejecuta automáticamente, no funciona.

He encontrado al culpable: TeamCity se ejecuta bajo el usuario teamcity. Debe estar presente en el /etc/sudoersarchivo y debe agregar, usando visudouna línea como esta:

Defaults:teamcity !requiretty
kupolua
fuente