10 votos

init.d scripts escritos en Python

Una pregunta, surgió en TAN preguntando acerca de la escritura de init.d scripts en Python. Uno de los comentarios, indicó que estas secuencias de comandos debe ser programado en el shell de Python no. Es la escritura de init.d scripts en Python:

  1. Malo. Malo. Malo. Nunca hacer esto.
  2. No es una práctica recomendada.
  3. OK, con salvedades.
  4. Legado dogma.
  5. Totalmente bien.

Sería genial saber que cualquier pesadilla de los escenarios, o si esta regla está escrita en sysadmin de la sangre.

10voto

rrichter Puntos 2273

No veo un problema, si usted sabe, por supuesto, que el intérprete de Python estará disponible cuando el init.d script se ejecute. Para mí, esto indica que usted está buscando en la que algo está hecho relativamente tarde en un multi-usuario (o "gráfico de la consola") de ejecución de nivel.

Sin embargo... Esto significa que una versión específica de la intérprete de Python PUEDE ser vital para la secuencia de arranque y este es uno de los más there.another usted necesita para comprobar en las actualizaciones.

Supongo que esto significa que estoy diciendo "3. OK, con salvedades".

9voto

mattdm Puntos 4959

Yo diría que el #2, pero muy cerca de #1 -- "Malo. Malo. Malo. Nunca hacer esto." La norma, tal como es, para Linux scripts de inicio es en la LSB, y aunque nunca llega y dice: "estos son bourne shell scripts", varios de los supuestos que se hagan. Uno, que las líneas que comienzan con # son comentarios, que pasa a funcionar bien. Más problemático es el requisito de que el script de inicio de ejecutar los comandos de /lib/lsb/init-functions "en el entorno actual (véase especiales de shell de comandos integrada dot)".

Pero lo que es más importante, si estás haciendo algo realmente complicado aquí, lo estás haciendo mal. Los scripts de inicio debe ser muy simple y utilitaria. Deben ser secuencias de comandos en el sentido clásico, no a los programas. Es mejor que chupar y hacer un simple script de shell que cualquier sysadmin pueden fácilmente grok en un vistazo rápido de hacer algo hermoso y desarrollado en Python.

Otra consideración a tener en cuenta es systemd, que puede o no puede ser el Futuro De Toda la Inicialización del Sistema En Linux. En virtud de systemd, la inicialización se realiza por simple archivos de configuración en lugar de secuencias de comandos, con la idea de que todo inicio encaja en varios patrones de diseño y realmente debe sólo tienes que escoger uno. Si usted utiliza el programa algo complicado para la inicialización, que debe ir fuera del guión en sí.

2voto

zerolagtime Puntos 938

Estoy de acuerdo con "3. OK, con salvedades", pero por razones diferentes. Mi experiencia en Solaris era que tenían un sistema de copia de Perl para algunos de sus programas internos. La secuencia de comandos de shell no era nada más que la cáscara para obtener el Perl de kick off. Hizo la secuencia de comandos de inicio tiene que ser escrito en sh? No, pero ha mejorado la capacidad de mantenimiento para el administrador. Y el guión no hizo nada más complicado que cosas como daemon --start o daemon --stop. Si usted hace esto, entonces los usuarios regulares podría iniciar la herramienta en el modo sin privilegios, si que tiene sentido en el contexto de su programa. Y que no necesita tener todo tipo de configuración complicada de finura.

Modernas distribuciones de Linux, incluso aquellos que todavía siguen usando init.d, tiene una gran colección de pre-construidos funciones destinado a facilitar la gestión de los demonios. Gráfica de procesos de arranque de forma rutinaria aprovechar las funciones para mantener el bonito logo de arriba, a menos que uno de los scripts de inicio, comienza a arrojar errores. El código de Python (o cualquier otro idioma) no puede jugar así con los esquemas.

Si usted no se preocupan por la estética o la facilidad de mantenimiento, su guión de inicio puede ser escrito como quieras. He visto muchos de los administradores, que ni siquiera se puede cortar y pegar correctamente, ignorar completamente argumentos de línea de comandos y que acaba de iniciar el demonio. No cierre, estado, o se reinicie. Era inmaduro, pero su código sigue corriendo.

1voto

Tweeks Puntos 11

Me dicen que entre #1-2. El LSB dirige a usted de esta manera.. y de un Sys-Admin (no dev papel) el trabajo req s dictar sh/bash conocimiento, NO dev nivel (o incluso la luz de la comprensión) de python, PHP o perl. Que la luz de la LÁMPARA de la pila, no para el sistema de scripts de inicio.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: