linux - 以编程方式查找给定进程/pid的软件包和版本

标签 linux centos rpm

当我查看 rpm 包和 ssh 的 grep 时,我得到以下信息,但是我如何以编程方式知道 ssh 来自包 openssh?

[root@vm ~]# rpm -qa | grep ssh
openssh-clients-7.4p1-21.el7.x86_64
libssh2-1.8.0-3.el7.x86_64
sshpass-1.06-2.el7.x86_64
openssh-7.4p1-21.el7.x86_64
openssh-server-7.4p1-21.el7.x86_64

如果运行以下命令,我看到它是 OpenSSH
[root@vm ~]# ssh -V
OpenSSH_7.4p1, OpenSSL 1.0.2k-fips  26 Jan 2017

但是对于 ssh 守护进程,如果我运行 version 命令,它会因为未知选项 V 而返回非零退出状态
[root@vm ~]# sshd -V
unknown option -- V
OpenSSH_7.4p1, OpenSSL 1.0.2k-fips  26 Jan 2017
usage: sshd [-46DdeiqTt] [-C connection_spec] [-c host_cert_file]
            [-E log_file] [-f config_file] [-g login_grace_time]
            [-h host_key_file] [-o option] [-p port] [-u len]

我想自动化查找给定进程(pid)或服务或守护程序的软件版本的过程。什么是优雅的方式?

最佳答案

如果你有路径:

$ rpm -qf /usr/sbin/sshd

如果你有 $PID:
rpm -qf $(ps af | grep $PID | awk '{print $5}')

关于linux - 以编程方式查找给定进程/pid的软件包和版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61811574/

相关文章:

centos - RhodeCode - 是什么阻止了我的连接?

python - 使用 setup.py bdist_rpm 删除 Django 测试

linux - 如何在 .xsl 文件中打印这个?

linux - 无法读取 APIC 定时器寄存器

mysql -/var目录已满是因为mysql?

docker - Jenkins 无法安装插件 unknownhost

linux - 在 .spec 文件中为包创建目录 - 包含版本和名称

fedora - 如何让我的应用程序在系统启动后自动启动,rpm,Fedora 10

linux - Xen HVM domU VNC 不刷新屏幕

c - GDB 使用什么进行交互?