Debian获取正在运行的服务版本

Debian获取正在运行的服务版本

如何获取 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上面示例中未显示的内容。这只是因为我们只查询每个包一次(因为uniq那里):一些包提供了几个 init-scripts,这会反映在 的输出中service --status-all

相关内容