如何利用小游戏解决方案提升企业在金融和物联网领域的运营效率
498
2022-09-24
2-9-svcs-init
chenxiaomin
SMF--service management facility
提供一个集中式的系统服务管理结构
服务之间有相互依存的关系
服务的启动 停止 重启 信息
服务的开启方式 服务的状态显示信息
服务不正常时的故障管理
错误配置的导致服务的不正常运行的详细信息
记录日志对于每个服务都有
一个系统可能有很多个服务在运行
服务的类别包括
应用程序
设备
遗产
里程碑
网络平台
位置
系统
svc:/system/filesystem/root:default
svc说明是有SMF管理
system说明服务类别是system
filesystem说明这个服务是他自己的文件系统
root说明是root文件系统
default说明是这个服务的默认标识
lrc:/etc/rc3_d/S90samba
lrc(legacy run control)说明这个服务不是由SMF管理
/etc/rc3_d 说明由这个路径下的脚本来管理这个服务
S90samba这个服务的标识符是S90samba
查看所有服务
svcs
服务的状态
online 在线
offline 离线
disable 不可用
legacy_run 不受SMF管理的服务
uninitialized 所有服务未被配置之前的初始状态
maintenance 需要维护
degraded 服务可用,但是有限制
milestone-里程碑
single-usre
multi-user
multi-user-server
network
name-services
sysconfig
devices
默认系统启动所有里程碑
以下是在引导时可选的里程碑模式
none
single-user
multi-user
multi-user-server
all 默认
里程碑的概念就是
系统运行级别--对应--里程碑
init0
init s S single-user
init1
init2 multi-user
init3 multi-user-server
init4
init5
init6
当SMF对服务进行管理的时候
svc.configd守护进程将在管理之前备份
这样在SMF管理过后导致出错,也可以恢复
恢复命令是/lib/svc/bin/restore_repository
安装提示操作
who -r 解析
run-level 3 May 5 08:47 3 0 S
当前运行等级为3
在最后的一次运行等级是在 5月5好08:47
当前运行等级 3
这次运行等级的上一次运行等级是0
以前的运行等级是S
改变运行等级
init [123456sS]
必须要有svc.startd守护进程才可以使用init命令
关闭系统 shutdown poweroff halt
也可以通过svcadm 通过改变里程碑来改变运行等级
Solaris9以前使用init守护进程
init守护进程初始化流模块
Solaris10开始使用svc.startd守护进程
svc.startd建立一个反应系统停电关机和开启的进程
---系统引导阶段system boot phase---
phase阶段
一、boot Prom 阶段
PROM运行自检
引导本地引导设备
读取引导块reads bootblk
装载引导块loads bootblk
二、boot programs 阶段
引导块装载第二引导程序ufsboot
ufsboot装载内核kernel
三、kernel initialization阶段
内核装载配置文件 reads configuration file /etc/system
内核初始化自身并装载模块 initializes itself and loads modules
四、init 阶段
内核开始kernel starts /etc/init
初始化svc.startd进程 init starts
五、启动服务
svc.startd 启动系统服务
1.自检
POST检查硬件及内存 还有诊断
显示系统信息hostid memory NVRAM-S/N PROM-rversion processor-type-speed
根据PROM的boot-device参数决定引导设备
loads disk label 在磁盘的磁道的0扇区位置
PROM从磁盘中发现boot programs并 加载到 PROM 读取bootblk 在磁道的1-15扇区
boot命令加载bootblk到memory (系统安装的时候通过installboot命令安装的引导块)
2.引导程序
bootblk加载第二引导程序usfboot程序到memory
通过installboot命令,bootblk记录了ufsboot的路径
ufsboot装载3分之2的内核到memory
内核分2类:genunix 独立平台内核文件platform-independent generic kernel file
unix 限定平台内核文件platform-specific kernel file
在运行64bit系统上,从/platform/'uname -m'/kernel/sparcv9这个目录加载3分之2的内核文件
Solaris 10 for SPARC只能运行在64bit系统上
3.内核初始化
内核读取/etc/system文件
内核初始化自己,接着开始装载模块
内核开始启动/etc/init进程
Sun的kernel是一个小的静态核,包含大多动态genunix和unix的可受载核模块
模块装载驱动程序,二进制文件,流,还有其他指定的模块
内核模块目录在/kernel和/usr/kenrel,/platform/'uname -m'/kernel或
/platform/'uname -i'/kernel目录,目录底下包含:
drv/sparcv9 设备驱动
exec/sparcv9 可执行文件格式
fs/sparcv9 文件系统类型
misc/sparcv9 混杂的模块
sched/sparcv9 调度
strmod/sparcv9 数据流模块
sys/sparcv9 为应用程序定义的接口
加载64bit kernel在/platform/sun4u/kernel/sparcv9/下的unix和genunix
加载模块在
/kernel
/usr/kernel
/platform/'uname -m'/kernel
/platform/'uname -i'/kernel
更小的内核划分有利于内存的使用和系统参数的修改
/etc/system文件作用 定义了5个段
这个文件在做每一次修改之前,一定要记得备份,若系统因为修改过该文件而导致无法启动时,进入ok模式使用命令boot -a 使用交互式引导选择备份的system文件进入系统
moddir搜索内核模块的路径,在系统引导的时候
root device and root fs configuration定义root文件系统类型与设备
exclude定义拒绝装载的模块
forceload定义强制装载的模块
set定义新的内核参数值
以*开头作为注释符号,每行命令必须等于小于80个字符
4.init
init守护进程使用/etc/inittab文件信息开始启动svc.startd进程
inittab表的条目
id 2个字符标识条目,也有3个字符的
rstate:可在此运行等级下运行
action 标识命令如何运行 选项sysinit和powerfail
process 运行的命令
solaris8以前的所有rc脚本信息写入/dev/console文件,现在写入/dev/msglog
5.启动服务
svc.startd 为启动合适的运行等级 (以前是init进程负责)
svc.startd进程使用/var/svc/manifest目录下的文件确定系统运行的里程碑
/var/svc/manifest/milestone目录下的文件也可能参考其他的xml文件
像/sbin/rc2和/lib/svc/method/fs-local
遗留的boot进程/sbin/rc* 通过svc.startd进程来执行这些脚本,设置变量,验证条件,呼叫其
他脚本运行以达到该运行等级要求
rc1 rc5 rc6 是相互硬链接
在/etc/下的rc*文件动态链接到/sbin/rc*文件
介绍/sbin/目录下的rc脚本
/sbin/rc0---运行/etc/rc0.d/K* /etc/rc0.d/S*脚本停止系统服务和守护进程,
执行快速系统清除功能
/sbin/rc1---运行/etc/rc1.d/S*脚本,停止系统服务和守护进程,终止某一应用进程,
卸载所有远程文件系统
/sbin/rc2---运行/etc/rc2.d/K*和/etc/rc2.d/S*脚本启动一个应用守护进程
/sbin/rc3---运行/etc/rc3.d/K*和/etc/rc3.d/S*脚本启动一个应用守护进程,若K*脚本不正常
都会被运行
/sbin/rc5 rc6---运行/etc/rc0.d/K*和/etc/rc0.d/S*脚本停止系统服务和守护进程,
执行快速系统清除功能
/sbin/rcS---运行/etc/rcS.d脚本将系统带到S运行等级并建立最小网络模式
在以上这些目录下,K开头的脚本是Kill,S开头的脚本是Start
以 /.S50apache {start | stop}方式运行或停止S50apache脚本
------
控制脚本目录/etc/init.d/
该目录下的apache文件和/etc/rc3.d/S50apache文件是相互硬链接关系
启动或停止这些脚本的方式/etc/init.d/apache {start |stop }
----------
svcs命令
检查服务状态 svcs svc:/system/console-login:default
-d检查服务依赖关系 svcs -d svc:/system/console-login:default
-D 检查依赖该服务的服务有哪些 svcs -D svc:/system/filesystem/local 列出依赖该服务的服务
svcs -x cron 检查服务为什么没运行
svcadm管理服务命令
svcadm -v enable /system/cron:default 没有其他参数永久关闭 直到enable命令出现
-v显示开启信息
svcadm -v disable -t system/cron:default
-t 临时关闭服务 下次重启自动开启
前缀为lcr的服务不受SMF管理
svcs -a|grep lrc可以查看到不受SMF管理的服务列表
---创建新的服务脚本----
步骤:
判断这个服务是用来开启还是终止进程的
对这个服务建立一个名称,并分类
判断服务是否需要运行多个实例
确定服务的依赖关系:依赖还是被依赖
假如一个脚本必须开始或者终止一个进程,可以创建这个脚本并写入到/usr/local/svc/method/目录下
创建一个服务清单文件,服务是通过svccfg命令还是在引导的时候被体现
使用svccfg命令将服务写入SMF,以便管理
例如:
vi /usr/local/svc/method/newservice
chmod 544 /usr/local/svc/method/newservice
cd /var/svc/manifest/site
vi newservice.xml
svccfg import /var/svc/manifest/site/newservice.xml
svcs newservice
svcadm -v disable site/newservice
svcs newservice
svcadm -v enable site/newservice
svcs newservice
svcs -d milestone/multi-user:default
--增加一个不属于SMF管理的 服务----lcr
vi /etc/init.d/filename 编辑脚本
chmod 744 /etc/init.d/filename 修改权限
chgrp sys /etc/init.d/filename 修改组
cd /etc/init.d/ 进入目录
ln filename /etc/rc#.d/S##filename 创建符号链接
ln filename /etc/rc#.d/K##filename 创建符号链接
ls -li /etc/rc#.d/S##filename 查看
ls -li /etc/rc#.d/K##filename 查看
/etc/init.d/filename start 验证脚本
------
---关闭系统---
shutdown
系统管理,维护,转移系统等需要
必须安全关闭系统:完全,有序,写入disk,kill 进程,umount文件系统
shutdown的不同方式 只有root用户才有这些操作的权限
1.进入单用户模式
2.进入ok模式
3.断电
4.关闭系统并重启
/usr/init {S,0,1,5,6}
/usr/sbin/shutdown
init 命令执行关机 好处在于它使用rc0脚本关闭系统,不会影响系统,但是不给在线的用户发出警告
shutdown 调用init命令关机,但是向在线用户发出关闭系统信息,默认延迟60s执行命令
shutdown -y -g grace-period -i init-state optional message
例:shutdown -y -g0 -i6 "###-The system will shutdown,please save your documents,Thank you !!!-###"
强制关机命令
halt
poweroff
reboot
-------指定里程碑----引导系统-----
在没有指定的情况下,系统默认启动all 所有的里程碑
svcadm -v mileatone -d multi-user-server:default
有效的选项包括
all
none
svc:/milestone/single-user:default
svc:/milestone/multi-user:default
svc:/milestone/multi-user-server:default
---------
管理服务信息储存库
储存历史服务设置的,每当服务设置有变动的时候将备份,若设置错误导致无法启动系统,还可以恢复
执行脚本查看服务信息库
cd /lib/svc/bin
./restore_repository
--------为止----------
=========================================
SMF 后台服务管理机制
确定基本运行及 比较运行级别 SMF里程碑 确定启动进程的阶段
SMF命令控制启动程序
启动 停止 重新启动服务
每个服务都有一个log文件,保存在 /var/svc/log/目录下
命令
svcs 显示服务信息情况
svcs -a 显示所有服务
svcs -a |grep nfs 查×××
/lib/svc/method/nfs-server start 开启服务
/lib/svc/method/nfs-server stop 停止服务
svcs(service status)命令
svcs用于查看服务的状态,
svcs -a用于查看所有状态的服务
svcs -x用于查看未正常启动的服务
svcs -l
svcadm(manipulate service instances)命令
svcadm用来启用/禁用、启动/停止SMF服务。
svcadm enable fmri -- 启用一个SMF服务,同时运行该服务
svcadm disable fmri -- 禁用一个SMF服务,同时停止该服务
svcadm restart fmri -- 重启一个SMF服务
svcadm refresh fmri -- 刷新一个SMF服务,相当于让服务重新载入配置文件
svcadm mark fmri -- 将SMF服务标记为维护状态
svcadm clear fmri -- 清除SMF服务的维护状态
svcadm milestone milestone -- 进入指定的服务里程碑,相当于进入相应的运行级别
服务状态
svcs命令可以列出服务标示和服务状态情况。服务状态包括以下类型:
Online:服务实例是enable并且成功启动的。
Offline:服务实例是enable的但没有启动。
Disable:服务实例是enable并且运行的。
Legacy_run:这个服务并是通过SMF来管理的,但是可以通过svc来查看。
Uninitialized:在它们的配置文件可读之前,要初始化所有的服务。
Maintenance:这个服务发生了错误,必须等待管理员解决。
Degraded:这个服务是enable但是受限制运行。
7种里程碑
svcs |grep milestone
Single-user 单用户模式
Multi-user 多用户模式
Multi-user-server 多用户多服务器模式
Network 网络模式
Name-services 名服务模式
Sysconfig 系统配置模式
Devices 设备模式
里程碑的概念就是
系统运行级别 对应里程碑
init0
init s S single-user
init1
init2 multi-user
init3 multi-user-server
init4
init5
init6
svc.startd进程 维持系统服务
Svc.startd进程确保系统启动为合适的里程碑方式。如果启动的时候没有指定里程碑,Svc.startd会启动建立包括所有系统服务的里程碑(all)。
在启动系统的时候指定里程碑用-m参数。
> boot –m milestone=single-user
svccfg(service configurations)命令
svccfg命令用来管理SMF repository。运行不带参数的svccfg命令进入一个交互式的shell,在该shell里可以对服务、服务实例进行配置、导入、导出、备份、恢复操作
SMF服务排错
使用svcs -xv可以查找未正常启动的服务。SMF对每个服务实例都在/var/svc/log目录创建了一个和服务FMRI对应的日志文件,比如apache2服务的FMRI为svc:/network/-l /var/svc/log |grep network
*****inetd服务*****
inetadm -e fmri 启用指定的inetd服务
inetadm -d fmri 禁用指定的inetd服务
inetadm -l fmri 列出指定inetd服务的属性
inetadm -p 列出默认inetd服务的属性
查看telnet服务
inetadm |grep telnet
禁用telnet服务
inetadm -d telnet
未使用SMF的服务有
ls -l /etc/rc3.d 目录下的
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~