He estado administrando las instalaciones del servidor dentro y fuera del sabor de Ubuntu durante algún tiempo, me he acostumbrado bastante /etc/init.d/
para reiniciar los servicios. Ahora recibo este mensaje:
root@tatooine:~# /etc/init.d/mysql status
Rather than invoking init scripts through /etc/init.d, use the service(8)
utility, e.g. service mysql status
Since the script you are attempting to invoke has been converted to an
Upstart job, you may also use the status(8) utility, e.g. status mysql
mysql start/running, process 14048
Esto parece haberse producido en el último LTS de Ubuntu, ¿por qué? ¿Qué tiene de malo /etc/init.d/
y qué / hay una diferencia entre service
y /etc/init.d/
?
Respuestas:
/etc/init.d
los guiones son la vieja forma de hacer las cosas. Vienen del estándar del Sistema V. Sin embargo, esos scripts se disparan solo en una secuencia particular, por lo que no se pueden establecer dependencias reales.Por lo tanto, upstart se ha desarrollado con la intención de sustituir todos los
/etc/init.d
scripts por scripts de inicio (in/etc/init
).service
permite la transición fluida de/etc/init.d
guiones a guiones iniciales. En el futuro, cuando se transfieran más y más scripts a la fase inicial, el servicio seguirá funcionando porque encuentra ambas posibilidades.fuente
Consulte también la página del manual para el comando de servicio:
man service
service
ejecuta un script en un entorno predecible (el directorio de trabajo es / y solo se establecen 2 variables de entorno: LANG y TERM). También agrega la capacidad de hacer--full-restart
. Así que para resumir:service
puede ejecutar scripts desde / etc / init o /etc/init.d (upstart o System V)service
ejecuta scripts en un entorno predecible.El aspecto "entorno predecible" puede causarle problemas si su script depende de una variable de entorno por algún motivo. Probablemente haya una forma de evitarlo, pero no sé qué es, y eso está más allá del alcance de esta pregunta :)
fuente