*systemd特性
系统引导时实现服务并行启动
按需启动守护进程
自动化的服务依赖关系管理
核心概念:unit
unit表示不同类型的systemd对象,通过配置文件进行标识和配置。文件中主要包含了系统服务、监听socket、保存的系统快照及其他init相关的信息。
/usr/lib/systemd/system:每个服务最主要的启动脚本设置,类似于之前的/etc/init.d/
/run/systemd/system:系统执行过程中所产生的服务脚本,比上面目录优先运行
/etc/systemd/system:管理员建立的执行脚本,类似于/etc/rc#.d/S##的功能,比上面目录优先运行
*systemd管理服务
查看服务当前是否激活的状态
systemctl is-active name.service
设置为开机启动
systemctl enable name.service
实际上就是创建了一个软连接放到/etc/systemd/system/multi-user.target.wants/
取消开机启动
systemctl disable name.service
实际上就是删除了软连接
条件式重启:已启动则重启,否则不操作
systemctl try-restart name.service
重载或重启:先加载,再启动
systemctl reload-or-restart name.service
重载或条件式重启:先加载,再启动
systemctl reload-or-try-restart name.service
禁止自动和手动启动
systemctl mask name.service
执行后会生成软连接指向/dev/null
取消禁止
systemctl unmask name.service
取消禁止
systemctl unmask name.service
*service脚本
service脚本由三部分组成
**[Unit] **
Unit段的常用选项:
Description:描述信息
After:定义unit的启动次序,表示当前unit应该晚于哪些unit启动,其功能与Before相反
Requires:依赖到的其它units,强依赖,被依赖的units无法激活时,当前unit也无法激活
Wants:依赖到的其它units,弱依赖
Conflicts:定义units间的冲突关系
[Service]
Service段的常用选项:
Type:定义影响ExecStart及相关参数的功能的unit进程启动类型
simple:默认值,这个daemon主要由ExecStart接的指令串来启动,启动后常驻于内存中
forking:由ExecStart启动的程序透过spawns延伸出其他子程序来作为此daemon的主要服务。原生父程序在启动结束后就会终止
oneshot:与simple类似,不过这个程序在工作完毕后就结束了,不会常驻在内存中
dbus:与simple类似,但这个daemon必须要在取得一个D-Bus的名称后,才会继续运作.因此通常也要同时设定BusNname= 才行
notify:在启动完成后会发送一个通知消息。还需要配合NotifyAccess 来让Systemd 接收消息
idle:与simple类似,要执行这个daemon必须要所有的工作都顺利执行完毕后才会执行。这类的daemon通常是开机到最后才执行即可的服务
EnvironmentFile:环境配置文件
ExecStart:指明启动unit要运行命令或脚本的绝对路径
ExecStartPre: ExecStart前运行
ExecStartPost: ExecStart后运行
ExecStop:指明停止unit要运行的命令或脚本
Restart:当设定Restart=1 时,则当次daemon服务意外终止后,会再次自动启动此服务
[Install]
Install段的常用选项:
Alias:别名,可使用systemctl command Alias.service
RequiredBy:被哪些units所依赖,强依赖
WantedBy:被哪些units所依赖,弱依赖
Also:安装本服务的时候还要安装别的相关服务
注意:对于新创建的unit文件,或者修改了的unit文件,要通知systemd重载此配置文件,而后可以选择重启
systemctl daemon-reload
*target文件
target就是服务的集合,相当于以前的runlevel,除此之外在centos7中还有其他的target
可以使用命令来切换target
systemctl isolate name.target
*grub2配置文件
grub2的配置文件是/boot/grub2/grub.cfg
通常不修改这个文件,而是通过命令生成
grub2-mkconfig -o /boot/grub2/grub.cfg
此命令会参考/etc/default/grub的设置来生成grub.cfg文件
*启动时临时修改加载的target
在grub菜单编辑里找到linux16,在最后加上systemd.unti=Multi-user.target,按CTRL+X启动
*centos7破解口令之一
1.在grub菜单编辑里找到linux16,加上rd.break,按CTRL+X
2.切根目录,chroot /sysroot
3.passwd root
如果启用了SELinux还需要执行
> /.autorelabel
4.exit
*centos7破解口令之二
1.在grub菜单编辑里找到linux16,加上
rw init=/sysroot/bin/sh
按CTRL+X
2.切根目录,chroot /sysroot
3.passwd root
如果启用了SELinux还需要执行
> /.autorelabel
4.exit
*grub2口令
使用命令grub2-setpassword,输入口令后会生成一个user.cfg文件,里面存着口令