1. 基本知识
Systemd 是一个系统和服务管理器,广泛用于现代 Linux 发行版
它主要负责启动和管理系统服务、处理系统初始化、服务依赖关系、系统日志等
所涉及的基本知识如下:
-
单元(Unit):
基本单位是“单元”(unit)
单元可以是服务、套接字、设备、挂载点、自动挂载、交换区、目标等
常见的单元类型包括 .service(服务单元)、.socket(套接字单元)、.target(目标单元) -
目标(Target):
将多个单元组合在一起以实现某种系统状态的单元
例如,multi-user.target 用于多用户模式,graphical.target 用于图形用户界面模式 -
服务(Service):
.service
是 Systemd 中最常见的单元类型,用于定义和管理系统服务 -
依赖关系:
处理服务之间的依赖关系,确保服务按正确的顺序启动和停止
可以使用 Requires=, Wants=, Before=, After= 等指令在单元文件中设置依赖关系
2. 常见命令
查看状态:systemctl status <unit_name>
示例:查看 nginx 服务状态:systemctl status nginx
截图如下:
-
启动服务:
systemctl start <unit_name>
-
停止服务:
systemctl stop <unit_name>
-
重启服务:
systemctl restart <unit_name>
-
启用服务(开机启动):
systemctl enable <unit_name>
-
禁用服务(取消开机启动):
systemctl disable <unit_name>
-
查看所有单元状态:
systemctl list-units
-
查看开机启动的服务:
systemctl list-unit-files --type=service
3. Demo
3.1 测试
要创建一个 Systemd 服务单元文件,通常需要放置在 /etc/systemd/system/ 目录下,文件名以 .service
结尾
以下是一个简单的服务单元文件示例
[Unit]
Description=My Custom Service
After=network.target
[Service]
ExecStart=/usr/bin/my-custom-service
Restart=on-failure
[Install]
WantedBy=multi-user.target
- [Unit] 部分描述了单元的元数据和依赖关系
- [Service] 部分定义了服务的启动命令、重启策略等
- [Install] 部分定义了服务的安装行为,WantedBy 选项指定了服务在启动时要附加到哪个目标
为了配置开机启动
-
创建服务单元文件:将上述示例文件保存为 /etc/systemd/system/my-custom-service.service
-
重新加载 Systemd 配置:
systemctl daemon-reload
-
启动服务并设置开机启动:
systemctl start my-custom-service
systemctl enable my-custom-service
- 检查服务状态:
systemctl status my-custom-service
3.2 实战
由于此处的服务安装,没有使用上Systemd服务,无法使用开机自启的服务
如果机器异常重启,需要相应进行配置
-
创建以及编辑服务单元文件:(不熟悉nano的命令,可以使用vim)
在 /etc/systemd/system/ 目录下创建一个名为 samba.service 的文件
sudo nano /etc/systemd/system/samba.service
crtl+x保存并输入y,之后enter退出即可(不熟悉此命令推荐使用vim进行编辑) -
重新加载 Systemd 配置:
sudo systemctl daemon-reload
-
启动服务并设置开机启动:
sudo systemctl start samba
sudo systemctl enable samba
- 检查服务状态:
sudo systemctl status samba
最终配置如下: