Debian obtém a versão dos serviços em execução

2

Como obter o número de versão dos serviços em execução no Debian?

service --status-all

não dá.

    
por kursus 07.11.2013 / 02:15

1 resposta

1

Os serviços rodando no Debian ou em qualquer caixa GNU / Linux, não possuem necessariamente uma versão. Em vez disso, todos os daemons que fornecem serviços possuem algum tipo de string de versão e fazem parte de algum pacote. O primeiro é bastante difícil de descobrir, já que nem todos os daemons, embora a maioria deles, respondem a opções de linha de comando óbvias como --version ou -v da maneira que se poderia esperar. O último é um pouco mais fácil: podemos apenas pegar uma lista de todos os scripts init iniciando os vários daemons e listar as informações do pacote para esses arquivos.

Isso não é exatamente o que você pediu, mas chega bem perto. Pelo menos você saberá quais versões de pacotes fornecem quais serviços. O exemplo a seguir produzirá uma listagem de todos os pacotes que fornecem um script-init ou -scripts no diretório /etc/init.d/ .

#!/bin/sh

for pkg in $(for file in /etc/init.d/* ; do \
               dpkg -S $file | awk -F: '{ print $1 }' ; \
             done | sort | uniq) ; do
  echo "$pkg: 'dpkg-query -W -f='${Version}' $pkg'"
done

Isso levará algum tempo para passar, o dpkg não é a coisa mais rápida do planeta e é executado várias vezes por lá. Também haverá algumas coisas listadas por service --status-all , que não são exibidas pelo exemplo acima. Isso ocorre simplesmente porque estamos consultando cada pacote apenas uma vez (devido a uniq ): alguns pacotes fornecem vários scripts de inicialização e isso é refletido na saída de service --status-all .

    
por 07.11.2013 / 09:57