系统管理指南:基本管理

第 10 章 关闭系统(任务)

本章介绍关闭系统的过程。

以下列出本章所介绍的信息:

有关系统运行级的概述信息,请参见第 18 章

有关与运行级和引导文件相关的过程的信息,请参见关闭系统(任务图)

关闭系统(任务图)

任务 

说明 

参考 

确定登录到系统的用户。 

使用 who 命令可确定登录到系统的用户。

如何确定登录到系统的用户

关闭服务器。 

使用带有合适选项的 shutdown 命令关闭服务器。

如何关闭服务器

关闭独立系统。 

使用 init 命令并指明相应的运行级别以关闭独立系统。

如何关闭独立系统

关闭所有设备的电源。 

关闭系统(包括以下设备)电源: 

  • CPU

  • 显示器

  • 外部设备,如磁盘、磁带和打印机

如何关闭所有设备的电源

关闭系统

Oracle Solaris 软件可以持续运行,从而使电子邮件和网络软件可以正常工作。但是,某些系统管理任务和紧急情况需要关闭系统,使其进入可以安全断电的级别。在某些情况下,需要使系统进入中间级别,在此级别并非所有系统服务都可用。

这类情况包括以下几项:

有关需要关闭系统的系统管理任务的完整列表,请参见第 9 章

有关使用系统电源管理功能的信息,请参见 pmconfig(1M) 手册页。

系统关闭命令

关闭系统的主要方法是使用 initshutdown 命令。这两个命令都会执行系统的正常关闭。同样,系统会将所有的文件系统更改写入磁盘,并以正常方式终止所有系统服务、进程和操作系统。

由于系统服务会突然终止,因此使用系统的 Stop 组合键或关闭系统然后再将其打开都不是正常关机。但是,有时在紧急情况下需要执行这些操作。有关系统恢复技术的说明,请参见第 12 章第 13 章


注 –

在运行 Solaris 10 6/06 发行版(或更高版本)的 x86 系统上,按下并松开电源按钮可启动系统的正常关闭。此方法与使用 init 5 命令等效。


下表介绍了各种关闭命令并提供了使用这些命令的建议。

表 10–1 关闭命令

命令 

说明 

何时使用 

shutdown

用于调用 init 程序来关闭系统的可执行 shell 脚本。缺省情况下,会使系统进入运行级别 S。

由于系统会通知用户即将发生关闭操作,因此建议对在运行级别 3 运行的服务器使用此命令。另外,还会通知正在从即将关闭的服务器装入资源的系统。  

init

用于在更改运行级别之前中止所有活动进程并同步磁盘的可执行文件。

建议在不影响其他用户的情况下对独立系统使用此命令。由于系统不会通知用户即将发生的关闭操作,因此该命令可以更快地关闭系统。 

reboot

用于同步磁盘并将引导指令传递给 uadmin 系统调用的可执行文件。此系统调用会反过来停止处理器。

init 命令是首选方法。

haltpoweroff

用于同步磁盘并停止处理器的可执行文件。

由于此命令不会关闭所有进程并卸载所有其余的文件系统,因此不建议使用它。仅在紧急情况下或大多数服务已停止时,才应停止服务,而无需执行正常关机操作。 

通知用户系统关闭时间

启动 shutdown 命令时,系统会向当前登录到该系统的所有用户以及从受影响系统挂载资源的所有系统广播一条警告,然后发出最终的关闭消息。

出于此原因,需要关闭服务器时首选 shutdown 命令,而不是 init 命令。使用这任一命令时,您可能需要向用户发送电子邮件,提供有关任何预定系统关闭的通知。

使用 who 命令可以确定系统中需要通知的用户。此命令还可用于确定系统的当前运行级别。有关更多信息,请参见确定系统的运行级别who(1) 手册页。

Procedure如何确定登录到系统的用户

  1. 登录即将关闭的系统。

  2. 显示所有登录到系统的用户。


    $ who
    

示例 10–1 确定登录到系统的用户

以下示例说明如何显示登录到系统的用户。


