svcadm - 处理服务实例
/usr/sbin/svcadm [-v] enable [ -rt] [-s [-T timeout ]] {FMRI | pattern}...
/usr/sbin/svcadm [-v] disable [ -t] [-s [-T timeout]] { FMRI | pattern}...
/usr/sbin/svcadm [-v] restart [ -s [-T timeout]] { FMRI | pattern}...
/usr/sbin/svcadm [-v] refresh [ -s [-T timeout]] { FMRI | pattern}...
/usr/sbin/svcadm [-v] clear [ -s [-T timeout]] { FMRI | pattern}...
/usr/sbin/svcadm [-v] mark [ -It] [-s [-T timeout ]] instance_state {FMRI | pattern}...
/usr/sbin/svcadm [-v] delegate [-s [-T timeout]] restarter_FMRI svc |inst_FMRI [ svc|inst_FMRI ... ]
/usr/sbin/svcadm [-v] milestone [ -d] [-s [-T timeout]] milestone_FMRI
svcadm 发出针对在服务管理工具中执行的服务的操作请求(请参见 smf(5))。针对某个服务的操作是由分配给它的服务重启程序代理执行的。缺省的服务重启程序为 svc.startd(请参见 svc.startd(1M))。
支持以下选项:
将操作详细地输出到标准输出。
子命令
下面列出了在对服务实例的典型管理中使用的子命令。
对于接受一个或多个操作数的子命令,如果操作数指定了一个服务(而不是一个服务实例)且该服务仅有一个实例,则 svcadm 对该实例执行操作。如果某个缩写的 FMRI(故障管理资源标识符)或模式与多个服务相匹配,则显示一条警告消息并忽略该操作数。请参见 smf(5)。
如果服务具有多个实例,svcadm 将返回非零退出状态。
启用由操作数指定的服务实例。对于每个服务实例,所分配的重启程序会尝试使其进入 online(联机)状态。此操作需要相应的权限来修改服务实例的 "general"(通用)属性组(请参见 smf_security(5))。
如果指定了 –r 选项,svcadm 将启用每个服务实例并递归启用其依赖项。
如果指定了 –s 选项,svcadm 将启用每个服务实例,然后等待每个服务实例进入 online(联机)或 degraded(降级)状态。如果 svcadm 确定服务不能在不经管理员干预的情况下达到这些状态,它会提早返回。
如果指定了 –t 选项,svcadm 会临时启用每个服务实例。临时启用仅会持续到重新引导之前。此操作需要相应的权限来修改服务实例的 "restarter_actions" 属性组(请参见 smf_security(5))。缺省情况下,enable 在重新引导后仍然有效。
如果与 –s 选项一起指定了 –T 选项,svcadm 将等待 timeout 秒以便同步操作完成。如果经过 timeout 秒后操作仍未完成,svcadm 将提前返回。
禁用由操作数指定的服务实例。对于每个服务实例,所分配的重启程序会尝试使其进入 disabled(禁用)状态。此操作需要相应的权限来修改服务实例的 "general"(通用)属性组(请参见 smf_security(5))。
如果指定了 –s 选项,svcadm 将禁用每个服务实例,然后等待每个服务实例进入 disabled(禁用)状态。如果 svcadm 确定服务不能在不经管理员干预的情况下达到此状态,它会提早返回。
如果指定了 –t 选项,svcadm 会临时禁用每个服务实例。临时禁用仅会持续到重新引导之前。此操作需要相应的权限来修改服务实例的 "restarter_actions" 属性组(请参见 smf_security(5))。缺省情况下,disable 在重新引导后仍然有效。
如果与 –s 选项一起指定了 –T 选项,svcadm 将等待 timeout 秒以便同步操作完成。如果经过 timeout 秒后操作仍未完成,svcadm 将提前返回。
请求重新启动由操作数指定的服务实例。此操作需要相应的权限来修改服务实例的 "restarter_actions" 属性组(请参见 smf_security(5))。大多数重启程序将重新启动服务操作实施为一个完整的服务 "stop"(停止)操作,后跟一个 "start"(启动)操作。
此子命令只能重新启动处于 online(联机)或 degraded(降级)状态的服务,因为这些状态是在 smf(5) 中定义的。
使用 –s 选项时,直到每个服务实例达到 online(联机)、degraded(降级)或 maintenance(维护)状态之一后 svcadm 才会返回,但不用等到首先转换到某个中间状态。
如果与 –s 选项一起指定了 –T 选项,svcadm 将等待 timeout 秒以便同步操作完成。如果经过 timeout 秒后操作仍未完成,svcadm 将提前返回。
针对操作数指定的每个服务实例,请求所分配的重启程序使用来自当前配置的值更新该服务的运行配置快照。其中某些值是立即生效的(例如,依赖项更改)。其他值在服务下次 restart(重新启动)之前不会生效。有关更多信息,请参见重启程序和服务文档。
如果服务是由 svc.startd(1M) 管理的,将调用 refresh 方法(如果存在)来请求服务重新读取其自己的配置。对于其他重启程序,请参见重启程序文档。
此操作需要相应的权限来修改服务实例的 "restarter_actions" 属性组(请参见 smf_security(5))。
–s 选项将导致 svcadm 一直等待,直到每个服务实例达到 online(联机)、maintenance(维护)或 degraded(降级)状态之一。如果任何实例在没有进一步管理操作的情况下无法转换到其中一个状态,svcadm 将提前返回。
如果与 –s 选项一起指定了 –T 选项,svcadm 将等待 timeout 秒以便同步操作完成。如果经过 timeout 秒后操作仍未完成,svcadm 将提前返回。
针对操作数指定的每个服务实例,如果它处于 maintenance(维护)状态,则向所分配的重启程序发出服务已修复的信号。如果实例处于 degraded(降级)状态,则请求所分配的重启程序将该服务更改为 online(联机)状态。此操作需要相应的权限来修改服务实例的 "restarter_actions" 属性组(请参见 smf_security(5))。
如果指定了 –s 选项,直到操作数指定的每个服务实例达到 online(联机)状态后 svcadm 才会返回。如果任何实例在没有进一步管理操作的情况下无法达到该状态,svcadm 将提前返回。
如果与 –s 选项一起指定了 –T 选项,svcadm 将等待 timeout 秒以便同步操作完成。如果经过 timeout 秒后操作仍未完成,svcadm 将提前返回。
以下子命令用于服务部署、由较高级别的框架执行的服务管理,以及临时的管理操作。
将为给定的 inst_FMRI 分配的重启程序更改为由 restarter_FMRI 指定的重启程序。特殊标记 master 会将委托的重启程序设置为主重启程序 svc.startd(1M)。特殊标记 reset 会通过删除重启程序定制将委托的重启程序设置回原始的、由文件提供支持的重启程序。重新委托需要在执行重新启动操作后才会生效。并非所有重启程序都支持相同的底层应用程序模型,因此,不是所有潜在的委托都会产生可正常工作的服务实例;请参见在操作中涉及的特定重启程序的手册页来确定兼容性。
如果重启程序不存在或者被禁用,则服务实例不会被委托,并且将返回一个错误。如果重启程序存在但处于脱机或维护状态,则实例会被委托,但可能无法转换回联机状态。将输出一条警告消息。
如果指定了 –s 选项,则 svcadm 会委托每个服务实例,然后等待每个服务实例进入联机状态(如果之前处于联机状态),或者等待常规/重启程序属性组或属性被更新。如果 svcadm 命令确定服务在没有管理员干预的情况下无法到达这些状态,则该命令会提前返回。
如果与 –s 选项一起指定了 –T 选项,svcadm 将等待 timeout 秒以便同步操作完成。如果经过 timeout 秒后操作仍未完成,svcadm 将提前返回。
如果 instance_state 为 "maintenance"(维护),则针对操作数指定的每个服务,svcadm 请求所分配的重启程序将该服务置于 maintenance(维护)状态。有关为每个重启程序采取的操作的详细描述,请参见 svc.startd(1M) 和 inetd(1M)。
如果 instance_state 为 "degraded"(降级),则针对操作数指定的处于联机状态的服务,svcadm 请求分配给这些服务的重启程序将其置于 degraded(降级)状态。
如果指定了 –I 选项,该请求被标记为即时的。
–t 选项仅对维护请求有效。如果指定了此选项,该请求将被标记为临时的,它的效果仅会持续到下次重新引导之前。
如果指定了 –s 选项,直到每个服务实例达到 maintenance(维护)或 degraded(降级)状态后 svcadm 才会返回。
如果 milestone_FMRI 为关键字 "none",则将临时禁用除主重启程序 svc:/system/svc/restarter:default 以外的所有服务。
如果 milestone_FMRI 为关键字 "all",则将废除对所有服务的临时启用和禁用请求。
如果 milestone_FMRI 为下列值之一:
svc:/milestone/single-user:default svc:/milestone/multi-user:default svc:/milestone/multi-user-server:default
则将废除对指定的服务及其依赖的(直接或间接)的所有服务的临时启用和禁用请求。将临时禁用所有其他服务。
使用 "milestone" 子命令更改系统的当前里程碑将不会更改系统的当前运行级。要更改系统的运行级,请直接调用 /usr/sbin/init。
此操作需要相应的权限来修改 svc:/system/svc/restarter:default 服务实例的 "options_ovr" 属性组(请参见 smf_security(5))。
如上所述,–d 选项会即时将里程碑更改为所需的里程碑。此外,它将使指定的里程碑成为缺省的引导里程碑,缺省的引导里程碑在重新引导后仍然有效。缺省的里程碑是由主重启程序 svc:/system/svc/restarter:default 中的 options/milestone 属性定义的。如果此属性不存在,缺省值为 "all"。此操作需要相应的权限来修改 svc:/system/svc/restarter:default 服务实例的 "options"(选项)属性组(请参见 smf_security(5))。
如果与 –s 选项一起指定了 –T 选项,svcadm 将等待 timeout 秒以便同步操作完成。如果经过 timeout 秒后操作仍未完成,svcadm 将提前返回。
如果指定了 –s 选项,svcadm 将更改系统的里程碑,然后等待到指定里程碑的转换完成。如果任何需要转换到 online(联机)或 disabled(禁用)状态以达到里程碑的服务在没有管理员干预的情况下无法进行转换,svcadm 将提前返回。
支持下列操作数:
一个 FMRI,用于指定一个或多个实例。可以通过指定实例名称或指定服务名的后缀部分以缩写形式指定 FMRI。例如,对于以下 FMRI:
svc:/network/smtp:sendmail
下列各项都是有效的缩写:
sendmail :sendmail smtp smtp:sendmail network/smtp
而下列项则无效:
mail network network/smt
如果 FMRI 指定了一个服务,则命令将应用于该服务的所有实例。FMRI 的缩写形式不稳定,不应在脚本或其他永久性工具中使用。
服务实例的 FMRI 根据 fnmatch(5) 描述的 "globbing"(通配)规则与之匹配的模式。如果该模式不以 "svc:" 开头,则会在其前面加上 "svc:/"。
如果某个缩写的 FMRI 或模式与多个服务相匹配,则显示一条警告消息并忽略该操作数。
如果提供了多个 FMRI 或模式参数,则不能对其处理顺序做出任何假设。如果对一个 FMRI 的操作可能会影响对其他 FMRI 的操作(例如具有某些依赖项关系),则应在单独的命令行中指定这些操作以强制执行排序。
如果与 –s 选项一起指定了 –T 选项,svcadm 将等待 timeout 秒以便同步操作完成。如果经过 timeout 秒后操作仍未完成,svcadm 将提前返回。
示例 1 重新启动服务实例
以下命令重新启动 NFS 服务器。缺省服务实例的完整 FMRI 为:svc:/network/nfs/server:default
不过,您可以将该完整的 FMRI 缩写为以下形式:
# svcadm restart nfs/server
示例 2 禁用标准的 HTTP 服务器
以下命令禁用标准的 HTTP 服务器,其中使用了缩写的 FMRI:
$ svcadm disable http
示例 3 启用实例及其依赖的实例
以下命令启用 foo:bar 实例及其依赖的所有实例:
$ svcadm enable -r foo:bar
示例 4 以同步方式启用实例
以下命令启用 foo:bar 实例。在实例联机或 svcadm 断定该服务无法联机之前,此命令不会返回。
$ svcadm enable -s foo:bar
示例 5 限制和恢复正在运行的服务
以下命令将正在运行的服务限制到单用户模式:
# svcadm milestone milestone/single-user
以下命令恢复正在运行的服务:
# svcadm milestone all
将返回以下退出值:
成功完成。
发生了致命错误。会在标准错误输出中显示一条或多条错误消息。
指定的命令行选项无效。
svcadm 断定由于它等待的服务实例本身存在某个问题,不经管理员干预该服务实例无法达到所需的状态。
svcadm 断定由于它等待的服务实例的依赖项存在某个问题,不经管理员干预该服务实例无法达到所需的状态。
svcadm 在等待服务实例时超时,该实例未达到所需的状态(尽管有达到的可能性)。
有关下列属性的说明,请参见 attributes(5):
|
交互式输出为 Uncommitted(未确定)。调用和非交互式输出为 Committed(已确定)。
原文:https://www.cnblogs.com/leisurelyRD/p/13341989.html