GNU/Linux >> Tutoriales Linux >  >> Linux

¿Detectar el sistema Init usando el shell?

Esto puede tener más que ver con la detección de sistemas operativos, pero necesito específicamente el sistema de inicio actualmente en uso en el sistema.

Fedora 15 y Ubuntu ahora usan systemd, Ubuntu solía usar Upstart (predeterminado durante mucho tiempo hasta 15.04), mientras que otros usan variaciones de System V.

Tengo una aplicación que estoy escribiendo para ser un demonio multiplataforma. Los scripts de inicio se generan dinámicamente en función de los parámetros que se pueden pasar en la configuración.

Lo que me gustaría hacer es solo generar el script para el sistema de inicio particular que están usando. De esta manera, el script de instalación se puede ejecutar razonablemente sin parámetros como root y el daemon se puede "instalar" automáticamente.

Esto es lo que se me ocurrió:

  • Busca systemd, upstart, etc. en /bin
  • Compare /proc/1/comm con systemd, advenedizo, etc.
  • Preguntar al usuario

¿Cuál sería la mejor forma multiplataforma de hacer esto?

Algo relacionado, ¿Puedo depender de bash para estar en la mayoría de *nix o depende de la distribución/SO?

Plataformas objetivo:

  • SO Mac
  • Linux (todas las distribuciones)
  • BSD (todas las versiones)
  • Solaris, Minix y otros *nix

Respuesta aceptada:

Para la segunda pregunta, la respuesta es no y debería echar un vistazo a Recursos para la programación de shell portátil.

En cuanto a la primera parte, antes que nada, ciertamente debes tener cuidado. Diría que realice varias pruebas para asegurarse – porque el hecho de que alguien sí tenga systemd (por ej.) instalado, no significa que en realidad se use como init predeterminado . Además, mirando /proc/1/comm puede ser engañoso, porque algunas instalaciones de varios programas de inicio pueden hacer automáticamente /sbin/init un enlace simbólico o incluso una versión renombrada de su programa principal.

Tal vez lo más útil podría ser observar el tipo de scripts de inicio, porque esos son los que en realidad creará, sin importar qué los ejecute.

Como nota al margen, también puede echar un vistazo a OpenRC, cuyo objetivo es proporcionar una estructura de scripts de inicio que sea compatible con los sistemas Linux y BSD.


Linux
  1. ¿Cómo detectar si el Shell está controlado desde Ssh?

  2. ¿Cuáles son los diferentes tipos de shells en Linux?

  3. ¿Cuál es el propósito de "usuario del sistema" en MySQL Replication

  4. ¿Cuál es la forma más sencilla de SSH usando Python?

  5. ¿Cuál es el punto de usar la macro de Linux access_ok ()

Conozca su Sistema (usando la línea de comando)

¿Qué es el Shell en Linux?

Cómo cambiar el shell predeterminado en el sistema Linux

¿Cuál es la diferencia entre Shell de inicio de sesión y sin inicio de sesión?

¿Qué es un archivo .sh?

¿Cuál es el shell predeterminado de Busybox?