$ who
holly       console      May  7 07:30
kryten      pts/0        May  7 07:35   (starlite) 
lister      pts/1        May  7 07:40   (bluemidget)

Procedure如何关闭服务器

  1. 成为超级用户或同等角色。

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见 《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”

  2. 了解用户是否已登录到系统。


    # who
    

    屏幕上会显示所有登录用户的列表。您可能需要发送邮件或广播消息,以使用户知道系统即将关闭。

  3. 关闭系统。


    # shutdown -iinit-level -ggrace-period -y
    
    -iinit-level

    使系统进入到与缺省级别 S 不同的 init 级别。选项包括 0、1、2、5 和 6。

    运行级别 0 和 5 是为关闭系统而保留的状态。运行级别 6 用于重新引导系统。运行级别 2 可用作多用户操作状态。

    -ggrace-period

    指示系统关闭前的时间(以秒为单位)。缺省值为 60 秒。

    -y

    继续关闭系统,无需任何介入。否则,系统会提示您在 60 秒后继续执行关闭过程。

    有关更多信息,请参见 shutdown(1M) 手册页。

  4. 如果系统要求您确认,请键入 y


    Do you want to continue? (y or n): y
    

    如果使用了 shutdown -y 命令,系统将不提示您继续操作。

  5. 如果看到提示,请键入超级用户口令。


    Type Ctrl-d to proceed with normal startup,
    (or give root password for system maintenance): xxxxxx
    
  6. 完成系统管理任务后,请按 Control-D 组合键,以返回到缺省的系统运行级别。

  7. 使用下表确认系统是否处于您在 shutdown 命令中指定的运行级别。

    指定的运行级别 

    基于 SPARC 的系统提示符 

    基于 x86 的系统提示符 

    S(单用户级别) 

    0(电源关闭级别) 

    ok>

    Press any key to reboot

    运行级别 3(共享远程资源的多用户级别) 

    hostname console login:

    hostname console login:


示例 10–2 SPARC: 使服务器进入运行级别 S

在以下示例中,使用 shutdown 命令可使基于 SPARC 的系统在三分钟内进入运行级别 S(单用户级别)。


# who
root   console      Jun 14 15:49    (:0)

# shutdown -g180 -y

Shutdown started.    Mon Jun 14 15:46:16 MDT 2004

Broadcast Message from root (pts/4) on venus Mon Jun 14 15:46:16...
The system venus will be shut down in 3 minutes .
.
.
Broadcast Message from root (pts/4) on venus Mon Jun 14 15:46:16...
The system venus will be shut down in 30 seconds .
.
.
INIT: New run level: S
The system is coming down for administration.  Please wait.
Unmounting remote filesystems: /vol nfs done.
Shutting down Solaris Management Console server on port 898.
Print services stopped.
Jun 14 15:49:00 venus syslogd: going down on signal 15
Killing user processes: done.

Requesting System Maintenance Mode
SINGLE USER MODE

Root password for system maintenance (control-d to bypass): xxxxxx
single-user privilege assigned to /dev/console.
Entering System Maintenance Mode
#


示例 10–3 SPARC: 使服务器进入运行级别 0

在以下示例中,使用 shutdown 命令可使基于 SPARC 的系统在 5 分钟内进入运行级别 0,而无需进行其他确认。


# who
root       console       Jun 17 12:39
userabc		 pts/4        Jun 17 12:39   (:0.0)
# shutdown -i0 -g300 -y
Shutdown started.    Thu Jun 17 12:40:25 MST 2004

Broadcast Message from root (console) on pretend Thu Jun 17 12:40:25...
The system pretend will be shut down in 5 minutes 
.
.
.
Changing to init state 0 - please wait
# 
INIT: New run level: 0
The system is coming down.  Please wait.
System services are now being stopped.
.
.
.
The system is down.
syncing file systems... done
Program terminated
Type  help  for more information
ok 

如果要使系统进入运行级别 0 以关闭所有设备的电源,请参见如何关闭所有设备的电源



示例 10–4 SPARC: 将服务器重新引导至运行级别 3

