Systemctl 在系统中的管理说明

2020-03-24 0 By admin

一、CentOS启动流程

POST –> Boot Sequence –> Bootloader –> kernel + initramfs(initrd) –> rootfs–> /sbin/init
1、UEFi或BIOS初始化,运行POST开机自检
2、选择启动设备
3、引导装载程序, centos7是grub2
4、加载装载程序的配置文件:/etc/grub.d/ /etc/default/grub /boot/grub2/grub.cfg(注:一般上修改grub.cfg配置文件,是直接修改/etc/default/grub,然后使用命令#grub2-mkconfig /boot/grub2/grub.cfg来生成修改 )
5、加载initramfs驱动模块
6、加载内核选项
7、内核初始化,centos7使用systemd代替init
8、执行initrd.target所有单元,包括挂载/etc/fstab
9、从initramfs根文件系统切换到磁盘根目录
10、systemd执行默认target配置,配置文件/etc/systemd/default.target /etc/systemd/system/
11、systemd执行sysinit.target初始化系统及basic.target准备操作系统
12、systemd启动multi-user.target下的本机与服务器服务
13、systemd执行multi-user.target下的/etc/rc.d/rc.local
14、systemd执行multi-user.target下的getty.target及登入服务
15、systemd执行graphical需要的服务

二、单元文件名设定

使用systemctl控制单元时,通常需要使用单元文件的全名,包括扩展名,但是有些单元可以在systemctl中使用简写方式。如果无扩展名,systemctl默认把扩展名当做.service。
例如netcfg和netcfg.service是等同的。
挂载点会自动转化为相应的.mount单元,例如/home等价于home.mount。
设备会自动转化为相应的.device单元,所以/dev/sd2等价于dev-sda2.device。

三、unit文件格式

1、以#开头的行后面的内容会被认为是注释。
2、布尔值,1、yes、on、ture都是开启,0、no、off、false都是关闭
3、时间单位默认是秒

3.1、Unit文件组成

1、[Unit]:定义与Unit类型无关的通用选项,用于提供unit的扫描信息,unit行为及依赖关系等
2、[Service]:与特定类型相关的专用选项;此处为Service类型
3、[Install]:定义由“systemctl enable及systemctl disable”命令在实现服务启用或禁用时用到的一些选项

3.2、unit段常用选项

1、Description:描述信息
2、After:定义unit的启动次序,表示当前unit应该晚育那些unit启动,其功能与before相反
3、Requires:依赖到的其他units,强依赖,被一来的units无法激活时,当前unit即无法激活
4、Wants:依赖到的其他units,弱依赖
5、Conflicts:定义units间的冲突关系

3.3、Service段常用选项

1、Type:定义硬性ExecStart及相关参数的功能的unit进程启动类型

  1. simple:默认值;这个daemon主要有ExecStart接的指令串来启动,启动后常驻于内存中
  2. forking:由ExecStart启动的程序透过spawns延伸出其他子程序来作为此daemon的主要服务原生父程序在启动结束后就会终止
  3. onshot:用于执行一项任务,随后立即退出的服务,不会常驻于内存中
  4. notify:与simple相同,但约定服务会在就绪后想systemd发送一个信号,需要配合NotifyAccess来让Systemd接收消息
  5. idle:与simple类似,要执行这个daemon必须要所有的工作都顺利执行完毕后才会执行。这类的daemon通常是开机到最后才只能即可的服务

2、EnvironmentFile:环境配置文件
3、ExeStart:指明启动unit要运行命令或脚本的绝对路径
4、ExeStartPre:ExecStart前运行
5、ExeStartPost:ExecStart后运行
6、ExecStop:指明停止unit要运行的命令或脚本
7、Restart:当设定Restart=1时,则当次daemon服务意外终止后,会在此自动启动此服务

3.4、Install段常用选项

1、Alias:别名(可使用systemctl command Alial.service)
2、RequiredBy:被那些units所依赖,强依赖
3、WantedBy:被那些units所依赖,弱依赖
4、Also:安装本服务的时候还要安装别的相关服务
注意:对于新创建的unit文件,或者修改了的unit文件,要通知systemd重载次配置文件,而后可以选择重启:systemctl daemon-reload

3.5、案例

vim /etc/systemd/system/bak.service

[Unit]
Description=backup my etc
Requires=atd.service

[Service]
Type=simple
ExecStart=/bin/bash -c "echo /testdir/bak.sh|at now"

[Install]
WantedBy=multi-user.target
systemctl daemon-reload
systemctl start bak

四、设置内核参数

在系统启动时,进入内核参数修改,修改只影响当次启动,在启动时在linux16行后添加systemd.unit=desired.target
systemd.unit=emergency.target 进入救援模式
system.unit=recure.target 进入紧急救援模式(功能比emergency多)
修改完成后使用ctrl+x启动进入相应的模式