通过红帽网络或红帽勘误网站下载并安装了安全勘误后,停用旧有软件、使用新软件这一点很重要。怎么做到这一点要根据您的软件类型而定。以下的列表详细列举了软件的一般类别,并为更新软件包后使用被更新的版本提供了说明。
通常说来,重新引导系统是保证所用软件版本是最新版本的最肯定方法;但是,系统管理员并不总是能够使用这个办法。
用户空间的应用程序是指能够被系统用户引发的任何程序。通常,这类程序只有在某用户、脚本、或自动化任务工具启动它们时才被使用,而且并不持续运行很久。
当这类用户空间的应用程序被更新后,停运系统上该程序的所有实例,然后再重新启动它来使用更新的版本。
内核是红帽企业 Linux 操作系统的核心软件组成部分。它管理内存、处理器和外设的使用,并进行所有的任务调度。
由于这种核心角色,您不可能不停运计算机而重新启动内核。因此,在系统被重新引导前,更新的内核版本就无法被使用。
共享函数库是一组程序代码的集合,例如 glibc 被许多应用程序和服务所使用。使用共享库的应用程序通常在初始化的时候载入共享编码,因此使用已更新的共享库的应用程序必须停止并重新启动。
要判定哪些链接到某个共享库的应用程序正在运行,使用 lsof 命令,如:
lsof /usr/lib/libwrap.so*
该命令返回一个使用 TCP 会绕程序来进行主机访问控制的所有正在运行的程序的列表。因此,如果 tcp_wrappers 软件包被更新,所有在这里列出的程序都必须被停运并重新启动。
SysV 服务是在引导过程中启动的驻留内存的服务器程序。SysV 服务的例子包括:sshd、vsftpd、和 xinetd。
因为只要机器被启动了,这些程序就通常持久性地滞留在内存中,所以每个更新了的 SysV 服务在软件包升级后必须被停运并重新启动。你可以使用 服务配置工具来做到,或以根用户的身份运行一个 shell,然后使用 /sbin/service 命令,如:
/sbin/service <service-name> restart
在前面的例子中,把 <service-name> 改成服务的名称,如 sshd。
由 xinetd 这个超级服务控制的服务只有在有活跃连接时才运行。由 xinetd 控制的服务包括:Telnet、IMAP 和 POP3。
因为这些服务的新实例是在每次 xinetd 收到新请求时被启动的,升级后的连接就会由已更新的软件来处理。然而,如果由 xinetd 控制的服务在被升级时还存在着一些活跃连接的话,这些连接就会由软件的老版本处理。
要停止某个 xinetd 控制的服务的旧实例,升级该服务的软件包,然后停止所有当前正在运行的进程。使用 ps 命令来判定进程是否在运行,再使用 kill 或 killall 命令来停运该服务的所有当前实例。
例如:如果 imap 软件包的安全勘误被发行了,升级这些软件包,然后以根用户身份在 shell 提示符下键入以下命令:
ps -aux | grep imap
该命令返回所有活跃的 IMAP 会话。使用以下命令可以中止单个会话:
kill <PID>
如果这个命令无法中止会话,使用以下命令:
kill -9 <PID>
在前面的例子中,把 <PID> 替换为 IMAP 会话的进程号码(在 ps 命令输出的第二列)。
要中止所有活跃的 IMAP 会话,使用以下命令:
killall imapd