在以下示例中,使用 shutdown 命令可将基于 SPARC 的系统在两分钟内重新引导至运行级别 3。不需要进行其他确认。


# who
root   		console      Jun 14 15:49    (:0)
userabc    pts/4        Jun 14 15:46    (:0.0)
# shutdown -i6 -g120 -y
Shutdown started.    Mon Jun 14 15:46:16 MDT 2004

Broadcast Message from root (pts/4) on venus Mon Jun 14 15:46:16...
The system venus will be shut down in 2 minutes 


Changing to init state 6 - please wait
# 
INIT: New run level: 6
The system is coming down.  Please wait.
.
.
.
The system is down.
syncing file systems... done
rebooting...
.
.
.
venus console login:

另请参见

无论您为何关闭系统,您都可能希望返回运行级 3,在该级别下所有的文件资源都可用且用户可以登录。有关使系统返回多用户级别的说明,请参见第 12 章

Procedure如何关闭独立系统

需要关闭独立系统时,请使用以下过程。

  1. 成为超级用户或同等角色。

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见 《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”

  2. 关闭系统。


    # init 5
    

    有关更多信息,请参见 init(1M) 手册页。

    • 或者,您也可以使用 uadmin 命令关闭系统。


      # uadmin 2 0
      
    • 在运行 Solaris 10 6/06 发行版(或更高版本)的基于 x86 的系统上,可按下并松开电源按钮来启动系统的正常关闭,进而关闭系统。

      此功能与使用 init 5 命令关闭系统等效。有关更多信息,请参见关闭和引导系统方面的新增功能

  3. 使用下表验证系统是否处于您在 init 命令中指定的运行级别。

    指定的运行级别 

    基于 SPARC 的系统提示符 

    基于 x86 的系统提示符 

    S(单用户级别) 

    #

    #

    2(多用户级别) 

    #

    #

    0(电源关闭级别) 

    ok>

    Press any key to reboot

    3(共享 NFS 资源的多用户级别) 

    hostname console login:

    hostname console login:


示例 10–5 使用 uadmin 命令关闭系统


# uadmin 2 0
syncing file systems... done
Program terminated


示例 10–6 使独立系统进入运行级别 0

在此示例中,使用 init 命令可使基于 x86 的独立系统进入可安全关闭电源的级别。


# init 0
#
INIT: New run level: 0
The system is coming down.  Please wait.
.
 
.
 
.
The system is down.
syncing file systems... [11] [10] [3] done
Press any key to reboot

如果要使系统进入运行级别 0 以关闭所有设备的电源,请参见如何关闭所有设备的电源



示例 10–7 SPARC: 使独立系统进入运行级别 S

在此示例中,使用 init 命令可使基于 SPARC 的独立系统进入运行级别 S(单用户级别)。


# init s
#
INIT: New run level: S
The system is coming down for administration.  Please wait.
Unmounting remote filesystems: /vol nfs done.
Print services stopped.
syslogd: going down on signal 15
Killing user processes: done. 

SINGLE USER MODE

Root password for system maintenance (control-d to bypass): xxxxxx
single-user privilege assigned to /dev/console.
Entering System Maintenance Mode
# 

另请参见

无论您为何关闭系统,您都可能希望返回运行级 3,在该级别下所有的文件资源都可用且用户可以登录。有关使系统返回多用户级别的说明,请参见第 12 章

关闭所有设备的电源

执行以下操作时,需要关闭所有系统设备的电源:

关闭系统设备的电源,包括 CPU、显示器以及外部设备(如磁盘、磁带和打印机)。

关闭所有系统设备的电源之前,应该先正常地关闭系统,如前几节所述。

Procedure如何关闭所有设备的电源

  1. 选择以下方法之一关闭系统:

  2. 系统关闭后,请关闭所有设备的电源。如有必要,还要拔除电源电缆。

  3. 恢复电源后,请执行以下步骤打开系统和设备。

    1. 插入电源电缆。

    2. 打开显示器。

    3. 打开磁盘驱动器、磁带机和打印机。

    4. 打开 CPU。

      系统将进入运行级别 3。