一、Systemd 的简介
Systemd是一个用于管理Linux系统启动进程和服务的系统和服务管理器,取代了传统的init系统。它提供了并行启动、依赖关系管理、动态加载服务文件等功能,成为现代Linux发行版中主流的初始化系统。
二、Systemd 的参数说明
[Unit]
Description=My Custom Service # 服务描述,简短描述服务的作用
After=network.target # 指定服务应该在哪些服务之后启动
Requires=docker.service # 指定依赖服务,如果依赖服务没有成功启动,当前服务将无法启动
Wants=mysql.service # 指定依赖服务,如果依赖服务没有成功启动,不会导致当前服务无法启动。
Conflicts=apache2.service # 指定冲突服务
Before=ssh.service # 指定服务应该在哪些服务之前启动
Requisite=mysql.service # 要求指定服务成功启动后再启动当前服务
PartOf=multi-user.target # 指定当前服务是其他服务的一部分,其他服务异常也会影响它
BindsTo=[email protected] # 指定一个服务,当被绑定的服务通过系统调用创建时,当前服务也会被创建
Documentation=https://example.com # 添加文档链接
[Service]
Type=simple # 指定服务的类型,如 simple, forking, oneshot, dbus, notify, 等。
ExecStart=/usr/bin/node myapp.js # 指定启动服务时要执行的命令或脚本
ExecStop=/usr/bin/node myapp.js # 指定停止服务时要执行的命令或脚本
Restart=always # 指定服务故障时的重启策略,如 always, on-failure, no, 等
User=myuser # 指定特定用户运行服务
Group=mygroup # 指定特定用户组运行服务
Environment=VAR1=value1 # 设置服务运行时的环境变量
WorkingDirectory=directory # 指定服务的工作目录
OOMScoreAdjust=500 # Out-Of-Memory 分数调整
LimitNOFILE=10000 # 最大打开文件数限制
LimitNPROC=200 # 最大进程数限制
StandardOutput=syslog # 标准输出重定向到syslog
StandardError=syslog # 标准错误输出重定向到syslog
[Install]
WantedBy=multi-user.target # 指定目标,当这些目标被启动时,服务也会被启动
Alias=my-custom-service # 为服务定义别名
Also=another.service # 同时处理另一个单元
DefaultInstance=default # 设置默认实例名称
三、Systemd 的创建步骤
1、编写服务文件
服务文件是描述服务的配置文件,通常存放在/etc/systemd/system/
目录下,后缀为.service
。可以使用任何文本编辑器来创建服务单元文件。
2、 设置权限
设置权限:sudo chmod 755 your-service.service
3、 启用和启动服务
开机自启:sudo systemctl enable your-service.service
启动服务:sudo systemctl start your-service.service
服务状态:sudo systemctl status your-service.service
5、控制服务
启动服务:sudo systemctl start your-service.service
停止服务:sudo systemctl stop your-service.service
重启服务:sudo systemctl restart your-service.service
禁用服务:sudo systemctl disable your-service.service
6、 查看日志
日志查询:journalctl -u your-service.service
四、Systemd 的实战示例