systemd服务单元文件主要放在/usr/lib/systemd/system
或/etc/systemd/system
目录下,文件一般以 .service
为后缀。找到配置文件以后,使用文本编辑器打开即可。
也可以systemctl cat
命令可以用来查看配置文件。
systemd服务单元文件
systemd
服务单元文件是服务系统自启动的一种脚本。以下是一个示例:
1 | [Unit] |
将这个服务单元文件保存在 /etc/systemd/system/ 目录下。使用以下命令启用这个服务并启动它:
1 | sudo systemctl enable my-service.service # 启用,随机启动 |
常见配置讲解
Unit 配置
- Description:描述服务的简要说明。
- Documentation:服务的文档URL。
- Requires:指定服务所依赖的其他服务。
- After:指定服务的启动顺序,表示在服务之后启动。
- Before:指定服务的启动顺序,表示在服务之前启动。
- Condition:指定服务的启动条件。
Service 配置
- ExecStart:指定启动服务时执行的命令。
- ExecStop:指定停止服务时执行的命令。
- Restart:指定服务异常退出时的重启策略。
- always:表示无论何时服务退出(无论是正常退出还是异常退出),Systemd都会自动尝试重新启动该服务。
- on-success:仅在服务正常退出时重启。
- on-failure:仅在服务异常退出时重启。
- on-abnormal:在服务异常退出时重启。
- on-abort:在服务收到中止信号时重启。
- User:指定服务的用户。
- WorkingDirectory:指定服务的工作目录,注意需要使用绝对路径。
- Environment:指定服务的环境变量。
Install 配置段
WantedBy:用于指定哪些Systemd目标服务会依赖当前服务。Systemd目标服务是一种特殊的服务单元,用于控制系统启动和关闭的过程。可选如下:
- multi-user.target:多用户目标,表示系统处于正常运行状态。
- graphical.target:图形界面目标,表示系统启动到图形界面。
- rescue.target:紧急恢复目标,用于系统无法启动时进入紧急模式。
- halt.target:关机目标,表示关闭系统。
- reboot.target:重启目标,表示重启系统。
systemctl命令使用
systemctl是Systemd前端管理工具,用于管理Systemd服务和系统状态。
- systemctl list-dependencies 命令列出一个 Unit 的所有依赖。
- sysystemctl status
命令用于查看系统状态和单个 Unit 的状态。 - systemctl list-units命令可以查看当前系统的所有 Unit。
- systemctl list-unit-files命令可以查看当前系统的所有 Unit 文件。
- systemctl restart
命令用于重启单个 Unit。 - systemctl start
命令用于启动单个 Unit。 - systemctl stop
命令用于停止单个 Unit。 - systemctl enable
命令用于开启单个 Unit 的自动启动。 - systemctl disable
命令用于禁用单个 Unit 的自动启动。