OpenSUSE安装lsof软件包解决zypper ps错误

时间:2020-01-09 10:42:55  来源:igfitidea点击:

我运行以下命令$zypper ps
但出现错误:

    Check failed:

    Please install package 'lsof' first.

如何解决此错误?
如何在SELS/OpenSUSE 15.1/15.2上使用zypper ps命令来确定是否需要系统重启?

您需要安装lsof软件包。
但是,首先,让我们看看为什么需要zypper ps命令。

zypper ps:检查失败,请先安装软件包lsof。

每次升级或者删除软件包后,OpenSUSE Linux上可能都有正在运行的进程。
这些进程继续运行,同时删除了文件,例如共享库。

zypper ps命令列出所有使用已删除文件的进程,以及相应的文件,以及服务名称提示(如果其为已知服务)。
这提示更新后可能需要重新启动哪些服务。
通常,程序会继续使用已删除的共享库。
该列表包含以下信息:

选项说明
PID进程的ID
PPID父进程的ID
UID运行进程的用户的标识
User运行进程的用户的登录名
Command用于执行进程的命令
Service服务名称,如果命令与系统服务相关联
Files已删除文件的列表
-s创建不显示已删除文件的简短表。两次给出,仅显示与系统服务关联的进程。给定三次,仅列出相关的系统服务名称。
--print format
-d filename输出一个包含所有proc条目的文件,使其成为最终使用的打开文件集。可以在错误报告中将其作为追加信息提交。

在OpenSUSE Linux上安装lsof

执行以下zypper命令,如下所示:

$ sudo zypper ref

$ sudo zypper up

$ sudo zypper install lsof

如何使用zypper ps命令

只需执行:

$ sudo zypper ps
The following running processes use deleted files:
 
PID   | PPID | UID | User    | Command   | Service   | Files
------+------+-----+---------+-----------+-----------+-------------------------------------
6064  | 1    | 482 | polkitd | polkitd   | polkit    | /usr/lib64/libgobject-2.0.so.0.6200.5
      |      |     |         |           |           | /usr/lib64/libgmodule-2.0.so.0.6200.5
      |      |     |         |           |           | /usr/lib64/libgio-2.0.so.0.6200.5
      |      |     |         |           |           | /usr/lib64/libglib-2.0.so.0.6200.5
16499 | 1    | 0   | root    | python3.6 | firewalld | /usr/lib64/libgobject-2.0.so.0.6200.5
      |      |     |         |           |           | /usr/lib64/libglib-2.0.so.0.6200.5
      |      |     |         |           |           | /usr/lib64/libgio-2.0.so.0.6200.5
      |      |     |         |           |           | /usr/lib64/libgmodule-2.0.so.0.6200.5
 
You Jan wish to restart these processes.
See 'man zypper' for information about the meaning of values in the above table.
 
No core libraries or services have been updated.
Reboot is probably not necessary.

让我们也重新启动OpenSUSE Linux和polkit上的firewalld:

$ sudo systemctl restart firewalld

$ sudo systemctl restart polkit

## NOW VERIFY IT AGAIN ##

$ sudo zypper ps
No processes using deleted files found.
 
No core libraries or services have been updated.
Reboot is probably not necessary.

如何确定我的OpenSUSE或者SUSE Linux服务器是否需要重启

只需运行以下命令,它将告诉您是否需要重新启动:

$ sudo zypper ps

了解如何使用Ansible IT自动化工具自动化Linux内核和软件包更新以及重新引导服务器。

例子

是否只显示与需要重新启动的系统服务关联的进程?
尝试:

$ sudo zypper ps -ss

这是zypper ps --print"%s"的捷径;列出可能需要重新启动的服务:

$ sudo zypper ps -sss

我们可以强制zypper命令打印命令以检索可能需要重新启动的服务的状态信息,然后运行:

$ sudo zypper ps --print "systemctl status %s"

请注意,如果更新了Linux内核或者替换了核心Linux系统库,请重新启动Linux框:

$ sudo reboot

## 或者

$ sudo shutdown -r now "Going down for kernel updates"