CentOS 6 y advenedizo

18

El nuevo CentOS 6 viene con Upstart, reemplazando init. Estoy tratando de convertir un archivo / etc / inittab al nuevo formato de arranque. Este servidor en particular solo tiene 15 o más entradas inittab, sin embargo, otros servidores tienen> 30. Principalmente queremos la parte de 'reaparecer' de inittab y upstart. Sin embargo, he estado leyendo toda la documentación inicial que puedo encontrar (que está basada TODO en Ubuntu, y aparentemente en una versión anterior de nueva versión) y no llegué a ningún lado. Puedo crear un archivo de configuración (llamémoslo /etc/init/test.conf). El archivo contiene esto (nota, anonimizado)

start on runlevel [345]
stop on starting shutdown

respawn
#Comment about what it does
exec su -c "/usr/bin/ssh -2CNL 11111:127.0.0.1:11111 10.10.1.1" username

Si publico un, initctl reload-configurationel trabajo es reconocido. Puedo comenzar llamando initctl start testy el trabajo comenzará.

Sin embargo, esto no funcionará en un reinicio, solo manualmente. He intentado modificar el comando de inicio a lo siguiente, todo sin suerte

start on started

start on (local-filesystems and net-device-up IFACE!=lo)

start on net-device-up IFACE=eth0 

y alrededor de una docena de otras formas que podría ver mencionadas en diferentes ejemplos. ninguno parece comenzar el guión. (test.conf, como todos los otros archivos en esta carpeta, son propiedad de root y 644)

¿Me estoy perdiendo algo evidentemente obvio?

Brian
fuente

Respuestas:

32

Encontré un script inicial muy, muy útil para personas que tienen problemas en el futuro. Pon esto en / etc / init /

# /etc/init/debug.conf
start on ( starting JOB!=debug \
or started JOB!=debug \
or stopping JOB!=debug \
or stopped JOB!=debug )
script
exec 1>>/tmp/log.file
echo -n "$UPSTART_JOB/$UPSTART_INSTANCE ($0):$$:`date`:"
echo "Job $JOB/$INSTANCE $UPSTART_EVENTS. Environment was:"
env
echo
end script

Este script básicamente registra todos los trabajos que comienzan o se detienen. He descubierto que CentOS 6 no 'emite' nada sobre los niveles de ejecución. (ni algunos de los otros eventos comunes que había intentado '). Mirar el archivo de registro que crea el trabajo de depuración en /tmp/log.file fue muy útil. Al cambiar el inicio de mi script de:

start on runlevel [345]

a

start on started sshd

Parece que todos mis trabajos se inician correctamente. Esto fue un dolor en la parte trasera, ya que cada ejemplo que encontré usaba la sintaxis anterior.

Brian
fuente
Si pudiera votar eso más de una vez, lo habría hecho.
Peter Mounce
15

Perdón por la necroposición, pero logré resolver este problema usando lo siguiente:

start on stopped rc RUNLEVEL=[345]

"parado" no es un error tipográfico - rc parece detenerse al entrar en un nivel de ejecución.

Leonid99
fuente
2
¡Gracias por el consejo! ¡Necropostar es genial, cuando es útil!
Brian
5

Esto es lo que hice (CentOS 6, Upstart 0.6.5) para depurar problemas de reaparición. En una terminal diferente, haz

sudo initctl log-priority debug 
sudo tail -F /var/log/messages
Mark Lakata
fuente