Hasta hace poco, había una manera simple y efectiva de iniciar / detener / reiniciar servicios:
service nginx start|stop|restart
Esto funcionó perfectamente durante tantos años, ... hasta que algunos pantalones inteligentes decidieron mejorarlos y ahora me enfrento a los sistemas Debian / Ubuntu donde el servicescript no hace nada (ya que se supone que debo usar las cosas como systemctl start nginx.service(mucho más tiempo, sin trabajo de autocompletar, ...)
Mi pregunta se refiere especialmente a Debian y Ubuntu, pero también sería útil cubrir las distribuciones de CentOS / RedHat.
Entonces, ¿hay algo que pueda salvarme de estos cambios condenados?
En caso de que no estuviera claro, estoy buscando una forma consistente de lidiar con eso, una que funcione en Debian 7.x, 8.x, la última versión de Ubuntu LTS y no LTS.
PD. Fuera del alcance de esta pregunta específica, pero se otorgan felicitaciones adicionales si la solución también cubriría la parte de habilitar y deshabilitar para los servicios.

servicecomando anterior con un contenedor que llama a servicectl?serviceRealmente no hace nada por ti? Funciona como se esperaba en mi LMDE (que es básicamente una prueba de Debian), no pensé que fuera algo específico de LMDE. También funciona como se esperaba en mi Ubuntu VM.Respuestas:
Ha habido una serie de variados sistemas de control de arranque y servicio en las plataformas Unix a lo largo de su enredada historia.
El
service\chkconfigsistema basado que encontró simple y efectivo generalmente se conoce como estilo SysVinit y fue un paso importante en el camino hacia algún tipo de estandarización. Encontrará este estilo de arranque en RHEL / CentOS (EL) hasta la versión 6, Fedora hasta la 14, y en distribuciones basadas en Debian / Ubuntu hasta 2015. Sin embargo, no fue el único sistema de arranque, el estilo BSD (más simple) El sistema init todavía tiene muchos ventiladores.SysVinit no fue una solución perfecta (¿qué es?) Y Systemd fue ideado para superar muchos de los problemas; Este es el
systemctlsistema basado en comandos que está experimentando ahora. Aunque no es del agrado universal (las personas odian el cambio, la hinchazón, etc.) no hay duda de que se está convirtiendo rápidamente en el estándar de facto en la mayoría de las distribuciones.Por lo tanto, mirando hacia adelante de inmediato la respuesta a su pregunta original es simplemente:
La norma hacia los servicios de control a través de la mayoría de las distribuciones de Linux es ahora
systemctl!Cuánto tiempo será válido esto es una incógnita; probablemente solo hasta que aparezca algo que sea mejor y sea ampliamente adoptado.
Estoy seguro de que habrá envoltorios disponibles para permitir, su favorito actual, los
service/chkconfigcomandos para continuar haciendo cosas en su mayoría sensatas, pero con esta curva de aprendizaje en particular, probablemente sea mejor no luchar contra ella. Tal vez mirando hacia el futuro, por un tiempo también habrásystemctlenvoltorios para sistemas más antiguos, para hacer que administrarlos junto con los más actuales sea menos doloroso;)fuente
... que es, como han dicho otros en comentarios, lo que se ha hecho desde hace mucho tiempo .
El
/usr/sbin/servicecomando en Debian 8 es parte del paquete sysvinit-utils. Ha estado allí desde 2009. Es una adición originada en RedHat específica de Debian para el paquete original de fuente sysvinit, y como se puede ver al leer el script reconoce tanto la ejecución del sistema como la presencia de trabajos de arranque, la generación de comandos haciasystemctlyinitctl( a través de sus alias) respectivamente. Esto lo ha hecho desde 2013.service name actionestá bastante disponible incluso en sistemas operativos que no son Linux. Incluso funcionará en la mayoría de los BSD, ya que ellos también tienen sus propiosservicecomandos. También hay unservicecomando shim en el paquete nosh que se traduce en . Pero …system-control action nameservicecomando.servicecomandos BSD tienen problemas bien conocidos de larga data que los administradores del sistema han estado contando historias de guerra durante décadas.Habilitar y deshabilitar servicios es una situación similar. Aunque el
chkconfigprograma SuSE (disponible empaquetado para Debian y Ubuntu) es muy diferente al de Fedora (están escritos en lenguajes de programación completamente diferentes, incluso, uno compilado, uno interpretado), hay una sintaxis mínima común , con acción siendo o . Pero …chkconfig name actiononoffchkconfigen los BSD, ya que las herramientas convencionales para esto son biensysrco el más reciente de OpenBSDrcctl enableyrcctl disable. Haychkconfigyrcctlcuñas en el paquete nosh que se traducen en y .system-control enable namesystem-control disable namechkconfigsabe acerca de systemd y actúa como un calce parasystemctl enableysystemctl disable. El SuSEchkconfigno tiene conocimiento de systemd.Otras lecturas
script/service. init-system-helpers. Archivo fuente de Debian.telinit. nosh Guide . 1.20. Los softwares de JdeBP.servicecomando . Nosh páginas. Los softwares de JdeBP.service. §8. Páginas del manual de FreeBSD.fuente
No hay una forma estándar de iniciar y detener servicios en Linux.
Pruebe la herramienta de gestión / configuración de configuración: Ansible , Chef , Saltstack , Puppet o lo que sea.
Puede iniciar y habilitar un servicio con Ansible:
Eche un vistazo a la clase LinuxService en el
servicemódulo de Ansible :fuente
Su problema es que Debian / Ubuntu han cambiado a lo nuevo
systemdcomo reemplazo de lo viejosysvinit. Pregunte cuál es mejor y comenzará una guerra de llamas, pero siempre puede volver a la anteriorsysvinit, verifique esto si desea volver.fuente