SMF 里程碑(milestone)
SMF 里程碑是聚合多个服务并描述系统特定状态的服务。
其中一个里程碑(milestone)代表运行级别。
列出所有里程碑:
# svcs milestone* STATE STIME FMRI online Jun_30 svc:/milestone/unconfig:default online Jun_30 svc:/milestone/config:default online Jun_30 svc:/milestone/devices:default online Jun_30 svc:/milestone/network:default online Jun_30 svc:/milestone/single-user:default online Jun_30 svc:/milestone/name-services:default online Jun_30 svc:/milestone/self-assembly-complete:default online Jun_30 svc:/milestone/multi-user:default online Jun_30 svc:/milestone/multi-user-server:default
检索服务配置属性
任何服务都会有多个与之关联的属性。
列出服务的属性值的语法是:
# svcprop -p [property] [service]
例如,要显示启动 cron 守护进程的 shell 脚本:
# svcprop -p start/exec system/cron /lib/svc/method/svc-cron
SMF 命令
用于管理服务和进行配置更改的不同命令是:
svcs | 显示有关服务的信息 |
---|---|
svcadm | 管理服务实例的状态 |
svcprop | 检索服务配置属性 |
svccfg | 导入、导出和修改服务配置 |
配置文件和目录
用于管理/排除故障和配置 SMF 的文件和目录是:
/etc/svc/repository.db | SMF的实际数据库 |
---|---|
/etc/svc/volatile | 早期启动问题的日志 |
/lib/svc/bin/svc.startd | 主重启守护进程 |
/lib/svc/bin/svc.configd | 存储库守护进程 |
/var/svc/manifest/system | 服务 XML 文件 |
/lib/svc/method | 启动shell脚本 |
/var/svc/log | 服务日志文件存储在这里 |
服务依赖
服务可能依赖于其他服务。
除非这些服务不在线,否则依赖的服务不会启动。
- 检查依赖服务(我依赖的服务)
# svcs -d /system/filesystem/local STATE STIME FMRI online 20:08:17 svc:/system/filesystem/minimal:default online 20:08:19 svc:/milestone/single-user:default
- 检查哪些服务依赖于特定服务(依赖于我的服务):
# svcs -D /system/filesystem/local online 20:08:19 svc:/network/shares/group:default online 20:08:19 svc:/system/cron:default online 20:08:19 svc:/application/opengl/ogl-select:default online 20:08:20 svc:/network/nfs/status:default ......
服务的组成部分
大多数服务由 4 个组件组成。
考虑 cron 服务的例子:
XML file | /var/svc/manifest/system/cron.xml |
---|---|
Daemon | /usr/sbin/cron |
FMRI | system/cron(短格式)svc:/system/cron(长格式)svc:/system/cron:default(包括实例) |
Log file | /var/svc/log/system-cron:default.log |
修改服务配置属性
可以使用 svccfg 命令的 3 种模式更改服务配置属性
* Interactive mode * From a file that contains a series of subcommands * Command line mode
# svccfg svc:> select system/console-login svc:/system/console-login> setprop ttymon/terminal_type = astring: vt100 svc:/system/console-login> quit
确保刷新或者清除(以防服务中断)服务以重新读取我们所做的配置更改。
# svcadm refresh system/console-login
获取有关服务的信息
- 列出所有服务(启用/禁用/维护):
# svcs -a STATE STIME FMRI legacy_run 17:54:51 lrc:/etc/rc3_d/S81volmgt online 13:47:55 svc:/network/telnet:default online 13:47:55 svc:/network/nfs/rquota:default online 13:47:55 svc:/network/ftp:default ........
- 列出与每个服务实例关联的所有进程(如果有):
# svcs -p online 13:47:45 svc:/system/sac:default 13:47:45 223 sac 13:47:45 227 ttymon online 13:47:45 svc:/system/cron:default 13:47:45 226 cron ..........
- 列出有关服务的所有详细信息:
# svcs -l system/cron fmri svc:/system/cron:default name clock daemon enabled true state online next_state none state_time Thu Dec 30 13:47:45 2004 logfile /var/svc/log/system-cron:default.log restarter svc:/system/svc/restarter:default contract_id 41 dependency require_all/none svc:/system/filesystem/local (online) dependency require_all/none svc:/milestone/name-services (online)
- 显示损坏的服务及其背后的原因:
# svcs -xv svc:/application/print/server:default (LP print server) State: disabled since Wed Mar 02 10:28:00 2005 Reason: Disabled by an administrator. See: http://sun.com/msg/SMF-8000-05 See: man -M /usr/share/man -s 1M lpsched Impact: 1 dependent service is not running: svc:/application/print/rfc1179:default
服务管理工具(SMF-Service management facility)最初是在 Solaris 10 中引入的,用于管理系统和应用程序服务。
这取代了旧的 init 脚本和其他启动脚本。
更多: zhilu jiaocheng
SMF 服务状态
每个 SMF 服务都将具有下表中提到的状态之一。
使用 svcadm 命令可以更改状态。
状态 | 说明 |
---|---|
uninitialized | 所有服务的初始状态,直到 svc.startd 将它们移动到另一个状态 |
offline | 已启用但未运行 |
online | 启用并运行 |
maintenance | 由于某种原因坏了 |
disabled | 禁用实例 |
legacy-run | 不由 SMF 直接管理的服务 |
FMRI(故障管理资源标识符)
每个服务都有一个 FMRI,其中包括服务名称和实例名称。
例如 :
svc:/system/cron (longer form) svc:/system/cron:default (include the instance)
服务和服务实例有什么区别
考虑 Web 服务。
配置为侦听端口 80 的特定 Web 服务器是 Web 服务的一个实例。
每个服务的第一个实例通常被标记为默认实例。
例如 cron 将具有默认实例 "svc:/system/cron:default" 。
服务启动/停止
现在我们已经查看了服务和服务的 FMRI,我们可以使用 svcadm 命令启用/禁用服务。
在线服务之前,请确保所有必需的依赖服务都在线。
命令 | 说明 |
---|---|
# svcadm enable [service] | 启用服务 |
# svcadm disable [service] | 禁用服务 |
# svcadm disable -t [service] | 暂时禁用服务直到下次重新启动 |
# svcadm clear [service] | 在维护模式下清除服务 |
# svcadm refresh [service] | 刷新服务重新读取配置文件。 |
日期:2020-09-17 00:15:24 来源:oir作者:oir