Soy nuevo en Linux y me he estado probando usando una instancia de Amazon Lightsail (Ubuntu 16.04 LTS).
Al revisar las muchas guías que he encontrado, veo personas que utilizan diferentes comandos para iniciar / detener / reiniciar / recargar / verificar el estado de un servicio. Específicamente estos;
sudo systemctl status apache2.service
sudo /bin/systemctl status apache2.service
sudo /etc/init.d/apache2 status
sudo service apache2 status
Todos los comandos anteriores funcionan.
- ¿Debería preferir un comando sobre el otro?
- En caso afirmativo, ¿por qué?
- ¿Hay otros comandos que deba tener en cuenta?
El uso de init.d en Monit causó problemas cuando quería usar la opción de estado (el estado será que el servicio está fuera de línea cuando realmente estaba en línea, reiniciado por Monit). Cambie el código en Monit de inid.d a / bin / systemctl lo arregló.
Parece que el uso de init.d proporciona más información sobre lo que sucedió que los demás. Si debo usar uno de los otros comandos, ¿es posible que muestren más información sobre lo que se hizo?
ubuntu@ip-172-26-12-245:~$ sudo systemctl restart pure-ftpd.service
ubuntu@ip-172-26-12-245:~$ sudo /bin/systemctl restart pure-ftpd.service
ubuntu@ip-172-26-12-245:~$ sudo /etc/init.d/pure-ftpd restart
[ ok ] Restarting pure-ftpd (via systemctl): pure-ftpd.service.
ubuntu@ip-172-26-12-245:~$ sudo service pure-ftpd restart
ubuntu@ip-172-26-12-245:~$
Quisiera agradecer de antemano a todos los que se han tomado el tiempo de leer y responder a esta pregunta.
fuente

systemctles la sintaxis preferida yservicese proporciona como compatibilidad con versiones anteriores./etc/init.d/pure-ftpdo similar están llamando a los scripts de inicio / detención directamente.Respuestas:
Para empezar, hay toda una historia y una lucha entre ir de
SysVInitaSystemD. Sin embargo, en lugar de tratar de desglosar todo esto en una respuesta, lo referiré a algunas empresas de Google para obtener más detalles sobre la historia, así como un artículo en particular sobre el tema:http://www.tecmint.com/systemd-replaces-init-in-linux/
En resumen, sin embargo, ha sido una transición lenta y ardua. Algunas características heredadas se mantuvieron intactas (como
init.dhasta cierto punto). Si tiene la opción de usarsystemctlpara el control de su servicio, le recomiendo usar esa. Es el futuro previsible para Linux y, finalmente, losSysVInitmétodos más antiguos se considerarán obsoletos por completo y se eliminarán.Para cubrir cada uno que enumeró específicamente:
sudo systemctl status apache2.serviceEste es el nuevo
SystemDenfoque para el manejo de servicios. En el futuro, las aplicaciones en Linux están diseñadas para usar el método systemd, no cualquier otro.sudo /bin/systemctl status apache2.serviceEsto es lo mismo que el comando anterior. La única diferencia en este caso es que no depende de la
$PATHvariable de entorno del shell encontrar el comando, sino que enumera el comando explícitamente al incluir la ruta al comando.sudo /etc/init.d/apache2 statusEste es el
SysVInitmétodo original de llamar a un servicio. Los scripts de inicio se escribirían para un servicio y se colocarían en este directorio. Si bien este método todavía es utilizado por muchos,servicefue el comando que reemplazó este método de invocar serviciosSysVInit. Hay algunas funcionalidades heredadas para esto en los sistemasSystemDmás nuevos, pero la mayoría de los programas más nuevos no incluyen esto, y no todos los scripts de inicio de aplicaciones más antiguos funcionan con él.sudo service apache2 statusEsta fue la herramienta principal utilizada en los
SysVInitsistemas de servicios. En algunos casos simplemente se vinculó a los/etc/init.d/scripts, pero en otros casos fue a un script de inicio almacenado en otro lugar. Estaba destinado a proporcionar una transición más fluida en el manejo de la dependencia del servicio.Por último, menciona que desea saber cómo obtener más información de los comandos, ya que algunos proporcionan más información que otros. Esto casi siempre está determinado por la aplicación y cómo diseñaron su archivo de inicio o servicio. Sin embargo, como regla general, si se completó en silencio, tuvo éxito. Sin embargo, para verificar a
start,stoporestart, puede usar elstatussubcomando para ver cómo está funcionando. Usted mencionó que unstatuscomando es incorrecto en un script de inicio antiguo. Ese es un error que los desarrolladores de aplicaciones tendrían que mirar. Sin embargo, dado que los scripts de inicio se están convirtiendo en el método obsoleto de manejo de servicios, pueden ignorar el error hasta que eliminen por completo la opción de script de inicio. lossystemctl statussiempre debe funcionar correctamente; de lo contrario, se debe registrar un error con los desarrolladores de la aplicación.fuente
systemctlbuscarán en los directorios donde se almacenan los archivos de servicio y agregarán el ".service" si lo encuentra. Entonces, por ejemplo, si presiona la pestaña una vez después de solo escribirlosudo systemctl status apache2, debe completarlo agregando.servicepara usted. Si hay más de un archivo systemctl apache2 (como.servicey.targetque tendría que pestaña golpe dos veces para que todos las opciones disponibles muestra.