2

Как узнать номер версии запущенных сервисов в Debian?

service --status-all

не дает этого.

1 ответ1

1

Службы, работающие на Debian или на любом компьютере с GNU/Linux, не обязательно имеют версию сами по себе. Вместо этого все демоны, которые предоставляют сервисы, имеют какую-то строку версии и являются частью некоторого пакета. Первый довольно трудно найти, поскольку не все демоны, хотя большинство из них, отвечают на очевидные ключи командной строки, такие как --version или -v как и следовало ожидать. Последнее несколько проще: мы можем просто взять список всех init-скриптов, запускающих различные демоны, а затем перечислить информацию о пакете для этих файлов.

Это не совсем то, что вы просили, но довольно близко. По крайней мере, вы будете знать, какие версии пакетов предоставляют какие услуги. В следующем примере будет показан список всех пакетов, которые предоставляют init-script или -scripts в каталоге /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

Это займет некоторое время, dpkg не самая быстрая вещь на планете, и она запускается там довольно много раз. service --status-all также перечислит некоторые вещи, которые не отображаются в приведенном выше примере. Это просто потому, что мы запрашиваем каждый пакет только один раз (из-за того, что там есть uniq ): некоторые пакеты предоставляют несколько init-скриптов, и это отражается на выходе service --status-all .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .