POST
确定启动设备
执行stage2 代码
/etc/rc.d/rc#.d
根据运行级别启动对应的/etc/rc.d/rc#.d目录下的服务(#0-6)
/etc/rc.local
0:关机
1:单用户模式(root自动登录), single, 维护模式
2:多用户模式,启动网络功能,但不会启动NFS;维护模式
3:多用户模式,正常模式;文本界面
4:预留级别;可同3级别
5:多用户模式,正常模式;图形界面
6:重启
service 服务 start|stop|restart
service --status-all
说明:rc N --> 意味着读取/etc/rc.d/rcN.d/
K: K##:##运行次序;数字越小,越先运行;数字越小的服务,通常为依赖到别的服务
S: S##:##运行次序;数字越小,越先运行;数字越小的服务,通常为被依赖到的服务
配置服务开机启动
chkconfig命令
#查看服务在所有级别的启动或关闭设定情形:
chkconfig [--list] [name]
#添加服务
SysV的服务脚本放置于/etc/rc.d/init.d (/etc/init.d)
#脚本头部格式
#!/bin/bash
chkconfig: LLLL nn nn #LLLL 表示初始在哪个级别下启动,-表示都不启动
description : 描述信息
chkconfig --add name
#删除服务
chkconfig --del name
#修改指定的运行级别
chkconfig [--level levels] name <on|off|reset>
说明:--level LLLL: 指定要设置的级别;省略时表示2345
服务分为独立服务和非独立服务
瞬态(Transient)服务被超级守护进程 xinetd 进程所管理,也称为非独立服务
进入的请求首先被xinetd代理
配置文件:
/etc/xinetd.conf
/etc/xinetd.d/<service>
/etc/rc.local
/etc/rc.d/rc.local
注意:正常级别下,最后启动一个服务S99local没有链接至/etc/rc.d/init.d一个服务脚本,而是指向
了/etc/rc.d/rc.local脚本
不便或不需写为服务脚本放置于/etc/rc.d/init.d/目录,且又想开机时自动运行的命令,可直接放置
于/etc/rc.d/rc.local文件中
/etc/rc.d/rc.local在指定运行级别脚本后运行
注意: 默认Ubuntu 无 /etc/rc.local 文件,可以创建此脚本文件并添加执行权限,rc.local的首行必须有
shebang机制
Systemd:从 CentOS 7 版本之后开始用 systemd 实现init进程,系统启动和服务器守护进程管理器,负责在系统启动或运行时,激活系统资源,服务器进程和其它进程
systemd 核心概念:unit,unit表示不同类型的systemd对象,通过配置文件进行标识和配置;文件中主要包含了系统服务、监听 socket、保存的系统快照以及其它与init相关的信息
Unit类型:
systemctl -t help
service unit: 文件扩展名为.service, 用于定义系统服务
Socket unit: .socket, 定义进程间通信用的socket文件,也可在系统启动时,延迟启动服务,实现按需启动
Target unit: 文件扩展名为.target,用于模拟实现运行级别
Device unit: .device, 用于定义内核识别的设备
Mount unit: .mount, 定义文件系统挂载点
Snapshot unit: .snapshot, 管理系统快照
Swap unit: .swap, 用于标识swap设备
Automount unit: .automount,文件系统的自动挂载点
Path unit: .path,用于定义文件系统中的一个文件或目录使用,常用于当文件系统变化时,延迟激活服务,如:spool 目录
unit的配置文件
/usr/lib/systemd/system #每个服务最主要的启动脚本设置,类似于之前的/etc/init.d/
/lib/systemd/system #ubutun的对应目录,兼容于CentOS7,8和Ubuntu
/run/systemd/system #系统执行过程中所产生的服务脚本,比上面目录优先运行
/etc/systemd/system #管理员建立的执行脚本,类似于/etc/rcN.d/Sxx的功能,比上面目录优先运行
systemctl COMMAND name.service
systemctl start name1.service
systemctl stop name.service
systemctl restart name.service
systemctl status name.service
systemctl mask name.service #禁止手动和自动启动
systemctl unmask name.service
systemctl is-active name.service
systemctl cat sshd #查看service文件内容
systemctl list-units --type|-t service # 查看所有已经激活的服务
systemctl list-units --type service --all|-a #查看所有服务
systemctl enable name.service
systemctl disable name.service
systemctl list-unit-files --type service #查看所有服务的开机自启状态
systemctl is-enabled name.service
systemctl --failed --type=service
#开机并立即启动或停止
systemctl enable --now postfix
systemctl disable --now postfix
#查看服务的依赖关系:
systemctl list-dependencies name.service
#杀掉进程:
systemctl kill unitname
服务状态
loaded Unit配置文件已处理
active(running) 一次或多次持续处理的运行
active(exited) 成功完成一次性的配置
active(waiting) 运行中,等待一个事件
inactive 不运行
enabled 开机启动
disabled 开机不启动
static 开机不启动,但可被另一个启用的服务激活
indirect 重定向到别处
service unit格式
https://www.jinbuguo.com/systemd/systemd.service.html
注意:对于新创建的unit文件,或者修改了的unit文件,要通知systemd重载此配置文件,而后可以选择
重启
systemctl daemon-reload
运行级别
target units:相当于CentOS 6之前的runlevel ,unit配置文件:.target