Debianは実行中のサービスのバージョンを取得します


2

Debianで実行中のサービスのバージョン番号を取得する方法は?

service --status-all

それを与えません。

回答:


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上記の例では表示されないものもいくつかリストされます。これは、単に各パッケージを1回だけクエリするためです(そのためuniq):一部のパッケージは複数のinitスクリプトを提供し、これはの出力に反映されますservice --status-all


完全な回答ありがとうございます。スクリプトはうまく機能します。
クルサス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.