Debian ottiene la versione dei servizi in esecuzione


2

Come ottenere il numero di versione dei servizi in esecuzione in Debian?

service --status-all

non lo dà.

Risposte:


1

I servizi in esecuzione su Debian o su qualsiasi box GNU / Linux non hanno necessariamente una versione autonoma. Invece tutti i demoni che forniscono servizi hanno una sorta di stringa di versione e fanno parte di alcuni pacchetti. Il primo è piuttosto difficile da scavare poiché non tutti i demoni, sebbene la maggior parte di essi, rispondano a ovvi parametri della riga di comando --versiono -val modo in cui ci si potrebbe aspettare. Quest'ultimo è un po 'più semplice: possiamo semplicemente prendere un elenco di tutti gli script di avvio che avviano i vari demoni e quindi elencare le informazioni sul pacchetto per quei file.

Questo non è esattamente quello che hai chiesto, ma si avvicina abbastanza. Almeno saprai quali versioni del pacchetto forniscono quali servizi. L'esempio seguente produrrà un elenco di tutti i pacchetti che forniscono uno script o script-init nella directory /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

Ci vorrà del tempo per superarlo, dpkg non è la cosa più veloce del pianeta e viene eseguita parecchie volte lì. Ci saranno anche alcune cose elencate in base alle service --status-allquali non sono mostrate nell'esempio sopra. Questo semplicemente perché stiamo interrogando ogni pacchetto una sola volta (a causa di ciò uniq): alcuni pacchetti forniscono diversi script di inizializzazione e questo si riflette poi sull'output di service --status-all.


Grazie per la tua risposta completa. La sceneggiatura funziona bene.
kursus,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.