Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

309
Vistas
Comprobar si el servicio está instalado o no en Linux

Estoy tratando de obtener el servicio, ya sea que esté instalado o no. El script funciona bien con systemctl pero falla cuando systemctl no está instalado. Como alternativa a eso, estoy usando el comando de servicio para verificar, pero al hacerlo, no puedo ejecutar el comando grep para un servicio específico de grep. Este script debe ejecutarse en varias máquinas Linux (algunas con systemctl y otras sin él). Cualquier ayuda sería apreciada

prueba.sh

 #!/bin/bash serviceName=ngnix.service if (systemctl --all --type service || service --status-all) && grep -q "$serviceName";then echo "$serviceName exists." else echo "$serviceName does NOT exist." fi

salida sin systemctl:

 ./test.sh: line 5: systemctl: command not found [ ? ] hwclock.sh [ - ] mariadb [ - ] nginx [ - ] nginx-debug [ - ] procps [ - ] redis-server [ - ] rsync

salida con systemctl:

 ngnix.service does NOT exist.
over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Coloque ambos comandos en un grupo de comandos y redirija todo el grupo de comandos a grep :

 if { systemctl --all --type service || service --status-all; } 2>/dev/null | grep -q "$serviceName"; then echo "$serviceName exists." else echo "$serviceName does NOT exist." fi
over 4 years ago · Santiago Trujillo Denunciar

0

systemctl es una utilidad de control para administrar unidades systemd. Puede intentar verificar la presencia de nginx dentro de /usr/lib/systemd/ en el caso de un sistema de inicio basado en systemd. No olvides la filosofía "Todo es un archivo". Consulte man systemd.unit para obtener más información. Para distribuciones antiguas con init init system verifique el directorio /etc/init.d/ vea el servicio man

over 4 years ago · Santiago Trujillo Denunciar

0

Si no desea verificar si el sistema tiene sysV o initd dentro, puede buscar solo el binario. Si el binario existe, puede suponer que el paquete y los servicios están instalados. Por ejemplo:

 #!/usr/bin/env bash is_nginx_exists=$(which nginx) if [[ $? == 0 ]]; then echo "YES" else echo "NO" fi

Explicación:

which nginx: intentará encontrar el binario nginx de todo el sistema
lista de binarios;

ps - este comando determina si el comando anterior se ejecutó con éxito. En nuestro caso, 0 significa que se encontró el binario;

Es rápido, limpio y lo más importante funciona en máquinas virtuales normales, contenedores docker, etc.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda