service --status-all leva muito tempo ... o que são alternativas?

0

O comando:

service --status-all

Leva muito tempo para percorrer todos os serviços, especialmente quando tudo que eu quero da saída é o nome (não me importo se está em execução ou não). Existe uma maneira mais rápida de recuperar o nome de um serviço que contém um padrão de caractere conhecido?

Com o Ubuntu 14.04 e o Ubuntu 16.04 usando nomes de serviços diferentes para o php-fpm (php5-fpm no Ubuntu 14.04 e php7.0-fpm no Ubuntu 16.04), os desenvolvedores que suportam múltiplas plataformas precisam ser capazes de determinar o nome do serviço. / p>

Se eu executar o comando abaixo em um computador mais lento:

service --status-all 2>&1 | grep -F -- "-fpm" | awk '{print $4}'

Demora alguns segundos (até 5 segundos) para retornar "php7.0-fpm".

Os desenvolvedores que precisam interagir com esses serviços precisam de uma maneira mais rápida de determinar o nome do serviço, já que eles mudam continuamente de uma versão do SO para outra.

Alguém sabe de uma maneira melhor e mais rápida de fazer isso?

Nesse meio tempo, apresentei este bug aqui:

link

Eu não sei como mais posso realizar o que preciso fazer rapidamente ...

    
por OwN 10.01.2018 / 11:05

2 respostas

0

Se você já sabe que isso depende da versão do Ubuntu, por que não apenas verificar a versão?

case $(lsb_release -sc) in
trusty)
    fpm_service=php5-fpm
    ;;
xenial)
    fpm_service=php7.0-fpm
    ;;
artful)
    fpm_service=php7.1-fpm
    ;;
esac

Como alternativa, você pode testar os arquivos de serviço em /etc/init.d (já que todos os pacotes FPM atuais fornecem um script /etc/init.d ):

find /etc/init.d/ -type f -iname '*-fpm' -printf "%P\n"
    
por muru 10.01.2018 / 11:25
0

Parece que vou com a seguinte abordagem:

    fpmService=$(ls /etc/init.d 2>&1 | grep -F -- "fpm");
    if [ -z "$fpmService" ]; then
        fpmService=$(ls /lib/systemd/system 2>&1 | grep -F -- "fpm" | grep -o "[^(service)]*" | sed "s/\.$//"
    fi
    if [ -z "$fpmService" ]; then
        fpmService=$(ls /lib/systemd/system 2>&1 | grep -F -- "' . $service . '" | grep -o "[^(service)]*" | sed "s/\.$//")
    fi

Estúpido, mas funciona ... o comando service ainda deve nos fornecer uma interface para fazer isso ...

    
por OwN 10.01.2018 / 11:46