GNU/Linux >> Tutoriales Linux >  >> Linux

Primeros pasos con systemctl

La gestión de servicios es una responsabilidad clave para los administradores de sistemas. No hay duda de que la transición entre el antiguo método SysV (usando el service y chkconfig commands) y el nuevo systemd -comandos basados ​​(como systemctl ) fue controvertido. De hecho, muchos administradores de sistemas todavía tienen sentimientos muy fuertes hacia uno u otro lado.

La realidad es que muchas distribuciones, incluida Red Hat Enterprise Linux (RHEL), han comenzado a administrar servicios con systemd. . Por lo tanto, tú y yo necesitamos saber cómo trabajar con systemctl comando de gestión.

No soy el tipo de autor/entrenador/administrador que asume que todos son avanzados. Con eso en mente, voy a dirigir este artículo a las personas que necesitan una explicación fundamental y directa de cómo y cuándo usar el systemctl más común. subcomandos. Al final, también ofrezco un gran truco para mostrar rápidamente todo el systemctl subcomandos.

Nota:La página de manual de systemctl se refiere a la segunda palabra de la cadena como un "comando", lo que parece algo confuso. Me referiré a systemctl en sí mismo como un comando , luego la cadena que le sigue como un subcomando . El argumento es el nombre del servicio y ocupa la tercera posición en la sintaxis.

Aquí hay un ejemplo de sintaxis:

systemctl subcommand argument
# systemctl status sshd

Demostraré cómo y cuándo usar systemctl . La mayoría de mis ejemplos usan el común sshd servicio.

[ Los lectores también disfrutaron: Cómo aprendí a dejar de preocuparme y amar systemd ]

Estado del servicio

El mejor lugar para comenzar es comprender la funcionalidad actual del servicio. Comenzaré con el enfoque más simple, el uso del status subcomando:

# systemctl status sshd

Por supuesto, la idea es que acaba de sentarse en un servidor Linux desconocido y necesita saber el estado actual del sshd Servicio. Tenga en cuenta que se proporcionan muchas otras piezas de información, incluida una sinopsis del servicio, desde dónde se cargó, estado, ID de proceso (PID) y cambios recientes.

El systemctl status El comando también es útil durante la resolución de problemas. Cuando estoy solucionando un problema de configuración, verifico su estado casi de inmediato usando systemctl . ¿Por qué molestarse con los firewalls, SELinux y los archivos de configuración si el servicio ni siquiera se está ejecutando?

Entonces, ahora sabe cómo verificar el estado de los servicios como SSH. ¿Cómo manipulas ese estado?

Iniciar y detener servicios

Cuando cambia un archivo de configuración para un servicio en ejecución, debe reiniciar o recargar el servicio. Si lo hace, el servicio volverá a leer el archivo y, por lo tanto, implementará los cambios. En los viejos tiempos, usabas el service comando, como en los siguientes ejemplos:

# service sshd restart

Servicios bajo systemd se gestionan a través del systemctl dominio. Para reiniciar el servicio SSH con systemctl , introduce:

# systemctl restart sshd

Personalmente, encuentro esta sintaxis un poco más fácil. Se lee casi como una oración:"Systemctl, reinicie sshd".

La sintaxis es similar si desea detener o iniciar un servicio:

# systemctl stop sshd

# systemctl start sshd

Los servicios que se niegan a detenerse con gracia pueden eliminarse usando systemctl , también. Por ejemplo, para matar el sshd servicio, ingrese:

# systemctl kill sshd

Los servicios de recarga son un poco diferentes. El reload El subcomando solo hace que el servicio vuelva a leer el archivo de configuración, mientras que el restart El subcomando finaliza todas las conexiones actuales y vuelve a leer el archivo de configuración.

Por ejemplo, si escribe systemctl restart sshd , se eliminan todas las conexiones SSH actuales. Sin embargo, si lo vuelve a cargar, se mantienen las conexiones existentes. En ambos casos, el archivo de configuración se vuelve a leer y se implementan los cambios.

La recarga provoca menos tiempo de inactividad, pero no todos los servicios lo admiten.

El start , stop , restart, y reload los subcomandos solo afectan el tiempo de ejecución actual.

Habilitar y deshabilitar servicios

Muchos administradores que son nuevos en Linux están confundidos acerca de la diferencia entre start /stop y enable /disable . Ya hablé de start , stop y restart en la sección anterior. Start y stop se utilizan para alterar el estado actual del servicio. Sin embargo, si el servidor se reinicia, el estado del servicio volverá a la configuración de inicio predeterminada. En otras palabras, si detengo el sshd service y luego reiniciar mi servidor, el proceso de inicio examinará el archivo de configuración e iniciará o no iniciará sshd , dependiendo de lo que se especifique. Si detengo el servicio y luego lo reinicio, y el archivo de configuración dice que inicie el servicio al iniciar, volverá a ejecutarse.

Anteriormente, utilizó el chkconfig comando para definir la configuración de inicio del servicio para cada nivel de ejecución. Aquí hay un ejemplo:

# chkconfig --level 35 sshd on

Este comando habilita sshd para iniciar en los niveles de ejecución 3 y 5.

Con systemctl , configurar la configuración de inicio predeterminada es el trabajo de enable y disable subcomandos. La sintaxis es la misma que con start , stop y restart subcomandos. Por ejemplo, para configurar SSH para que se inicie cuando se inicia el servidor, ingrese:

# systemctl enable sshd

Asimismo, para configurar SSH no para iniciar durante el arranque, escriba:

# systemctl disable sshd

Configurar la configuración de inicio predeterminada para los servicios es sencillo, al igual que iniciar y detener los servicios. Sin embargo, parece haber cierta confusión sobre el uso de los dos juntos.

Usar inicio y habilitar juntos

A algunos les resulta extraño que habilitar un servicio no lo inicie. Por ejemplo, si acaba de descargar un nuevo programa y desea iniciarlo para poder probar su funcionalidad y desea configurarlo para que se inicie cuando se inicia el servidor, debe ingresar dos comandos:

# systemctl start sshd

# systemctl enable sshd

La desactivación de un servicio se produce de la misma manera. Escriba systemctl disable sshd para evitar que SSH se inicie cuando se inicia el servidor. Sin embargo, si SSH se está ejecutando en el tiempo de ejecución actual, permanece activo, incluso si está deshabilitado. Tienes que stop SSH para apagarlo en el tiempo de ejecución actual.

Por ejemplo, para detener SSH y evitar que se inicie cuando se inicia el sistema, ingrese:

# systemctl stop sshd

# systemctl disable sshd

Recuerda comprobar el status del servicio en cualquier momento que no esté seguro ingresando:

# systemctl status sshd

Puede verificar si un servicio está configurado para iniciarse automáticamente usando otro systemctl subcomando:is-enabled . Por ejemplo, para mostrar si SSH está habilitado, ingrese:

# systemctl is-enabled sshd

Muchos subcomandos:el truco

He cubierto bastantes systemctl subcomandos, incluido start , stop , restart , enable , disable , status , y otros. ¡Eso es mucho para recordar! Aquí es donde entra en juego la función de completar fichas de tu viejo amigo. Pruebe la siguiente técnica en su sistema:Escriba systemctl y luego agregue un solo espacio. Presiona la pestaña tecla dos veces, y bash muestra todos los systemctl disponibles subcomandos! Creo que pocos administradores de sistemas aprovechan este truco para completar tabuladores.

[ ¿Quiere poner a prueba sus habilidades de administrador de sistemas? Tome una evaluación de habilidades hoy. ] 

Resumir

Como puede ver, la gestión de servicios a través del systemctl El comando realmente no es tan difícil. Lo encuentro más simple y lógico que el antiguo service y chkconfig comandos, personalmente. También es útil tener un solo comando para administrar los servicios en lugar de dos.

Estos son los puntos clave para recordar:

  • Use start/stop/restart para administrar el tiempo de ejecución actual.
  • Utilice iniciar/detener/reiniciar/recargar después de editar los archivos de configuración.
  • Use habilitar/deshabilitar para administrar la acción de inicio predeterminada.
  • Use el estado muy temprano en el proceso de solución de problemas.

Finalmente, no tiene que memorizar todos los systemctl disponibles subcomandos. Simplemente ingrese el systemctl comando y sígalo con un espacio, y luego presione Tab dos veces. ¡La función de finalización de pestañas integrada de Bash hace el resto!

Los administradores de sistemas se encuentran regularmente manipulando servicios y, con suerte, se siente un poco más cómodo con el uso del systemctl más común. subcomandos.


Linux
  1. Administre múltiples instancias de servicio con systemctl

  2. Comenzando con Zsh

  3. Comenzando con ls

  4. Primeros pasos con PostgreSQL en Linux

  5. Primeros pasos con una cuenta de revendedor de Plesk

Primeros pasos con el sistema operativo Linux

Primeros pasos con GitHub

Primeros pasos con el administrador de paquetes de Nix

Primeros pasos con cPanel

Primeros pasos con SiteApps

Centos 7:Primeros pasos